Android Handy mit Bluetooth: => Firmware übertragen

Ich würde gerne eine Arduino UNO Firmware (Sketch) per Bluetooth von meinem Android Handy auf den Arduino UNO (mit Bluetooth-Shield) übertragen.

Was meint Ihr, würde das funktionieren?

DreiMalNull:
Ich würde gerne eine Arduino UNO Firmware (Sketch) per Bluetooth von meinem Android Handy auf den Arduino UNO (mit Bluetooth-Shield) übertragen.

Was meint Ihr, würde das funktionieren?

Wenn Du zuerst einen Bluetooth-fähigen Bootloader machst und auf dem Arduino installierst, der einen Sketch per Bluetooth empfangen kann, warum nicht? Stellt sich nur die Frage, wie Du das Pairing der Bluetooth-Geräte hinbekommen möchtest. Und ob Du komplett neue Bootloader programmieren kannst. Und wie fit Du in Bluetooth-Programmierung bist.

Mal angenommen, Du löst das Problem, z.B. indem der neue Bluetooth-Bootloader unter Mißachtung jeglicher Sicherheit ein Pairing mit dem erstbesten Bluetooth-Gerät automatisch macht: Wenn dann am Ende Dein neuer Bluetooth-Bootloader allerdings schon 15 KB groß ist, verringert sich die maximale Programmgröße für den Sketch um ebendiese 15 KB abzgl. der 0,5 KB, die ein normaler Arduino-Bootloader groß ist.

Mit dem normalen Arduino-Bootloader funktioniert das natürlich nicht, da der Arduino-Bootloader nur über Hardware-Serial, nicht aber über Bluetooth Daten austauschen kann.

Ich sehe das Problem nicht auf der Arduinoseite. Wenn Du ein Bluetooth-Modul hast, das sich Arduino gegenüber als serielle Schnittstelle verhält ist das auf der Arduino-Seite kein Problem den Upload nicht über Kabel sondern über eine Radioverbindung zu übertragen. Das Problem sehe ich auf der Android Seite da dieses das Protokoll des AVR-ISP-Programmierers (STK500) emulieren muß.
Gibt es dafür ein Programm oder APP? Woher bekommst Du das Hex-File des Sketches? Gibt es den AVR-GCC für Android?

Grüße Uwe

Ich kenne mich zwar nicht genug mit Android aus,
kann aber sagen, dass es eine ARM Version von avrdude gibt,
da ich gestern den Spaß auf dem RaspberryPi in Betrieb genommen habe...

Müsste also irgendwie machbar sein.
Im schlimmsten Fall müsstest du mal eins dieser Linux-Emulations-Dinger probieren...
Gruß,
Tobias

Fragen über Fragen :slight_smile:

Danke, tja mal sehen, werd mir das mal anschauen und mir durch den Kopf gehen lassen.

Kann ja nicht so schwer sein :wink:

Ich sehe das Problem nicht auf der Arduinoseite. Wenn Du ein Bluetooth-Modul hast, das sich Arduino gegenüber als serielle Schnittstelle verhält ist das auf der Arduino-Seite kein Problem den Upload nicht über Kabel sondern über eine Radioverbindung zu übertragen. Das Problem sehe ich auf der Android Seite da dieses das Protokoll des AVR-ISP-Programmierers (STK500) emulieren muß.

Hmmh, da er von einem Bluetooth-Shield spricht, dürfte problematisch sein, dass der Reset-Impuls zum Starten des Bootloaders auch den Bluetooth-Chip resetted und somit die Verbindung abbricht. Bei einem externen Bluetooth-Modul hast Du immer noch das Problem, dass der Arduino irgendwie zur richtigen Zeit einen Reset erhalten muss.
Man müsste also auch in der "Firmware" eine Möglichkeit/einen Befehl einbauen, der zumindest einen Soft-Reset auslöst.

Vielleicht zu einfach, aber kann man nicht einfach den Hardware resetknopf mit gnd verbinden, wenn man mit dem Uploaden des Sketches fertig ist??

Das wäre dann genau eine Lötstelle auf dem Arduino selbst die an DigitalPin XY angesteuert wird und via 3-Fuß Transistor dann auf GND gebracht wird :slight_smile:

Gruß Flo

Vergiß das mit einem Hardwareselbstreset. Der Resetimpuls muß mehrer Taktzyklen anliegen und ein von Arduino angesteuerter Transistor resettiert sich sofort nach dem Resetimpuls.

@pylon
Du hast recht, das mit dem Reset hatte ich nicht bedacht.
Müßte das aber mit dem Arduino Uno mit dem ATmega8U2 bzw 16U2 anders funktionieren als es beim 2009 mit dem FT232 funktionierte?

Grüße Uwe

Du hast recht, das mit dem Reset hatte ich nicht bedacht.
Müßte das aber mit dem Arduino Uno mit dem ATmega8U2 bzw 16U2 anders funktionieren als es beim 2009 mit dem FT232 funktionierte?

Ich glaube, das funktioniert beim UNO ziemlich ähnlich wie beim 2009. Allerdings ist mir nicht ganz klar, was Du damit ansprechen wolltest. Die Beschaltung der Reset-Leitung ist sehr ähnlich, auch wenn sie sich im Detail unterscheidet.
Der Hardware-Reset lässt sich schon bewerkstelligen, allerdings nicht einfach mit einem Transistor. Aber ein 555 Timer sollte mehr als genügen. Wie gesagt, das setzt voraus, dass bei einem Reset des Arduino das Bluetooth-Modul nicht resetted wird und dass das relativ enge Timing der aktuellen Bootloader eingehalten werden kann.