Pilotare con Arduino un modulo XBee

Eccomi di nuovo alle prese con i moduli Xbee. Nell'articolo "Pilotare con un modulo XBee un Arduino" veniva mostrato come comandare un modulo Xbee in un modo molto semplice ma poco pratico. 

Oggi dopo numerosi esperimenti vi propongo un metodo più complesso, ma allo stesso tempo più corretto e idoneo a progetti professionali.

Nell'esempio proposto andremo a pilotare il modulo Xbee sempre tramite Arduino, ma il modulo non sarà collegato al PC, bensì ad un circuito elementare realizzabile in 5 minuti.

Cosa ci serve per procedere?

  • Arduino UNO
  • 2 moduli Xbee (nell'esempio ho usato gli S1)
  • Xbee shield
  • Xbee Simple board (per adattare i piedini al passo standard di una board e avere 3,3V stabilizzati)
  • 1 diodo led
  • 1 opto isolatore (TPL521_1 http://pdfdata.datasheetsite.com/web/203339/TLP521-1.pdf)
  • 1 resistenza da 1k

Prima di tutto andiamo a realizzare il seguente circuito:

 

Come si vede di seguito, la simple board, monta già un sistema di stabilizzazione della tensione a 3.3V. quindi come Vcc potete (in via teorica) mettere quella che volete, basta che sia superiore a 3.3V e minore di 9V. Personalmente ho usato 5V come Vcc (alimentatore da 9V link + 7805). Ovviamente in base alla tensione scelta dovrete decidere e dimensionare un'ipotetica resistenza in serie al diodo led.

In seguito, mediante il software X-CTU, verificare che entrambi i moduli Xbee abbiano attive le API e siano impostate su W/PPP.

A questo punto, sulla piattaforma Arduino carichiamo il seguente programma:

#include <XBee.h>
XBee xbee = XBee();
void setup(){
xbee.begin(9600);
Serial.begin(9600);
  Serial.println("Avvio programma...");
}
uint8_t cmdpin[] = {'D','2'}; //PIN DEL LED, D0 E D1 VENGONO USATI PER TX/RX!!!
uint8_t valoreLOW[] = { 4 }; //LED LOW
uint8_t valoreHIGH[] = { 5 }; //LED HIGH
XBeeAddress64 addr64 = XBeeAddress64(0x0013a200, 0x40812c22); //INDIRIZZO DEI MODULI (LO TROVATE SCRITTO SOTTO AL MODULO)

RemoteAtCommandRequest commandLOW = RemoteAtCommandRequest(addr64,cmdpin,valoreLOW,sizeof(valoreLOW)); 
RemoteAtCommandRequest commandHIGH = RemoteAtCommandRequest(addr64,cmdpin,valoreHIGH,sizeof(valoreHIGH)); 

void loop(){
  delay(1000);
  xbee.send(commandLOW);
  delay(1000);
  xbee.send(commandHIGH);
}

Il programma permetterà di far comunicare i due moduli, facendo lampeggiare il led ad intervalli di 1 secondo.

Come vedete il "livello" a cui vogliamo portare il pin viene definito da: uint8_t valoreHIGH[] = { 5 }. Possiamo scegliere tra quattro possibilità:

1 - Disable
2 - NA
3 - ADC
4 - DO LOW
5 - DO HIGH

 Nel programma esempio si continua a cambiare tra livello 4 e 5.

You need to a flashplayer enabled browser to view this YouTube video

SFbBox by EnterLogic
Nessun evento trovato

LinuxMX è un sito creato da Maestri Carlo.
Questo sito non rappresenta una testata giornalistica, in quanto viene aggiornato senza alcuna periodicità. Non può, pertanto, considerarsi un prodotto editoriale, ai sensi della legge n. 62 del 7/03/2001
Tutti i contenuti del sito sono disponibili con una Licenza Creative Commons CC-BY-NC-SA
Tutti i loghi e marchi registrati presenti in questo sito sono di proprietà dei rispettivi proprietari.