Il protcollo ZigBee

Nella scorsa puntata sono state introdotte le caratteristiche principali dei protocolli IEEE 802.15.4 e ZigBee, analizzando in dettaglio la soluzione di Digi-MaxStream, ossia i moduli della serie XBee e XBee PRO. In questo numero verrà analizzato l’uso del software X-CTU, che permette la programmazione dei moduli XBee, ma che può anche essere utilizzato come efficace strumento di diagnostica e debug.

Come supporto software alla programmazione, alla configurazione e al debug dell’hardware basato sui dispositivi della famiglia XBee, Digi-MaxStream mette a disposizione degli sviluppatori un unico software che assolve alle varie funzioni elencate sopra. Il software prende il nome di X-CTU ed è liberamente scaricabile via Internet dal sito web della Digi. X-CTU è un software per ambienti Windows, con retrocompatibilità fino alla versione ‘98. In figura 1 ne è riportata la schermata principale.

Figura 1. schermata principale del software X-CTU.

Figura 1. schermata principale del software X-CTU.

Prima di addentrarci nella descrizione del software, analizziamo con maggiore dettaglio l’interfaccia di comunicazione seriale dei moduli XBee. Come già evidenziato in precedenza, i moduli XBee sono dotati, oltre che di svariate linee di I/O generiche, anche di una porta seriale UART (Universal Asynchronous  ReceiverTransmitter). Tramite questa porta i moduli possono essere interfacciati a un microcontrollore o a un PC, in modo da poter essere inglobati in applicazioni più complesse. La situazione descritta è schematizzata in figura 2.

Figura 2: interfacciamento dei moduli XBee.

Figura 2: interfacciamento dei moduli XBee.

L’interfaccia di comunicazione dei moduli è una seriale asincrona dotata di due linee aggiuntive per l’implementazione di criteri di controllo di flusso hardware. Inoltre sono stati implementati quattro piccoli buffer hardware, due utilizzati come buffer di ricezione/trasmissione dell’interfaccia seriale e due usati come buffer di ricezione/trasmissione dell’interfaccia radio. Lo schema a blocchi dell’interfaccia è rappresentato in figura 3.

Figura 3: schema a blocchi dell’interfaccia di comunicazione dei moduli XBee.

Figura 3: schema a blocchi dell’interfaccia di comunicazione dei moduli XBee.

I pin DIN e DOUT costituiscono l’RX e il TX della porta, mentre i segnali CTS (Clear To Send) e RTS (Request To Send) sono i segnali di controllo di flusso hardware. I segnali di controllo di flusso possono essere abilitati o disabilitati in fase di programmazione dei moduli. Nel caso vengano abilitati il funzionamento è il seguente:  il traffico in entrata viene abilitato portando la linea CTS allo ‘0’ logico. Appena il buffer di ricezione del modulo XBee ha meno di 17 byte di spazio libero, la linea CTS (attiva bassa) viene settata per indicare all’host di interrompere il flusso di dati verso il modulo. Non appena lo spazio libero nel buffer di ricezione raggiunge  i 34 byte, la linea viene riportata bassa. La linea RTS invece governa l’invio del flusso di dati dal modulo verso l’host. Se la linea viene settata, il modulo interrompe  il flusso di dati e lo riprende quando la linea viene portata allo ‘0’ logico. Le modalità trasmissive dei moduli possono essere di due tipi: una prima modalità, denominata Transparent Mode, permette di utilizzare in maniera molto semplice e intuitiva i moduli. In questa modalità il protocollo è gestito in maniera del tutto trasparente dai moduli stessi. Per inviare i dati è sufficiente  inviare il payload direttamente sulla porta seriale (impostando il boud rate corretto), non è richiesta la gestione degli indirizzi sorgente/destinazione, la gestione del checksum o di altre caratteristiche del protocollo. Questa modalità risulta molto indicata per iniziare o nel caso di semplici collegamenti punto-punto. Esiste inoltre una seconda modalità trasmissiva, denominata API mode, che consente un maggiore controllo dei dispositivi e della rete, a discapito di una maggiore complessità di utilizzo.

Descrizione dell’interfaccia software

Analizziamo ora più in dettaglio come è strutturata l’interfaccia software free di Digi per la programmazione e il debug dei moduli. Il software X-CTU è composto dai quattro tab principali qui descritti:

» PC Settings: in questa sezione è possibile impostare i parametri  dell’interfaccia lato PC, come ad esempio la porta di comunicazione (che può essere una seriale standard oppure una seriale emulata su bus USB),  i parametri della comunicazione (baud rate, flow control, parità, ecc.) e altre opzioni (come l’abilitazione o la disabilitazione della modalità API);

» Range  Test: tramite questo tab è possibile effettuare  il range test del collegamento tra il coordinator (collegato al PC) e un router (o end device). Per effettuare il range test è necessario effettuare un collegamento di loopback sul nodo remoto, cortocircuitandone  i terminali TX e RX;

» Terminal: all’interno di questo tab si trova un semplice terminale seriale, da utilizzare per il debug dei moduli. E’ possibile inviare comandi sia in esadecimale che in ASCII e leggere le risposte del coordinator e dei router;

» Modem Configuration: questo tab contiene l’interfaccia software di programmazione dei moduli. Esistono diversi firmware scaricabili dal sito web del costruttore, con i quali è possibile programmare i dispositivi. Ogni firmware viene visualizzato parametricamente ed è fornita allo sviluppatore la possibilità di intervenire sui singoli parametri. Iniziamo ad analizzare  il tab con le funzioni di interfacciamento di base (PC Settings), visibile in figura 4.

Figura 4: tab PC Settings.

Figura 4: tab PC Settings.

Questo tab serve ad effettuare tutti i  settaggi relativi all’interfaccia per una corretta comunicazione con il modem. Nella textbox principale il software elenca tutte le interfacce di comunicazione compatibili rilevate. Nel caso vengano connesse schede con interfaccia USB, come la USB-Board descritta nella puntata precedente, queste ultime vengono rappresentate come porte COM virtuali, o VCP (Virtual Com Port). Nell’esempio di figura 4 sono state rilevate due possibili porte di comunicazione, denominate COM1 e COM2. Per selezionare una determinata porta è sufficiente cliccare con il mouse sul nome, che risulterà successivamente evidenziato. La sezione immediatamente a destra elenca i parametri di configurazione relativi alla porta seriale del modulo XBee. I  parametri sono i classici parametri  di una comunicazione seriale UART: baud rate, opzioni relative al controllo di flusso, numero di bit dati, parità e bit di stop. E’ importante settare correttamente questi parametri, altrimenti sarà impossibile comunicare con il radio modem. La sezione immediatamente sottostante presenta un tab con diverse opzioni. Tra queste è importante notare in particolare la sezione del tab Host Setup, denominata API. Tramite questa sezione è possibile selezionare la modalità “API mode”, che prevede un differente protocollo. Quindi se si programma un modem per funzionare in modalità API, quest’ultimo non sarà più accessibile sotto X-CTU se non viene selezionata la relativa opzione. Per verificare che i parametri di comunicazione tra il modem e il PC siano stati settati correttamente è possibile  interrogare  il modem stesso, premendo il tasto Test/Query. Se tutto è stato settato correttamente comparirà una finestra di dialogo come quella di figura 5.

Figura 5: finestra di dialogo Test/Query.

Figura 5: finestra di dialogo Test/Query.

Passiamo ora a esaminare  il secondo tab del pannello principale (Range Test), visibile in figura 6.

Figura 6: tab Range Test.

Figura 6: tab Range Test.

Questo tab presenta una serie di controlli diagnostici per l’effettuazione del Range Test. L’effettuazione del Range Test prevede l’uso di due radio modem, il primo in configurazione coordinator e il  secondo in configurazione router. Sull’uscita seriale del secondo radio modem viene effettuato un collegamento di loopback, cioè i due piedini TX e RX vengono cortocircuitati, in questo modo tutto quello che il modem riceve via radio (e quindi ritrasmette sull’uscita della sua seriale), viene ritrasmesso indietro (loopback). Sfruttando questo principio, l’interfaccia software invia (attraverso  il coordinator) una serie di pacchetti e si pone in attesa di riceverne l’eco. Calcolando il numero di pacchetti persi vengono fatte una serie di stime sulla qualità del collegamento radio (link quality). In figura 7 è rappresentato il tab successivo, denominato Terminal.

Figura 7: tab Terminal.

Figura 7: tab Terminal.

Di fatto si tratta di un semplice terminale seriale, opportunamente modificato per essere utilizzato come tool di debug per i moduli XBee. Il terminale  può essere utilizzato per comunicare con i moduli sia utilizzando  i caratteri ASCII che i valori esadecimali. Come detto in precedenza può essere un efficace strumento di debug specialmente in una prima fase di sviluppo (se non è stato ancora creato un apposito programma di interfacciamento) per testare le funzionalità base dei moduli. Un’importante opzione presente è la possibilità di assemblare un pacchetto per poi spedirlo. Per accedere a questa opzione selezionare   il tasto Assemble Packet, successivamente comparirà un finestra di dialogo come quella visibile in figura 8.

Figura 8: finestra di dialogo relativa all’opzione Assemble Packet.

Figura 8: finestra di dialogo relativa all’opzione Assemble Packet.

Come si può notare è possibile assemblare pacchetti sia utilizzando il  simbolismo ASCII che quello esadecimale. Appena il pacchetto è pronto lo si può spedire al radio modem premendo il tasto Send Data. Questa opzione risulta molto utile per testare i moduli in API mode, in quanto i pacchetti da inviare possono risultare anche molto lunghi. Osserviamo infine l’ultimo tab disponibile, denominato Modem Configuration, visibile in figura 9.

Figura 9: sezione Modem Configuration del software X-CTU.

Figura 9: sezione Modem Configuration del software X-CTU.

Tramite questo tab è possibile programmare la memoria flash del modulo, personalizzandolo a seconda dell’applicazione. La programmazione di questi oggetti è parametrica, ossia non c’è un vero e proprio ambiente di sviluppo ma sono disponibili una serie di firmware già preconfezionati che possono essere personalizzati dall’utilizzatore modificando opportuni parametri. Per i dispositivi della serie 2 sono disponibili una serie di release aggiornate costantemente dalla Digi-MaxStream. Gli aggiornamenti firmware possono essere scaricati dalla rete utilizzando direttamente X-CTU. Proprio dal tab Modem Configuration  premere il tasto Download New Verison, assicurandosi di avere una connessione internet attiva. Il  software si connetterà direttamente a uno dei server del costruttore ed effettuerà  il download delle nuove versioni. Vediamo più in dettaglio come possono essere configurati i moduli XBee utilizzando X-CTU. Nel seguito faremo riferimento ai moduli della serie 2 programmati con la famiglia di firmware ZNet 2.5. Si tenga presente che nella terminlogia Digi-Max-Stream i  firmware con i  quali vengono programmati  i radio modem non vengono chiamati firmware ma profiles, e da ciò prende nome l’estensione dei file (.pro). Questa famiglia ammette una vasta gamma di dispositivi, ma quelli più comunemente utilizzati sono i seguenti:

» ZNet 2.5 Coordinator API;

» ZNet 2.5 Router\End Device API;

» ZNet 2.5 Coordinator AT;

» ZNet 2.5 Router\End Device AT.

Come si può facilmente intuire, la famiglia di firmware Znet 2.5 non effettua distinzione tra router ed end device. Ogni tipologia di firmware esiste poi nelle due varianti AT e API mode, dove la versione AT equivale alla modalità transparent mode. Una volta collegato il radio modem al PC con una delle interfacce disponibili è possibile leggerne la configurazione interna premendo il tasto Read, o caricare un determinato firmware selezionandolo e premendo il tasto Write. Si tenga sempre presente che per effettuare una comunicazione base devono essere presenti sulla rete almeno un Coordinator (che creerà la rete stessa) e un Router/End Device. Analizziamo adesso i  vari parametri di uno dei profile, prendendo a titolo di esempio il profile ZNet 2.5 Coordinator AT. Per aprire questo profile selezionate dal menu a tendina modem, a sinistra sopra la finestra principale,  il modem XB24B, e dal menu a tendina subito a destra il function set ZNet 2.5 Coordinator AT. Una volta aperto il function set troverete una serie di parametri, alcuni fissi e altri modificabili, racchiusi in una serie di famiglie, di seguito elencate:

» Networking;

» Addressing;

» RF Interfacing;

» Security;

» Serial  Interfacing;

» Sleep  Modes;

» I/O Settings;

» AT Command Options;

» Diagnostic  Command.

Non ci dilungheremo sulla descrizione di tutti i parametri,  ma andremo ad analizzare quelli indispensabili per condurre le prime prove pratiche con i moduli. Sotto la voce Networking sono contenuti alcuni parametri di configurazione della rete, come la PAN ID e il canale su cui verrà instaurata la rete. Inizialmente non è necessario intervenire su questi parametri. Sotto la voce Addressing sono contenuti parametri modificabili e non modificabili dall’utente. Tra quelli non modificabili troviamo l’indirizzo MY (che è il nome che ha dato Digi all’indirizzo short del protocollo), che vale sempre 0x0000 per il Coordinator e non deve essere modificato, e il serial number (equivalente al MAC address), univoco per ogni modulo prodotto e non modificabile perché memorizzato in una locazione della EEPROM interna. Tra i  parametri modificabili troviamo il Destination Address (DH e DL), che indica chi sarà il destinatario  di tutti i messaggi inviati dal modulo (per le prime prove e anche per il seguito, può essere utilizzato l’indirizzo broadcast della PAN, ossia 0xFFFF). Sotto la voce power mode sono contenuti due parametri che influenzano la potenza trasmissiva (e di conseguenza  il consumo). Inizialmente si possono utilizzare i massimi  livelli di potenza, mentre nel seguito l’impostazione di questi parametri dipenderà dall’applicazione che si intende sviluppare e dalla volontà del progettista di privilegiare ampi range trasmissivi o bassi consumi. Saltando la sezione security, è invece molto importante analizzare la sezione Serial Interfacing. In questa sezione sono contenuti tutti i parametri  di configurazione della porta seriale e una cattiva impostazione di questi ultimi è una delle cause più frequenti di errore. Impostate il baud rate, la parità, l’uso o meno del controllo di flusso e assicuratevi di utilizzare le stesse impostazioni per l’interfaccia che comunicherà con il modem, sia essa quella del PC o di un micro. Un’impostazione tipica per iniziare può essere 9600 baud, nessuna parità e nessun controllo di flusso, per semplificare al massimo le operazioni. Le sezioni Sleep, AT Command e Diagnostic possono essere tralasciate in un primo momento, mentre attraverso la sezione I/O Settings è possibile scegliere la configurazione dei pin di I/O aggiuntivi del modulo. Questa breve guida dovrebbe essere sufficiente per iniziare a fare i primi esperimenti con i  moduli XBee; informazioni più dettagliate possono essere reperite all’interno dei vari manuali dei prodotti o sul sito della Digi-MaxStream.

 

 

Scrivi un commento

EOS-Academy
Abbonati ora!