martedì 6 ottobre 2015

Ibernazione Xbee


In questo esempio viene mostrato come impostare la modalita' di ibernazione di un modulo Xbee utilizzando un pin comandato da Arduino


Per prima cosa si deve procedere ad una modifica hardware sullo shield Xbee saldando un connettore da piedino 9 dello Xbee e portandolo dentro la porta D9 di Arduino
Se il pin 9 di Xbee si trova nello stato low (ground) viene abilitata la trasmissione/ricezione del modulo, se il pin 9 si trova nello stato high (che per Xbee vuol dire 3.3 V !!) la radio viene spenta

Visto che su Arduino le uscite digitali sono a 5 V (e contrariamente a quello che viene citato qui che non ci sono problemi ad alimentare un piedino a 3.3V con un tensione da 5V) lo sketch Arduino utilizza la modalita' PWM del pin D9 di Arduino per impostare un corrente di 3.3 V

Dal punto di vista software bisogna configurare XBee con XCTU a funzionare come End Device (si puo' fare questa modificando solo modificando il firmware mediante Update Firmware) e modificando i valori di Serial Interfacing/D7 DIO7 Configuration su 0 Disable ed impostando SM ad 1 (Pin Wake Mode)


----------------------------------------------------------------------
#define XBEE_SLEEP 9

void setup() {
  //setta il pin 9 come controllo dello sleep di XBEE
  pinMode(XBEE_SLEEP,OUTPUT);
  analogWrite(XBEE_SLEEP,0);
}

void loop() { 
analogWrite(XBEE_SLEEP,168); //spenge XBEE, 3.3V PWM  
delay(sleep_time); //tempo di standby
analogWrite(XBEE_SLEEP,0); //risveglia XBEE
}
----------------------------------------------------------------------

In trasmissione l'assorbimento di corrente arriva fino a 50 mA (compreso il microcontrollore Arduino) mentre a radio spenta si hanno valori intorno ai 10 mA