Arduino Fio con radio XBee.
He leído el manual de XBee (pág. 24-25), tratando de averiguar cómo Para ponerlo a dormir, pero lo que intenté no funcionó. Luego encontré un boceto usando XBee durmiendo, y he condensado el código en esto:
#include <avr/sleep.h>
#define XBEE_sleepPin 6
void setup() {
Serial.begin(57600);
}
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
}
int i = 0;
void loop() {
if (i==0)
xbeewake();
else if (i==5)
xbeesleep();
Serial.println(i);
i = (i+1) % 10;
delay(2000);
}
He conectado un cable del puerto digital 6 al puerto DTR en el Arduino, que creo que está conectado directamente al pin DTR / SLEEP_RQ en el XBee. De acuerdo con el manual, al dormir, el XBee debe ignorar todas las entradas a través de la conexión en serie. Pero todavía se transmite en los períodos en que se supone que debe dormir. Aquí está la salida del monitor de la consola:
wake
0
1
2
3
4
sleep
5
6
7
8
9
wake
0
¿Alguna idea de lo que está mal con mi configuración? ¿O simplemente consejos sobre cómo hacer que el XBee duerma?