Arduino

Moduli XBee

Sfruttiamo due moduli XBee per una comunicazione seriale senza fili

I moduli XBee, prodotti da DIGI, permettono la comunicazione bidirezionale tra due o più moduli attraverso radiofrequenze. La radiofrequenza più comune su questi moduli è 2.4GHz, poiché è quella approvata da tutti i paesi, inoltre la modalità di funzionamento più diffusa prende il nome di Trasparent Mode e prevede che due moduli comunicano tra loro in seriale senza fili. Questo ci permette quindi di trasformare qualsiasi rete calata con una rete wireless. Ogni modulo, pertanto, possiede un indirizzo univoco e lavora su un ben preciso canale di comunicazione evitando così possibili interferenze tra più moduli presenti in un’area ristretta. Infine, i moduli XBee presentano periferiche proprie di GPIO , convertitori ADC e output PWM, senza la necessità di utilizzare un microcontrollore per la gestione del modulo stesso.

I moduli XBee sono gestiti a 3.3V, pertanto, se non si utilizzano shield/board a 5V sarà necessario effettuare un’adattamento dei livelli logici. Il metodo più semplice ed economico è di gestire l’adattamento a 5V, ma è possibile realizzarlo anche tramite transistor.

In questa guida verranno utilizzati:

  • Moduli XBee S1
  • Scheda ArduinoUNO
  • Scheda ArduinoMega
  • Arduino Xbee Shield
  • Xbee adapter

              

     

Protocollo 802.15.4 vs Protocollo ZigBee

Il protocollo standardizzato IEEE 802.15.4 presenta come punti di forza una facile connettività associata ad una discreta velocità di comunicazione alle frequenze prestabilite dall’ISM (Industrial, Scientifical and Medical, le frequenze interessate sono 868-868.8 MHz per l’Europa, 902-928 MHz per gli USA e 2.400-2.4835 GHz ovunque).  Essendo la frequenza 2.4GHz approvata in tutto il mondo è quella più diffusa sui moduli commerciali. Le modalità di comunicazione possono essere:

  • point-to-point: due moduli comunicano unicamente tra di loro in modo bidirezionale
  • point-to-multipoint: un modulo coordinatore (master) crea e gestisce la rete a cui appartengono vari moduli slave (end devices). Tutte le comunicazioni passano dal modulo master.

NB. I moduli XBee S1 sfruttano il protocollo IEEE 802.15.4.

Il protocollo ZigBee, invece, è stato sviluppato dalla ZigBee alliance che include molteplici produttori e sviluppatori. Si basa sul protocollo IEEE 802.15.4 ma porta con sé delle peculiarità molto importanti tra cui la connessione di tipo mesh: ogni modulo può fungere da router per rimbalzare il messaggio tra due unità molto distanti tra loro. I moduli si adattano alla rete creando automaticamente nodi di scambio e se qualche modulo viene dovesse venir disattivato il sistema lo rileva e i moduli rimanenti si riorganizzano in automatico per mantenere attiva e funzionante la rete.

I sistemi ZigBee sono implementati nei moduli XBee S2 e prevedono la gestione del protocollo lato software su due fronti: ZNET 2.5 (ormai obsoleto) e ZB (ZigBee 2007).

Configurazione di un modulo

Il software per la gestione di questi moduli è X-CTU, oggi disponibile per macOS, GNU/Linux e Microsoft Windows. Essendo un software multipiattaforma l’interfaccia grafica è uguale su tutti i sistemi operativi.

Download X-CTU: https://www.digi.com/

Una volta in possesso del software abbiamo bisogno di connettere il modulo XBee al nostro computer. In questa guida noi utilizzeremo un semplice XBee adapter, il quale ha un costo di pochi euro e permette di collegare direttamente il modulo XBee S1 / S2 PRO al computer mediante cavo usb. Sulla scheda dell’adattatore troviamo un sistema di riduzione della tensione da 5V a 3.3V e l’adattamento di tensione per le linee di comunicazione TX e RX.

Una volta in possesso di questi due strumenti possiamo procedere con la configurazione. Per prima cosa connettiamo il modulo XBee al computer, dopodiché apriamo il software X-CTU il quale si mostrerà come segue:

Andiamo quindi a premere la seconda icona in alto a sinistra (dove c’è rappresentato il modulo XBee con la lente d’ingrandimento) e avviamo la ricerca sulla porta usb interessata. Se il modulo è vergine e non è mai stato configurato verrà individuato senza problemi con i parametri di ricerca reimpostati.

Se il dispositivo è stato rilevato otterremo una schermata simile alla seguente dove verrà mostrato il nome del dispositivo (configurabile a proprio piacimento) e l’indirizzo MAC univoco:

Selezioniamo il modulo e premiamo “Add selected devices“. Una volta aggiunto tra i dispositivi rilevarti, premendo nuovamente sul nome del modulo, potremo accedere alla sua configurazione.

L’interfaccia grafica è ben curata e semplifica notevolmente le operazioni rispetto alle versioni (ormai obsolete) di XCTU. Il menu è formato da 5 icone principali: Read, Write, Default, Update e Profile.

Read: permette di leggere la configurazione presente sul modulo.
Write: scrive la nuova configurazione sul modulo, sovrascrivendo quella vecchia.
Default: ripristina i valori di fabbrica del modulo e del firmware.
Update: permette di aggiornare il modulo per quanto riguarda modalità di funzionamento e firmware.
Profile: permette il caricamento o la creazione di profili personalizzati.

Nella parte sottostante troviamo moltissime impostazioni. Quelle minime necessarie per un primo approccio sono le seguenti:

  • CH Channel: canale di comunicazione, di default C ma possiamo cambiarlo (due moduli, per comunicare tra loro, devono trovarsi sullo stesso canale).
  • ID Pan ID: Personal Area Network, entrambe i moduli devono lavorare con lo stesso ID.
  • SH Serial Number High: codice univoco del modulo che stiamo configurando, è stampato dietro al modulo stesso. Viene rilevato in automatico.
  • SL Serial Number Low: codice univoco del modulo che stiamo configurando, è stampato dietro al modulo stesso. Viene rilevato in automatico.
  • DH Destination Address High: codice univoco del modulo con il quale vogliamo comunicare, è stampato dietro al modulo stesso e corrisponde al SH di quel modulo.
  • DL Destination Address Low: codice univoco del modulo con il quale vogliamo comunicare, è stampato dietro al modulo stesso e corrisponde al SL di quel modulo.
  • AP API Enable: stabilisce il metodo di funzionamento del modulo Xbee.

Se vogliamo utilizzare il modulo XBee come semplice comunicazione seriale wireless ci basterà impostare l’ultimo parametro (AP) a 0, ovvero disabilitato. Se invece vogliamo sfruttare il modulo XBee in modalità standalone senza alcun microcontrollore di supporto connesso ad esso potremo utilizzare le modalità 1 e 2, impostando nella parte sottostante i vari terminali che ci interessano e il loro stato iniziale/assenza di comunicazione.

ESEMPIO DI COMUNICAZIONE SERIALE

Prendiamo due moduli XBee (che chiameremo Modulo A e Modulo B) e configuriamoli seguendo in modo scrupoloso quanto riportato sopra. Per avere una banale comunicazione seriale tra i due moduli sarà necessario configurare su entrambe la modalità di funzionamento AP 0 (API disabled):

Ora i due moduli sono pronti a scambiarsi reciprocamente pacchetti dati via seriale TXRX wireless.

Il modulo A lo andremo a collegare ad una scheda ArduinoMEGA con l’apposito shield Arduino XBee. Sulla scheda è stato caricato il seguente sketch che provvede a scrivere sulla seriale una stringa ogni secondo.

void setup() {
Serial.begin(9600); //deve coincidere con la velocità impostata su XBee
}

void loop() {
Serial.println("Visita www.mst-tutorial.it");
delay(1000);
}

Modulo A: ArduinoMEGA + XBee Shield + XBee S1

Ora spostiamoci a lavorare sul modulo B, il quale deve trovarsi connesso al computer tramite l’adattatore XBee utilizzato in precedenza per configurarlo.

Modulo B: XBee Adapter USB + XBee S1

Apriamo X-CTU e, dalla finestra Tools, attiviamo la Serial Console. Premendo sull’icona della connessione Open apriremo un terminale seriale del nostro modulo. Se abbiamo fatto tutto correttamente ogni secondo verrà stampata la stringa ricevuta.

Se volessimo invece far comunicare via wireless due schede Arduino possiamo realizzare facilmente il seguente schema e dobbiamo prevedere uno sketch che permetta la lettura delle informazioni che transitano sulla seriale.

MST-Admin

Appassionato di elettronica, elettrotecnica generale e programmazione. Fondatore del progetto MST-tutorial, desideroso di condividere con voi l'entusiasmo per l'innovazione tecnologica e la sperimentazione di novità tecniche in questi campi.

Articoli Correlati

Pulsante per tornare all'inizio