Programmieren aus Arduino IDE mit XBEE möglich?

Hallo,

ich benutze einen Arduino Mega Board mit XBEE Shield. Auf diesen möchte ich gerne mit meinem XBEE Adapter Kit (XBEE-Module beide Series2) aus dem Arduino IDE die Programme flashen.

Eine Testkommunikation der beiden Xbees funktioniert (Die Zeichen werden übertragen).

Jetzt zu meiner eigentlichen Frage(n):
Geht das programmieren aus dem Adruino IDE über XBEE? Hat das schon mal jemand gemacht?

Ich orientiere mich an diesem Tutorial/Anleitung (www.ladyada.net/make/xbee/arduino.html). Der Transmitter ist das Adapter Kit. Da muß ich noch die "Brücke" "Now solder in a tiny jumper between the RTS pin and D3" setzen.
Aber da ich ein Series 2 Xbee Modul nutze kann das Tutorial leider nicht 1 zu 1 umsetzen. Klar das ist für Series 1 geschrieben. Bestimme einstellungen finde ich gar nicht. z.B.

Hat das jemand schon mit einem Xbee Series 2 Modul gemacht und kann mir jemand dazu Hinweise zukommen lassen?

Mein Empfänger ist das Arduino Mega Board mit Shield. Leider weiss ich nicht, ob ich hier etwas (Hardware) mäßig anpassen muss um Programme empfangen zu können.

Eine Grundsätzliche Antwort, das es gehen müsste wäre schon super.. Dann "arbeite" ich mich da schon durch...
Vielleicht sind ja auch die Settings, die ich nicht 1 zu 1 auf dem xbee Series 2 Modul finde nicht relevant (sieh Anleitung zum Link).

Aber vielleicht hat das jemand schon von Euch mal umgesetzt?

Vielen Dank für Eure Antworen

Gruß Schilly

Vielleicht hilft dir das weiter:

Wireless upload of Arduino sketches using Xbee modules

http://letsmakerobots.com/node/23869

Hallo Apogee,

vielen Dank für Deine schnelle Antwort.
Aber leider nein. Ich habe wohl doch die falschen Xbee bzw. Zigbee Module gekauft. Ich habe Xbee Series 2 und in Deinem Link arbeitet er mit einem XBee PRO. Dann stimmts auch mit dem Tutorial...

Die Series 2 hat dieses I/O Line Padding Section natürlich gar nicht.

Die folgende Aussage habe ich auch auf einer Arduino Seite gefunden:

You can't use the DigiMesh or ZB series radios (aka Series 2 or 2.5). Those modules do not allow for automatic IO Line Passing that is required for toggling the reset pin when programming.

Darum steht natürlich auch fett der Hinweis, das die Anleitungen halt nur für XBEE oder PRO Versionen gelten.

Aber ich möchte mich noch nicht geschlagen geben. Ich werd mal noch ein bissel suchen.

Gruß Schilly

Hallo,

das habe ich gerade gefunden.

Line passing and series 2 (ZNET 2.5 COORDINATOR AT version 1047) :

I/O Settings -> I/O Sampling -> IC - Digital IO Change Detection

Bitfield that configures which digital IO pins should be monitored for change detection. If a change is detected on an enabled digital IO pin, a digital IO sample is immediately transmitted to the address specified by DH DL.

RANGE:0-0XFFFF

You also need to enable digital pin for input.

Werde es mal probieren. Und am Transmitter XBEE diese Brücke setzen:

Was mir noch Kopfzerbrechen macht ist, das in dieser Anleitung Xbee Adapter - wireless Arduino programming der Empfänger Arduino über ein Adapterkit angeschlossen ist und die Leitungen und Komponenntennatürlich recht einfach anzubringen sind. Bei mir liegt das Xbee aber auf dem Shild.

Da werden diese Leitungen ja nicht richtig "verdrahtet" sein?
Kann jemand dazu noch mal eine Aussage machen?

So sieht das in der anleitung aus:

Gruß Schilly

Hi,

  1. Es wird definitiv möglich, da die xbee Strecke ja nur eine Art tunnel für die serielle schnittstelle ist.
    Der Arduino muss:
  2. Zum richtigen Zeitpunkt resetet werden ( dafür der gelötete Adapter )
  3. Mit der richtigen Baudrate geflasht werden. Diese liegt beim Mega bei 57600.
  4. Wenn dir die arduino IDE deine xbeestreck nicht als "Device" anbietet dann kompilier einfach nur in der IDE und Lade dann per avrdude die hex Datei hoch.

So flashe ich meinen Mega per Bluetooth. Wenn du die Linux-avrdude parapter brauchst sag Bescheid.
Gruß jkw

Hallo jkw,

danke für Deine Antwort.

zu 1: Der Sender XBEE mit den gelöteten Adapter habe ich angefertigt (der am PC)
zu 2:
Das kann ich noch mal probieren. Da habe ich nicht 57600 Baud eingestellt. Ich werde das gleich mal probieren. Meine versuche waren leider bis jetzt ohne Erfolg.
zu3: Doch doch... den Comport sehe ich dafür... aber da tut sich noch nichts

Ich bin mir leider "unsicher" ob ich allee notwendigen Bedingugen erfüllt habe. Beim Sender XBEE habe ich für den Reset ja die Verbindung geschaffen aus dem Kit-Boards. Muss ich das nicht aber auch am Empfänger XBEE machen? Und da ist wiegesagt nur ein Arduino Mega mit Shield.

Na, ich werd mir jetzt noch mal die Baudrate anschauen.
Die Baudrate für die XBEE Kommunikation ist noch 9600 (und die der Comports auch).

Ich werde mal jetzt alle auf 57600 heben.

Gruß Schilly

Hi nochmal,
57600 ist Vorraussetzung. Bei mir sehe ich in der IDE zwar auch den bt COM Port aber kann den nicht nutzen. Geht nur per avrdude über komandozeile.
Wird den aktuell beim verbindungsaufbau der Mega resetet ? Das ist nötig.
Gruß

Ich habe es schon einmal mit dieser Anleitung umgesetzt. Nachteil, gegenüber der hier besprochenen Variante ist, dass das Ziel-Arduino auf den "Reset-Befehl" warten muss. Ein Programm dort sollte also immer die entsprechende Routine beinhalten.

Ich benutze diese Variante des Resets sogar in einem anderen Projekt, um einen Neustart nach langer Laufzeit auszulösen (Überlauf Variablen). Dies nur am Rande...

Hier nun endlich der Link :wink:

http://www.faludi.com/itp_coursework/meshnetworking/XBee/XBee_program_Arduino_wireless.html

Hoffe es hilft!

Gruß
Poldi

Hallo,

werde beides ausprobieren und Rückmeldung erfolgt.
Hatte den Link auch schon mal gefunden. Aber wenn jemand bestätigt, das es funktioniert,sieht das schon ganz ander aus.

Vielen Dank... response kommt...

Gruß

Schilly

Hallo,

kurzer Status:

Die Kommunikation der Xbees läuft jetzt mit 57600 Baud.
Hat aber nichts geholfen. Programmieren noch nicht über XBEE möglich.

Ich habe alles um den Arduino Mega (reset pin) mit einem Transistor und dem vorher programmieren Arduino auf ein *Reset Signal vorzubereiten (siehe Lösung Poldi).

Meine Frage: Das ist ein spezieller Reset, damit der Arduino für das Programieren bereit ist? Mein Megaboard hat natürlich auch einen Resetschalter. Den zu benutzen (zum Testen) und danach mit dem IDE das Programm über XBEE zu senden wird doch wohl nicht klappen? Oder würde das auch funktionieren?

Was ich bei der Lösung von Poldi irre finde ist, das das Timing um nach dem Reset das Programm uploaden zu können überhaupt klappen kann. Ist da so viel Toleranz enthalten?

Ich denke ohne den Reset wird auch die AVRDUDE Variante so nicht klappen. Werde das aber probieren.
Habe meine Roboter ATMEGA88 aus Winavr und Bascom programmiert und nur ein paar mal mit AVRDUDE. Darum muß ich mir das hier noch mal anschauen (unter Windows)

Vielen Dank schon mal für die gemachten Hilfen.

Gruß Schilly

Hi Schilly,

avrdude -V -F -C /usr/share/arduino/hardware/tools/avrdude.conf -p atmega1280 -P /dev/rfcomm0 -c stk500v1 -b 57600 -U flash:w:/tmp/$BUILD/jkw_the_board.cpp.hex

du musst nur den Pfad zur Hex datei und den zur config anpassen.

Das mit dem Reset Taster funktioniert! ich schaffs so etwa jedes 5. bis 10. mal :wink: also da brauchste etwas Training / Geduld.... bei mir war so etwa 0.5 sec zwischen dem "Binary sketch size xxxx" und dem Drücken optimal ... wie gesagt, viel erfolg :wink:

Hallo jkw,

super vielen Dank für den guten support :-).

Mein Roby http://www.schilly.net/roby-20/wollte ich zukünfig so programmieren. Also da fährt er mir gegen die Wand, wenn ich da 10 Versuche brauche. :slight_smile: Ist alles auf Basis von Streifenraster. Darum möchte ich das mit Arduino auf eine vernünftige Plattform heben. Und den Luxus einer programmierung ohne Kabel habe ich mir gegönnt... Bin guter Dinge, das das klappen wird.

Gruß Schilly

Hey Schilly,
dein Shield hat nicht zufällig eine LED die leuchtet sobald die Verbindung hergestellt ist oder?
Gruß JKW

Hi jkw,

doch doch, die leuchtet auch zyklisch... Genauso wie das Kit.. Da ist aber ne rote Lampe an, wenn da eine Kommunikation besteht habe ich da ein "dauerleuchten". Das steht auch für Verbindung ist funktional.... Die Daten müssen natürlich noch "rüberhopsen"... Das funktioniert auch...

Äh... warum?

Gruß Schilly

Weil man notfalls damit ein Reset Impuls erzeugen kann, aber dafür brauchste ne ganze Reihe Bauteile ( 2 Kondensatoren, ein IC, ein Widerstand,.. ).
Hat mich nur interessiert als Notlösung. Dein Xbee Shild sollte aber auch irgendein pin haben der beim Aufbau der Verbindung den Reset auslöst, immerhin gibts da ja recht viele Anleitungen zu. Wie weit bist du denn damit bisher ?
Gruß JKW

ich nochmal,
hab mir jetzt auch die Anleitung auf der Seite von Lady Ada angesehen. Was spricht dagegen diese umzusetzen? auch wenn du das nicht 1:1 umsetzen kannst hast du doch bestimmt die Möglichkeit einen Zusätzlichen Pin zu konfigurieren oder ? Diesen auf Empfängerseite zu verbinden und dann damit den Reset auszulösen oder ?

Hallo jkw,

ich habe mich jetzt die letzen Tage mit dem avrdude "rumgeschlagen". Leider nach etlichen Stunden ohne Erfolg. Ich wollte auch ohne XBEE Lösung (also einfach verbunden über USB) einfach mir dem avrdude programmieren... Kein Erfolg... Viel im Internet gelesen und viele haben wohl auch damit ein Problem: Avrdude über Winavr installiert... Befehl/Fehlermeldung:

avrdude -Uflash:w:Blink.hex:i -cstk500v1 -P \.\com3 -pm2560 -b 57600 -D

avrdude: stk500_getsync(): not in sync: resp=0x00

Ich habe auch so oft mit dem Resetknopf gespielt (timing) das der schon ausgeleiert ist :wink:

Ich werde jetzt eine HW Lösung umsetzen. Ich habe hier was für die Series2 bzw. den Xbee Shield gefunden... magst Du/Ihr mal schauen? Mit ist noch nicht klar, wie er das an dem XBEE angebracht hat.


Ich werde mir auch die Lady Ada Lösug mal anschauen... Ich hab schon "Ränder" unter den Augen :wink:

Gruß Schilly

Hi, Schilly

also erstmal zum Reset taster: Schade drum :wink:
Wenn du per USB flashst dann brauchst du den Resetknopf nicht drücken. ( sorry hätte ich früher erwähnen können, gebe ich zu).

Leider kann ich das nicht bei mir testen da ich kein Windows habe ..

generell sollte das aber zu 100% klappen. ( tuts bei mir jedenfalls )

Zu der Anleitung im Internet:
Ist zwar ganz interessant aber wenn ich das richtig sehe verbindet er "nur" das Shield mit dem Mega. Also nicht zum Flashen.
Er schreibt aber ( das finde ich wiederum ganz interessant:

The CTS pin is hardwired to the reset-pin of the Arduino. You'd think that would be prominently displayed, but it isn't.

Also würde ich doch mal tippen: Wenn du avr-dude hinbekommst wirds eventuell auch "sofort" mit dem Xbee klappen.
Letztlich sinds ja "nur" 2 Punkte, reseten und dann mit 57600 baut senden. Wenn das Shield für dich den Reset schon macht, dann brauchste bloß noch die Daten hin zu faxxen :wink:

Kann dir leider nicht helfen mit dem Windows Problem.
Normales hochladen mittels arduino software klappt aber oder ?

ha, mir fällt doch was auf:

wo ist deine -C option? Braucht man die unter windows nicht ?

avrdude -V -F -C /usr/share/arduino/hardware/tools/avrdude.conf
-p atmega1280 -P /dev/rfcomm0 -c stk500v1 -b 57600 -U flash:w:/tmp/build6959165644054075026.tmp/jkw_the_board.cpp.hex;

ist mein Command. -V könntest du ruhig mal anmachen, dann siehste ein paar mehr Ausgaben.

Du hast auch einen neuen 2560 Atmega ja ?

Hallo jkw,

ja, ich habe einen arduino 2560.
Ich dachte, da ich alles fast alle Parameter mitgebe, brauch ich die nicht. Werde das noch mal prüfen.

Danke für den Tipp.

Gruß Schilly