Hallo habe 2 arduino leonardo mit jeweils 1 xbee s1 modul mit Hilfe des SD Wireless shield im Einsatz.
Habe das Sender & Empfänger prinzip und betreibe diese mit jeweils einer 9V Akkubatterie.
Da ich etwas Strom spraren will (Batterielebensdauer länger), wollte ich den Sender(XBEE 1) und den Empfänger in sleep modus setzen, wenn diese nichts senden oder empfangen und wenn diese was senden /empfangen müssen, werden diese geweckt.
Habe gelesen dass ich dazu SM =1 (set pin hibernation) und D7=0(for data flow) setzen muss und zzgl. noch anhand eines Pullupwiderstandes :
Meine frage: muss ich sowohl beim Sender als auch beim Empfänger die gleiche einstellung machen, oder braucht der Empfänger(XBEE2) andere Einstellungen?
Zweite frage ist: Anstatt pullup zu verwenden, würde ich den integrierten Pullup (INPUT_PULLUP) nehmen, doch wie ist es mit der Spannung?-> XBEE braucht 3,3V doch der Digitalpin 9 vom Arduino gibt 5V raus. Brauche ich nen spannungseiler dazu oder sollte ich es doch mit dem widerstand lieber machen?
HI Uwe danke dir für die schnelle antwort bzgl auch frage 2.
Zu frage 1 dachte ich mir folgendes:
Am Sender habe ich bewegungssensoren. Idee-> Wenn Bewegung von den Bewegungssensoren detektiert wird, wecke ich dazugehörigen xbee auf, um diese Daten an dem Empfänger zu senden(es sind nur 1Byte große kontrollvariablen).
Der Empfänger: wird aufgeweckt, wenn daten an dem Serial anliegen, wenn keine anliegen, bleibt er im Sleep-modus.
Ich hoffe, meine Absicht ist klarer.
Nun war ich mir nicht sicher, ob ich die gleichen Einstellungen (DTR Pin, SM=1 und D7=0 auch beim Empfänger so machen muss)?
Woher sollen die Daten im Buffer herkommen wenn der Empfänger nichts empfängt weil er schläft?????
Oder verbindest Du die beiden Arduino mit einem Kabel über die Serielle Schnittstelle um die XBees aufzuwecken bevor Du sendest??
milito:
Hey danke für die tollen tipps.
Habt recht, den Empfänger schlafen legen geht nicht bzw wäre nicht sinng, sonst würde er die Daten nicht abfangen
Danke sehr
Sagt mal gibt es die Möglickeit, das XBEE direkt an dem Arduino über die Pins anszuschliessen? - Ohne SD Wireless Shield?
Da müssten doch nur die Pins vom xbee reichen: GND, VCC(3,3), DIN,DOUT,DTR
XBEE Arduino
DTR Digital pin 9 - eventuell mit spannungsteiler von 5V auf 3,3?
GND GND
VCC 3,3V
DIN RX
DOUT TX
wäre das ok`?
3 Problemchen:
1)
Din - TX
Dout - RX
2) auch Din braucht einen Spannungsteiler um die 5V des Arduino auf 3,3V zu bringen.
3) Der Pinabstand des XBee ist 2mm nicht 2,54 mm wie der Rest der Elektronikwelt. Du brauchst dazu ein Adapterboard.
Hi danke nochmal habe nene spannungsteiler für den DTR pin gebastelt, jetzt nur die Frage, den PullupWiderstand brauche ich doch trotzdem, um einen definierten Pegel bei Störungen zu haben oder täusche ich mich?
Hi danke sehr was mir noch recht unklar ist, warum wird beim wake das als Output definiert und auf low und beim sleep wird der pin auf Input defniert?
Bin da durcheinander, warum wird das so gemacht?
Hier der Code dazu:
void xbeesleep() {
Serial.println("sleep");
pinMode (XBEE_sleepPin,INPUT); // put XBee to sleep
digitalWrite(XBEE_sleepPin,LOW); // Setting this pin to LOW turns off the pull up resistor, thus saving precious current
}
void xbeewake() {
Serial.println("wake");
pinMode(XBEE_sleepPin,OUTPUT); // Set the "wake-up pin" to output
digitalWrite(XBEE_sleepPin,LOW); // wake-up XBee
delay(1000); //make sure that XBee is ready