Indice
Radio
Idee per un progetto finale con Arduino che sfrutti la comunicazione wireless.
Possibili soluzioni:
- moduli bluetooth e comunicazione Arduino - smartphone
- moduli XBee su shield Xbee e comunicazione Arduino - Arduino
News
- 29/10/2014 testati gli shield XBee con i moduli wireless XBee (funzionano)
Bluetooth
Abbiamo dei moduli bluetooth RN-42 ma ci manca una scheda breakout per usarli. Bedei ha ordinato degli shield (o schede breakout?) per poterli interfacciare con Arduino. Saranno comunque da saldare e non è facile.
Al momento è la soluzione più difficile per i problemi hardware.
XBee Shield
Nel lab 12 abbiamo degli shield XBee con moduli XBee della Digi International. Sono shield obsoleti - il modello attuale è questo - ma funzionano bene e si trova documentazione online.
Gli shield montano moduli XBee S2 (product number XB24-BCIT-). Non è facile identificarli perché ne esistono di varie tipologie e il product number per l'identificazione è indicato sotto il modulo (bisogna toglierlo dallo shield per leggerlo). Ad ogni modo si tratta del modello non PRO (cioè a corto raggio) della serie 2, con il quale è possibile creare anche reti mesh usando i protocolli ZigBee o ZNet 2.5. Questi moduli sono più difficili da usare di quelli della serie 1 che non richiedono configurazione1). Sul sito di Arduino ci sono pagine sui due shield (vecchio e nuovo modello) e guide su come usarli (vedi i link in fondo alla pagina).
Note dalla pagina sullo shield XBee
Caratteristiche:
- raggio da 40 a 100 metri
- due modi di funzionamento: seriale o command mode (per la configurazione)
- sullo shield sono riportati i 6 pin analogici e i pin digitali da 2 a 7 della scheda Arduino; i pin da 8 a 13 sono accessibili direttamente sulla scheda Arduino
- il funzionamento della seriale dipende dalla posizione di due jumper posti sullo shield:
- posizione XBee: il uC riceve solo da XBee (non da PC) e invia sia a XBee che al PC via USB
- posizione USB: XBee comunica direttamente col PC via USB ma solo se è stato rimosso il uC, altrimenti la comunicazione è PC-uC
Il resto della pagina non interessa perché è sui moduli della serie 1.
Note dalla guida sullo shield XBee
Anche la guida dello shield Xbee fa riferimento a moduli della serie 1. Per la serie 2 c'è un dead-link nella pagina a un PDF che dovrebbe essere questo ma non è molto utile.
Per testare la comunicazione wireless:
- servono due Arduino e due moduli
- con i jumper nella posizione USB caricare dagli esempi lo sketch Physical Pixel; il programma accende e spegne il LED della scheda Arduino corrispondente al pin 13 in base a ciò che riceve via seriale ('H' accende il led, 'L' lo spegne); testare il programma con la comunicazione seriale PC-Arduino usando il serial monitor dell'IDE Arduino
- impostare lo shield su XBEE e caricare sull'altra scheda uno sketch che invii i caratteri 'H' e 'L' a intervalli di 1 secondo (solita storia: caricare lo sketch con i jumper in posizione USB poi spostare su XBee)
- alimentare le schede e provare se funziona la comunicazione seriale Arduino - Arduino via wireless
Altre note:
- usare 9600 baud negli sketch (è il default per i moduli XBee)
print()
eprintln()
si usano come al solito ma inviano dati via wireless invece che col cavo USB- la configurazione dei moduli si può fare:
- da Arduino, con comandi AT
- da PC, con comandi AT o il software XCTU; in questo caso però bisogna togliere il uC dalla scheda
- per configurare il modulo con i comandi AT si invia la sequenza '+++' senza invio (non credo si possa fare dal serial monitor) poi si usano dei comandi AT (sono documentati nei manuali e nelle guide sul sito di Arduino)
Note dalla guida sui moduli ZB (serie 2)
Questa guida fa riferimento a moduli della serie 2 - i nostri - ma è scritta per il nuovo wireless shield.
I moduli della serie 1 (802.15.4) non sono compatibili e permettono solo topologie a stella ma sono molto più facili da usare (la configurazione è opzionale). I moduli della serie 2 possono usare il protocollo ZigBee o quello ZNet 2.5 con la stessa radio; l'impostazione si fa cambiando il firmware; i due protocolli non sono compatibili. E' necessaria una configurazione via firmware anche per una connessione point-to-point dove un nodo va impostato come coordinator e l'altro come end-point/router (in una rete ZigBee ci vuole sempre un solo coordinator che gestisce la rete, e degli end point che comunicano direttamente col coordinator o attraverso dei router).
Configurazione via firmware:
- bisogna configurare lo shield per comunicare col modulo da PC. Nei nuovi shield si usa uno switch, in quello vecchio - il nostro - è necessario togliere il uC
La guida fa riferimento alla vecchia versione di XCTU (ancora disponibile come versione legacy); quella nuova sembra molto migliore. In ogni caso da XCTU si può rilevare il modulo, leggere e scrivere la configurazione. Per una comunicazione unicast (due soli moduli) bisogna:
- impostare lo stesso valore del parametro PAN ID nei due moduli
- segnare i due valori del numero di serie SH e SL dell'end point e copiarli nei parametri DH e DL del coordinator
- impostare il firmware giusto sui due moduli (ad es. ZNET COORDINATOR AT o ZNET END POINT/ROUTER AT)
Test con i moduli
Primo test effettuato a casa con:
- Windows 8.1 (64bit)
- Arduino 1.0.6
- XCTU Next Generation
- scheda Arduino Duemilanove con uC rimosso per configurare i moduli da PC
- scheda Arduino Uno
- 2 Xbee shield con modulo XBee2 (ZigBee/ZNet 2.5)
XCTU funziona bene e sembra molto completo (vedi il video). La scheda viene riconosciuta (autodetect o cerca) ed è possibile leggere i parametri e salvarli come profilo.
L'end point montava il firmware 1347 (ZNet 2.5 Router/End device API) che non risponde ai comandi AT; lo sostituisco col firmware 1247 (ZNet 2.5 Router/End device AT) così posso interagire con il modulo da un altro terminale o direttamente dal uC2). Per aggiornare il firmware bisogna prima identificare la product family indicata da una sigla posta sotto il modulo (nel nostri moduli si legge XB24-BCIT-
che corrisponde alla famiglia XB24-B in XCTU). Imposto la seconda scheda come 'ZNet 2.5 coordinator AT' (firmware 1047).
I parametri principali dell'end-point e del coordinator prima della riscrittura del firmware erano:
parametro | end-point | coordinator |
---|---|---|
CH (channel) | 0 | F |
ID (PAN ID) | 234 | 234 |
MY (16bit network address) | FFE | 0 |
SH (serial nuber high) | 13A200 | 13A200 |
SL (serial nuber low) | 407B6C64 | 407B6BEF |
BD (baud rate) | 9600 | 9600 |
DH | 0 | |
DL | 0 |
Nel dubbio ripristino i default e parto da zero. In pratica basta segnare i parametri SH e SL dell'end-point, e controllare che BD e ID corrispondano nei due moduli; per tutto il resto si può lasciare il valore di default. I moduli sembrano associarsi (il coordinator lampeggia ogni secondo e l'altro due volte al secondo). Per creare una rete unicast bisogna specificare l'indirizzo dell'end-point nel coordinator copiando i valori SH e SL dell'end-point nei parametri DH e DL (con il valore di default il coordinator trasmette in broadcast).
Sposto il jumper dello shield dell'end-point su XBEE e carico sul suo Arduino lo sketch Physical pixel (da Esempi|Communication). Il programma accende il led del pin 13 quando riceve via seriale - in questo caso tramite il modulo XBee - il carattere 'H' e lo spegne quando riceve il carattere 'L'. Non so perché ma non riesco a caricare lo sketch con lo shield inserito (avevo appena caricato Blink con lo shield inserito senza problemi). Tolgo lo shield, carico il programma e rimetto lo shield; poi alimento da alimentatore invece che da USB (non si sa mai).
Collego al PC lo shield del coordinator, inserito nella scheda senza uC e con il jumper su USB, e provo a inviare i caratteri 'H' e 'L' all'altra scheda dal terminale di XCTU. Funziona! Rimetto il uC sulla scheda con il modulo coordinator e carico un programma che invia i due caratteri a intervalli di un secondo (vedi la guida per i moduli serie 2, qui il codice). Rimetto lo shield e sposto il jumper su XBee. Funziona! Le due schede comunicano con una normale connessione seriale ma via wireless.
Riferimenti
- documenti tecnici
- getting started guide del development kit del modulo
- product manual del modulo
- software XCTU per gestire il modulo
- manuale del software XCTU
- da arduino.cc