Benvenuto su LinuxMX!
Il nostro principale obiettivo è offrire un'esperienza positiva sul sistema GNU/Linux aiutando i nuovi utenti a muoversi in questo ambiente e fornendo guide tecniche e specifiche per i più esperti. Inoltre è presente una sezione riguardante l'elettronica generale con guide e progetti. Non può di certo mancare una sezione dedicata alla piattaforma Arduino. Infine con il progetto LinuxMX si vuole creare una rete tra gli utenti, rendendoli partecipi del progetto stesso grazie l'ausilio di applicazioni web come LMX Writer e LMX Dates e tramite piattaforme quali il forum e il canale IRC.
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?
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.
18.09.13 - 20.09.13
Linux Plumbers Conference
26.10.13
Linux Day 2013
28.10.13
openSUSE 13.1
01.07.14 10:30 am - 11:30 am
openSUSE 13.2
01.03.15 10:30 am - 11:30 am
openSUSE 13.3
![]()
![]()
LinuxMX è un sito creato da Maestri Carlo.
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.