1. Interconnesione di schede Arduino con moduli ZigBee
Lezione 4
CSP@SCUOLA
in collaborazione
con ITI FAUSER NOVARA
Anno scolastico 2011-2012
2. Introduzione
• Questa lezione fornisce i concetti base per interconnettere schede
Arduino attraverso moduli ZigBee
• Questi moduli sono spesso utilizzati per interconnettere reti di
sensori
• Sono sempre più utilizzati in ambito amatoriale per realizzare
canali radio affidabili al fine di controllare piccoli UAV
– Canale di controllo del “telecomando”
– Telemetria
• Vengono utilizzati anche per realizzare canali di comunicazione con
moduli Arduino
• La lezione fornirà informazioni relativamente alla configurazione e
all’utilizzo di questi moduli con schede Arduino
Lezione 4: interconnesione di schede Arduino con moduli ZigBee 2
3. Zigbee
• Nome di una specifica per un insieme di protocolli che realizzano
una comunicazione attraverso moduli radio a bassa potenza e
basso bit rate
– http://www.zigbee.org/
– IEEE 802.15.4
– ZigBee Alliance: insieme di aziende che supportano la
tecnologia
• Permette la realizzazione di una Wireless Personal Area Network
(WPAN)
– Insieme di dispositivi portatili e personali che possono essere
interconnessi tra loro per scambiare dati
• Connettività basata sul protocollo IEEE 802.15.4
– Livello fisico
• Banda 2.4 GHz
– Pacchetto di basso livello (detto trama) dotato di indirizzo
sorgente e destinazione per lo scambio di dati sul canale
Lezione 4: interconnesione di schede Arduino con moduli ZigBee 3
4. IEEE 802.15.4
• Introduce due tipologie di dispositivi
– Full function Device (FFD)
• Possono comunicare con qualsiasi dispositivo Zigbee
– Reduced Function Device (RFD)
• Dispositivi semplificati per consumare meno, ma con un
set di funzioni ridotte
• Comunicano solo con FFD
• Due tipologie di rete possibili:
– Peer-to-peer
• Tutti i nodi possono comunicare con tutti
– Stella
• I nodi possono comunicare con un solo nodo detto “centro
stella” che può interagire con tutti
• Centro stella = FFD
• Il centro stella è anche detto coordinatore della rete
Lezione 4: interconnesione di schede Arduino con moduli ZigBee 4
5. Moduli XBee: cosa sono
• Implementano il protocollo IEEE 802.15.4
• Frequenze ISM 2.4 GHz
• Due modelli
– XBee => versione base
– XBee PRO => versione evoluta, maggiore potenza, maggior
raggio di copertura, maggiori consumi
• Forniscono una interfaccia seriale TTL 3.3V
• Documentazione di rieferimento:
http://www.digi.com/products/wireless-wired-embedded-
solutions/zigbee-rf-modules/point-multipoint-rfmodules/xbee-
series1-module#overview
Lezione 4: interconnesione di schede Arduino con moduli ZigBee 5
6. Moduli XBee: specifiche
• Range operativo:
– XBee => fino a 30 m indoor, fino a 90 m all’aperto senza
ostacoli
– XBee PRO => fino a 90 m indoor, fino a 1600 m all’aperto
senza ostacoli
• Sensibilità ricevitore: XBee => -92 dBm, XBee PRO => -100 dBm
• Bit rate: 250 kbit/s
• Potenza trasmissiva:
– XBee => 1 mW (0 dBm)
– XBee PRO => 63 mW (18 dBm)
• Consumi
– XBee => ricezione 50mA@3.3V; trasmissione 45mA@3.3V
– XBee Pro=> ricezione 55mA@3.3V; trasmissione
150mA@3.3V
Lezione 4: interconnesione di schede Arduino con moduli ZigBee 6
7. Moduli XBee: connessione con PC
• I moduli XBee forniscono una interfaccia seriale TTL (3.3V)
• Per comunicare con un PC serve un adattatore
• Adattatore USB: XBee explorer
• Adattatore RS232
Lezione 4: interconnesione di schede Arduino con moduli ZigBee 7
8. Moduli XBee: configurazione (1/4)
• Software di configurazione: X-CTU
– Scaricabile qui:
http://ftp1.digi.com/support/utilities/93009396_a.txt
• X-CTU permette di:
– Inviare o ricevere caratteri tramite XBee su un terminale
testuale
– Riconfigurare un modulo XBee
– Aggiornare o cambiare il firmware
• Nel caso si utilizzi XBee Explorer USB occorre installare i corretti
driver FTDI (virtual console port) per la connessione
– http://www.ftdichip.com/Drivers/VCP.htm
Lezione 4: interconnesione di schede Arduino con moduli ZigBee 8
9. Moduli XBee: configurazione (2/4)
• Affinchè due moduli XBee possano comunicare devono operare
sulla stessa Personal Area Network (PAN)
– Stesso identificativo PAN
– Stesso canale radio
– Indirizzamento corretto
• XCTU permette di impostare correttamente questi parametri
• Dopo connesso il dispositivo, dall’interfaccia XCTU:
– Selezionare il baud rate corretto (9600 8N1 è default)
– Premere il pulsante “test query” => messaggio OK
Lezione 4: interconnesione di schede Arduino con moduli ZigBee 9
10. Moduli XBee: configurazione (3/4)
• Selezionare il pannello “Modem configuration” e premere il pulsante
“read”
• La configurazione corrente sarà visualizzata. A questo punto occorre
configurare il modulo => creare una Personal Area Network
Tutti i moduli devono usare lo stesso canale (range
0xB-0x1A per XBee, 0x0C-0x17 per XBee PRO)
Tutti i moduli devono avere lo stesso identificativo
della PAN per comunicare
Indirizzo di destinazione
DH => 32 bit parte alta; DL => 32 bit parte bassa
Deve essere uguale all’indirizzo del nodo con cui
comunicare (nei campi SH e SL dell’altro XBee) oppure
può essere impostato al valore broadcast (DH=0x0,
DL=0xFFFF). In questo caso tutti i nodi della PAN
riceveranno i dati inviati dal nodo.
ATTENZIONE: perchè DH e DL vengano considerati, il
campo MY deve essere settato a 0xFFF
RN=1 “random delay slots”
CE=0 su tutti i nodi: in questo modo la topologia di
rete sarà peer-to-peer (disabilita coordinatore)
PL=> livello di potenza del trasmettitore. Settare a
un valore intermedio
Lezione 4: interconnesione di schede Arduino con moduli ZigBee 10
11. Moduli XBee: configurazione (4/4)
• Parte inferiore del pannello di configurazione:
Baud rate dell’interfaccia seriale che
comunica con il PC
Selettore API mode: lasciare a 0 per
abilitare il funzionamento della
comunicazione seriale standard
• Una volta impostati i valori, attraverso il pulsante “Write” questi saranno
impostati sul modulo XBee
• Configurate due XBee per la comunicazione è possibile testarle
collegandole a due PC (o a due porte dello stesso PC), selezionando il
tab “terminal”; scrivendo caratteri da una parte, dovrebbero apparire
dall’altra
Lezione 4: interconnesione di schede Arduino con moduli ZigBee 11
12. Moduli XBee: valutazione interferenze con reti wifi
• La figura mostra l’occupazione di banda dei canali Wifi (IEEE 802.11)
• E’ possibile ricavare il centro di banda del canale ZigBee configurato
settando il valore CH da questa formula:
frequenza centrale = 2.405 + (CH – 11d) * 5 MHz (d = decimale)
• Considerato che il valore ottenuto è il centro banda e che la larghezza
di banda di un canale ZigBee è 5 MHz, è possibile usando uno software
stumbler su un PC con interfaccia wifi capire se il canale ZigBee
potrebbe essere disturbato da una trasmissione wifi operante sulle
stesse frequenze (lo stumbler indica l’identificativo dei canali wifi in
uso)
Lezione 4: interconnesione di schede Arduino con moduli ZigBee 12
13. Moduli XBee: indirizzamento
• Due modi possibili:
– Indirizzi a 16 bit o indirizzi a 64 bit
• Indirizzo a 64 bit => identificativo univoco a 64 bit preconfigurato sul
modulo e non modificabile
– Campi SH e SL letti da X-CTU
– Indirizzamento unicast => come nell’esempio, metto in DH e DL i
campi letti su SH e SL del nodo target
– Indirizzamento broadcast => DH = 0x0; DL = 0xFFFF => tutti i
nodi della PAN ricevono il pacchetto
• Indirizzamento a 16 bit, alternativo a quello a 64
– Abilitato se DH = 0x0 e DL < 0xFFFE
– Gli indirizzi sorgente non sono più preimpostati e l’utente deve
definirli in maniera univoca sulla PAN e impostarli nel campo MY
– L’indirizzo destinazione sarà riportato nel campo DL
– Esempio:
Lezione 4: interconnesione di schede Arduino con moduli ZigBee 13
14. Moduli XBee: utilizzo con Arduino
• Il modulo XBee si installa su Arduino grazie al communication
shield
• La porta seriale TTL del modulo XBee è così connessa alla porta
seriale di Arduino tramite lo shield
• La porta seriale della scheda Arduino dovrà essere impostata al
baud rate specificato nel campo BD durante la configurazione del
modulo
• NOTA: se si rimuove il processore Atmega da una Arduino diecimila
e si collega il communication shield con i jumper in posizione USB,
si ottiene un dispositivo del tutto analogo a un USB explorer
Lezione 4: interconnesione di schede Arduino con moduli ZigBee 14
15. Moduli XBee e Arduino: esempio (1/3)
• Topologia:
Canale Seriale
Rete ZigBee 2.4 GHz Baud rate: 9600
NODO1 (TRASMETTITORE) NODO2 (RICEVITORE)
CH = ch1 CH = ch1
ID = panId1
ID = panId1
DH = SH2 DL = SL2 DH = SH1 DL = SL1
BD = 9600
BD = 9600
Lezione 4: interconnesione di schede Arduino con moduli ZigBee 15
16. Modulo XBee e Arduino: esempio (2/3)
• Codice lato PC per sistema operativo Linux:
Istruzione che apre la comunicazione seriale.
“/dev/ttyUSB0” è il nome dell’interfaccia verso usb
explorer in linux. Per verificarlo eseguite il comando
“dmesg” in un terminale testuale dopo aver connesso
xbee explorer, al fondo dovrebbe apparire “FTDI USB
serial device converter now attached to ttyUSB0”; se
appare un numero diverso da 0, usare quello
Serve a ottenere la configurazione attuale dell’interfaccia
seriale del PC
Imposta il corretto baud rate, sia in input che output
Resetta il buffer di ingresso
della porta seriale del PC
Modifica la configurazione per lavorare in modo raw: in pratica
ogni byte ricevuto dalla seriale è inviato a questa applicazione
Applica la configurazione
così definita alla interfaccia
seriale dei PC
Cerca di leggere 100 byte dalla porta seriale. Se l’Arduino con
modulo Xbee ha inviato meno byte, il pc stampa comunque
quanto ha ricevuto su un terminale di testo
Lezione 4: interconnesione di schede Arduino con moduli ZigBee 16
17. Modulo XBee e Arduino: esempio (3/3)
• L’Arduino esegue una semplice sequenza di operazioni elementari:
– Inizializza la porta seriale 0 con il baud rate impostato alla
configurazione del modulo XBee (campo BD)
• Esattamente come fa il PC
– Trasmette periodicamente una stringa di test
• Sia il PC che l’Arduino operano come fossero collegati direttamente
tramite un cavo seriale
– La presenza della rete è trasparente
– È possibile operare direttamente sui pacchetti scambiati, ma
occorre configurare i moduli Xbee in “API mode”, che esula
dagli argomenti del corso
Lezione 4: interconnesione di schede Arduino con moduli ZigBee 17
18. www.csp.it rd.csp.it
CSP ICT Innovation
Livio Torrero livio.torrero@csp.it
Registered and Central Offices
Environment Park - Laboratori A1
via Livorno 60 - 10144 Torino
Tel +39 011 4815111
Fax +39 011 4815001
E-mail: marketing@csp.it
18