Csp@scuola uav corso1_lez4

18
Interconnesione di schede Arduino con moduli ZigBee Lezione 4 CSP@SCUOLA in collaborazione con ITI FAUSER NOVARA Anno scolastico 2011-2012

description

Interconnessione di schede Arduino con moduli ZigBee

Transcript of Csp@scuola uav corso1_lez4

Page 1: Csp@scuola uav corso1_lez4

Interconnesione di schede Arduino con moduli ZigBee

Lezione 4

CSP@SCUOLAin collaborazione con ITI FAUSER NOVARA Anno scolastico 2011-2012

Page 2: Csp@scuola uav corso1_lez4

Introduzione

• Questa lezione fornisce i concetti base per interconnettere schede Arduino attraverso moduli ZigBee

• Questi moduli sono spesso utilizzati per interconnettere reti disensori

• 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

2Lezione 4: interconnesione di schede Arduino con moduli ZigBee

Page 3: Csp@scuola uav corso1_lez4

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

3Lezione 4: interconnesione di schede Arduino con moduli ZigBee

Page 4: Csp@scuola uav corso1_lez4

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

4Lezione 4: interconnesione di schede Arduino con moduli ZigBee

Page 5: Csp@scuola uav corso1_lez4

Moduli XBee: cosa sono

5Lezione 4: interconnesione di schede Arduino con moduli ZigBee

• 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

Page 6: Csp@scuola uav corso1_lez4

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 [email protected]; trasmissione [email protected]– XBee Pro=> ricezione [email protected]; trasmissione

[email protected]

6Lezione 4: interconnesione di schede Arduino con moduli ZigBee

Page 7: Csp@scuola uav corso1_lez4

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

7Lezione 4: interconnesione di schede Arduino con moduli ZigBee

Page 8: Csp@scuola uav corso1_lez4

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

8Lezione 4: interconnesione di schede Arduino con moduli ZigBee

Page 9: Csp@scuola uav corso1_lez4

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

9Lezione 4: interconnesione di schede Arduino con moduli ZigBee

Page 10: Csp@scuola uav corso1_lez4

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

10Lezione 4: interconnesione di schede Arduino con moduli ZigBee

Tutti i moduli devono usare lo stesso canale (range0xB-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 bassaDeve 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

CE=0 su tutti i nodi: in questo modo la topologia di rete sarà peer-to-peer (disabilita coordinatore)

RN=1 “random delay slots”

PL=> livello di potenza del trasmettitore. Settare a un valore intermedio

Page 11: Csp@scuola uav corso1_lez4

Moduli XBee: configurazione (4/4)

• Parte inferiore del pannello di configurazione:

• 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

11Lezione 4: interconnesione di schede Arduino con moduli ZigBee

Baud rate dell’interfaccia seriale che comunica con il PC

Selettore API mode: lasciare a 0 per abilitare il funzionamento della comunicazione seriale standard

Page 12: Csp@scuola uav corso1_lez4

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 ZigBeepotrebbe essere disturbato da una trasmissione wifi operante sulle stesse frequenze (lo stumbler indica l’identificativo dei canali wifi in uso)

12Lezione 4: interconnesione di schede Arduino con moduli ZigBee

Page 13: Csp@scuola uav corso1_lez4

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:

13Lezione 4: interconnesione di schede Arduino con moduli ZigBee

Page 14: Csp@scuola uav corso1_lez4

Moduli XBee: utilizzo con Arduino

• Il modulo XBee si installa su Arduino grazie al communicationshield

• 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 delmodulo

• 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

14Lezione 4: interconnesione di schede Arduino con moduli ZigBee

Page 15: Csp@scuola uav corso1_lez4

Moduli XBee e Arduino: esempio (1/3)

• Topologia:

15Lezione 4: interconnesione di schede Arduino con moduli ZigBee

NODO1 (TRASMETTITORE)CH = ch1ID = panId1DH = SH2 DL = SL2BD = 9600

NODO2 (RICEVITORE)CH = ch1ID = panId1DH = SH1 DL = SL1BD = 9600

Canale SerialeBaud rate: 9600Rete ZigBee 2.4 GHz

Page 16: Csp@scuola uav corso1_lez4

Modulo XBee e Arduino: esempio (2/3)

• Codice lato PC per sistema operativo Linux:

16Lezione 4: interconnesione di schede Arduino con moduli ZigBee

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

Modifica la configurazione per lavorare in modo raw: in pratica ogni byte ricevuto dalla seriale è inviato a questa applicazione

Resetta il buffer di ingresso della porta seriale del PC

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

Page 17: Csp@scuola uav corso1_lez4

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

17Lezione 4: interconnesione di schede Arduino con moduli ZigBee

Page 18: Csp@scuola uav corso1_lez4

18

CSP ICT Innovation

Livio Torrero [email protected]

Registered and Central Offices Environment Park - Laboratori A1via Livorno 60 - 10144 Torino

Tel +39 011 4815111Fax +39 011 4815001E-mail: [email protected]

www.csp.it rd.csp.it