23
M.M.Electronics - http://www.mmetft.it M. M. Electronics Michele Marino - [email protected] Introduzione al protocollo wireless ZigBee TM V 0.1 Settembre 2007

M. Electronics M. · A norma del-l’art. 70 µe comunque consentito, per scopi di critica o discussione, il riassunto e la citazione, accompagnati dalla menzione del titolo dell’opera

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: M. Electronics M. · A norma del-l’art. 70 µe comunque consentito, per scopi di critica o discussione, il riassunto e la citazione, accompagnati dalla menzione del titolo dell’opera

M.M.Electronics - http://www.mmetft.it

M.M. Electronics

Michele Marino - [email protected]

Introduzione al protocollo wireless ZigBeeTM

V 0.1

Settembre 2007

Page 2: M. Electronics M. · A norma del-l’art. 70 µe comunque consentito, per scopi di critica o discussione, il riassunto e la citazione, accompagnati dalla menzione del titolo dell’opera

INFORMATIVA

Come prescritto dall’art. 1, comma 1, della legge 21 maggio 2004n.128, l’autore avvisa di aver assolto, per la seguente opera del-l’ingegno, a tutti gli obblighi della legge 22 Aprile del 1941 n. 633,sulla tutela del diritto d’autore. Tutti i diritti di questa opera so-no riservati. Ogni riproduzione ed ogni altra forma di diffusione alpubblico dell’opera, o parte di essa, senza un’autorizzazione scrit-ta dell’autore, rappresenta una violazione della legge che tutela ildiritto d’autore, in particolare non ne e consentito un utilizzo pertrarne profitto. La mancata osservanza della legge 22 Aprile del1941 n. 633 e perseguibile con la reclusione o sanzione pecuniaria,come descritto al Titolo III, Capo III, Sezione II. A norma del-l’art. 70 e comunque consentito, per scopi di critica o discussione,il riassunto e la citazione, accompagnati dalla menzione del titolodell’opera e dal nome dell’autore.

AVVERTENZE

Chiunque decida di far uso delle nozioni riportate nella seguenteopera o decida di realizzare i circuiti proposti, e tenuto pertantoa prestare la massima attenzione in osservanza alle normative invigore sulla sicurezza.L’autore declina ogni responsabilita per eventuali danni causatia persone, animali o cose derivante dall’utilizzo diretto o indi-retto del materiale, dei dispositivi o del software presentati nellaseguente opera.Si fa inoltre presente che quanto riportato viene fornito cosi com’e,a solo scopo didattico e formativo, senza garanzia alcuna della suacorrettezza.L’autore ringrazia anticipatamente per la segnalazione di ognierrore.

Michele Marino

2

Page 3: M. Electronics M. · A norma del-l’art. 70 µe comunque consentito, per scopi di critica o discussione, il riassunto e la citazione, accompagnati dalla menzione del titolo dell’opera

3

Indice

1 Introduzione al protocollo ZigBee 5

2 Lo standard ZigBee 52.1 Tipi di dipositivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3 Configurazioni di rete 63.1 Configurazione di rete a stella . . . . . . . . . . . . . . . . . . . . . . . 63.2 Configurazione di rete ad albero . . . . . . . . . . . . . . . . . . . . . . 63.3 Reti a maglia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

4 Terminologia del protocollo ZigBee 84.1 Tipo di messaggi e binding . . . . . . . . . . . . . . . . . . . . . . . . . 84.2 Formato messaggi del protocollo ZigBee . . . . . . . . . . . . . . . . . . 94.3 Formato frame del protocollo ZigBee . . . . . . . . . . . . . . . . . . . . 94.4 Frame KVP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94.5 Frame MSG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

5 Indirizzamento di rete 105.1 Estensione unica identificatori IEEE - EUI-64 . . . . . . . . . . . . . . . 10

6 Indirizzamento di rete 106.1 Messaggi unicast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106.2 Messaggi broadcast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

7 Meccanismo di trasmissione dati 117.1 Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

8 Associazione di rete 12

9 La stack Microchip 139.1 Composizione di un nodo hardware . . . . . . . . . . . . . . . . . . . . 139.2 L’analizzatore di reti wireless . . . . . . . . . . . . . . . . . . . . . . . . 139.3 Struttura della stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139.4 Primo esempio applicativo . . . . . . . . . . . . . . . . . . . . . . . . . 14

9.4.1 Binding sui dispositivi End . . . . . . . . . . . . . . . . . . . . . 159.4.2 Ricerca di dispositivi . . . . . . . . . . . . . . . . . . . . . . . . 159.4.3 Invio dei messaggi . . . . . . . . . . . . . . . . . . . . . . . . . 16

9.5 Utilizzo della stack Microchip . . . . . . . . . . . . . . . . . . . . . . 169.6 Interfacciamento con la stack . . . . . . . . . . . . . . . . . . . . . . . . 179.7 Creazione e accesso ad una rete . . . . . . . . . . . . . . . . . . . . . . 179.8 Ricezione dei messaggi . . . . . . . . . . . . . . . . . . . . . . . . . . . 189.9 Invio dei messaggi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189.10 Richiesta e ricezione dati da un RFD . . . . . . . . . . . . . . . . . . 199.11 Trasmissioni sicure . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

Bibliografia 23

Page 4: M. Electronics M. · A norma del-l’art. 70 µe comunque consentito, per scopi di critica o discussione, il riassunto e la citazione, accompagnati dalla menzione del titolo dell’opera

Michele Marino · · · [email protected] Il protocollo ZigBeeTM

Elenco delle figure

1 Rete a stella . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Rete ad albero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Rete a maglia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Struttura di un nodo hardware . . . . . . . . . . . . . . . . . . . . . 135 Menu apertuta progetto . . . . . . . . . . . . . . . . . . . . . . . . . 156 Menu compilazione progetto . . . . . . . . . . . . . . . . . . . . . . . 157 Struttura base dell’applicazione . . . . . . . . . . . . . . . . . . . . . 178 Codice ricezione messaggio . . . . . . . . . . . . . . . . . . . . . . . 199 Codice trasmissione messaggio . . . . . . . . . . . . . . . . . . . . . 2010 Codice ricezione messaggi RFD . . . . . . . . . . . . . . . . . . . . . 2111 Servizi di sicurezza del ZigBee . . . . . . . . . . . . . . . . . . . . . . 22

Elenco delle tabelle

1 Frequenze protocollo ZigBee . . . . . . . . . . . . . . . . . . . . . . . 52 Tipi di dispositivi IEEE 802.15.4 (FFD - RFD) . . . . . . . . . . . . 73 Tipi di dispositivi del protocollo ZigBee . . . . . . . . . . . . . . . . 74 Risorse richieste al PIC18F . . . . . . . . . . . . . . . . . . . . . . . 14

Copyright 2000-2007 · · · M.M.Electronics · · · http://www.mmetft.it 4

Page 5: M. Electronics M. · A norma del-l’art. 70 µe comunque consentito, per scopi di critica o discussione, il riassunto e la citazione, accompagnati dalla menzione del titolo dell’opera

Michele Marino · · · [email protected] Il protocollo ZigBeeTM

1 Introduzione al protocollo ZigBee

ZigBee e un protocollo per reti wire-less progettato specificatamente per bas-si trasferimenti di dati e per il controllodi dispositivi e sensori su reti wireless.Le applicazioni del protocollo ZigBee so-no varie: dalle reti di manifattura au-tomatica, ai sistemi di sicurezza per lacasa, ai sistemi di controllo industriale,misure remote e periferiche per personalcomputer. Comparato con altri protocol-li wireless, il protocollo di comunicazio-ne wireless ZigBee ha essenzialmente, trevantaggi:

• bassa complessita

• richiesta ridotta di risorse

• possiede un insieme di specifichestandard.

Inoltre, ZigBee offre tre bande di fre-quenze di funzionamento insieme ad uncerto numero di configurazioni di rete ecaratteristiche di sicurezza opzionali.

2 Lo standard ZigBee

Dunque lo ZigBee e un protocollo di co-municazione wireless standard progetta-to per il controllo su reti a basso trasferi-mento di dati. ZigBee si basa sulle speci-fiche IEEE 802.15.4 e fornisce metodolo-gie standard per funzioni, includendo lapossibilita di creare reti, messaggi e ri-cerca di dispositivi su di essa. Dunquelo ZigBee usa le specifiche IEEE 802.15.4come Medium Access Layer (MAC) e co-me Physical Layer (PHY). Lo standarddefinisce tre bande di frequenza di funzio-namento: 2.4GHz, 915MHz e 868MHz.Ogni banda di frequenza offre un numeroprefissato di canali.

banda canali numerazione2.4GHz 16 11-26915MHz 10 1-10868MHz 1 0

Tabella 1: Frequenze protocollo ZigBee

La velocita di trasferimento del proto-collo ZigBee dipende dalla frequenza ope-rativa. La banda a 2.4GHz consente untrasferimento massimo di 250Kbps, quel-la a 915 MHz 40Kbps e quella a 868MHz20 Kbps. La velocita di trasferimentocorrente potrebbe essere inferiore a quel-le specificate. Questo e dovuto essenzial-mente all’aggiunta iniziale di pacchetti dicontrollo e al ritardo di processamentodei primi dispositivi in commercio.

La lunghezza massima di un pacchet-to IEEE 802.15.4 e di 127 byte, il qualeinclude anche 16-bit per il controllo d’er-rore (CRC - Cyclic Redundancy Check).Il valore CRC a 16-bit verifica l’integritadel frame. In aggiunta, lo standard IEEE802.15.4 usa (opzionale) un meccanismodi trasferimento a risposta dei dispositividi comunicazione (Acknowledged). Conquesto metodo, tutti i frame posseggonoun bit di richiesta (ACK flag) che vie-ne letto dai dispositivi in ricezione. Seil frame viene trasmesso con il bit ACKsettato e non viene ricevuta nessuna ri-sposta dal dispositivo di ricezione entroun certo intervallo di tempo, la trasmis-sione viene ripetuta per un certo numerodi volte prima di segnalare un errore ditrasmissione. E’ importante notare che laricezione del segnale di Ackowledgementindica semplicemente che il frame e sta-to ricevuto corretamente a livello MAC.Chiaramente questo non indica allo stes-so tempo, che il frame e stato processato

Copyright 2000-2007 · · · M.M.Electronics · · · http://www.mmetft.it 5

Page 6: M. Electronics M. · A norma del-l’art. 70 µe comunque consentito, per scopi di critica o discussione, il riassunto e la citazione, accompagnati dalla menzione del titolo dell’opera

Michele Marino · · · [email protected] Il protocollo ZigBeeTM

correttamente. E’ possibile infatti che alivello MAC il nodo di ricezione, ricevae trasmetta una risposta corretta (Ack-nowledgement), ma data la mancanza dirisorse di processamento, un frame possaessere scartato al livello superiore. Que-sto porterebbe ad assumere un’altra ri-sposta di ricezione per il layer superio-re, cio che porta, inevitalbilmente ad unoverhead di processamento.

2.1 Tipi di dipositivi

Lo standard IEEE 802.15.4 definisce duetipi di dispositivi come mostrato nellatabella 2.

La tabella 3 mostra invece tre tipi didispositivi del protocollo ZigBee in rela-zione anche ai tipi di dispositivi definitidall’IEEE.

Il dispositivo Coordinator in genere eunico per ogni rete ed e il dispositivo cheforma la rete, allocando gli indirizzi direte e tenendo memoria della tabella diallocazione (binding table) con l’associa-zione degli indirizzi dei vari dispositivi direte. Il dispositivo Router e opzionale econsente di estendere il range della reteconsentendo a piu nodi di comunicare traloro. Questo puo eseguire anche funzio-ni di monitoraggio e/o controllo come ildispositivo End.

3 Configurazioni di rete

Il protocollo di rete wireless ZigBee puoassumere diversi tipi di configurazione.In tutte le configurazioni di rete, ci sonoalmeno due dispositivi fondamentali:

• nodo Coordinator

• dispositivo End

Il Coordinator del protocollo ZigBee euna variante speciale del dispositivo FFD

che implementa un insieme piuttosto va-sto di servizi del protocollo. Un disposi-tivo End puo essere un FFD o anche unRFD. Un dispositivo RFD rappresenta ilpiu piccolo e semplice nodo del protocol-lo ZigBee. Questo implementa solo uninsieme minimo di servizi. Un terzo com-ponente opzionale, il Router, si ritrova inalcune configurazioni di reti ZigBee.

3.1 Configurazione di rete a stella

La configurazione di rete a stella (figura1) consiste di un dispositivo Coordinatore uno o piu dispositivi End. In una re-te del genere, tutti i dispositivi End pre-senti nella rete comunicano soltanto conil nodo Coordinator. Se un dispositivoEnd deve trasferire dati ad un altro di-spositivo End, trasferisce i dati al Coor-dinator e poi quest’ultimo inoltra i datial dispositivo End di destinazione.

Figura 1: Rete a stella

3.2 Configurazione di rete ad albero

Un altro tipo di configurazione di retee rappresentato dalla tipologia ad albe-ro (figura 2). In questa configurazione,i dispositivi End posso entrare nella re-te sia attraverso il nodo Coordinator cheattraverso i nodi Router. I nodi Router,in questo caso, svolgono due funzioni: laprima riguarda l’estensione del numero dinodi che possono entrare a far parte del-

Copyright 2000-2007 · · · M.M.Electronics · · · http://www.mmetft.it 6

Page 7: M. Electronics M. · A norma del-l’art. 70 µe comunque consentito, per scopi di critica o discussione, il riassunto e la citazione, accompagnati dalla menzione del titolo dell’opera

Michele Marino · · · [email protected] Il protocollo ZigBeeTM

Dispositivo Servizi Alimentazione Conf. ricevitoreFull Function Device molti o tutti principale On quando inattivo

Reduced Function Device limitati batteria Off quando inattivo

Tabella 2: Tipi di dispositivi IEEE 802.15.4 (FFD - RFD)

Dispositivo ZigBee Dispositivo IEEECoordinator FFD

Router FFDEnd FFD o RFD

Tabella 3: Tipi di dispositivi del protocollo ZigBee

la rete; la seconda riguarda l’estensionefisica del range della rete.

Con l’aggiunta di un Router, un di-spositivo End, non necessita di essere nelrange radio del nodo Coordinator per co-municare nella rete. Tutti i messaggiin una rete ad albero vengono smistatilungo l’albero di trasmissione.

Figura 2: Rete ad albero

3.3 Reti a maglia

La configurazione di rete a maglia (figura3) e simile a quella ad albero, ad eccezio-ne del fatto che in questa configurazionei dispositivi FFD possono smistare mes-saggi direttamente ad altri FFD senza se-guire la struttura ad albero. I messaggiverso i dispositivi RFD passano attraver-

so i nodi padri (Router). Il vantaggiodi questa topologia consiste nella ridu-zione della latenza legata alla trasmissio-ne dei messaggi e ad un incremento diaffidabilita.

Figura 3: Rete a maglia

Le configurazioni ad albero e a magliasono anche conosciute come reti multi-hop, date le loro abilita di smistamentodei pacchetti verso dispositivi multipli,mentre la rete a stella viene anche det-ta rete single-hop. Una rete basata sulprotocollo ZigBee e una rete ad accessomultiplo, nel senso che tutti i nodi han-no accesso al mezzo di comunicazione conlo stesso peso. Ci sono due tipi di mec-canismi ad accesso multiplo, denominatibeacon e non-beacon. In rete con mecca-

Copyright 2000-2007 · · · M.M.Electronics · · · http://www.mmetft.it 7

Page 8: M. Electronics M. · A norma del-l’art. 70 µe comunque consentito, per scopi di critica o discussione, il riassunto e la citazione, accompagnati dalla menzione del titolo dell’opera

Michele Marino · · · [email protected] Il protocollo ZigBeeTM

nismo non-beacon, tutti i nodi della retepossono trasmettere in qualunque istan-te non appena il canale di trasmissionee libero o inattivo. Con il meccanismobeacon invece, i nodi della rete possonotrasmettere solo in istanti di tempo pre-definiti. Il nodo Coordinator, periodica-mente, inizializza la rete con un superfra-me identificato come beacon frame e tut-ti i nodi della rete si sincronizzano conquesto superframe. Ad ogni nodo vieneassociato uno specifico slot temporale delsuperframe durante il quale e abilitato aricevere e trasmettere dati. Il superfra-me puo contenere anche uno slot comu-ne durante il quale tutti i nodi possonoaccedere al canale di comunicazione.

4 Terminologia del protocollo Zig-Bee

Nel protocollo ZigBee di definiscono iprofili dei dispositivi che non sono altroche delle semplici descrizioni dei dispo-sitivi logici e delle relative interfacce as-sociate. In generale non c’e un codiceassociato ad un profilo. Ogni blocco didati che puo essere passato tra disposi-tivi (per esempio lo stato di uno swit-ch o la lettura di un potenziometo) vienechiamato attributo. Ogni attributo vie-ne assegnato ad un identificatore che eunico per ogni dispositivo. Gli attributivengono raggruppati in cluster. Ad ognicluster viene associato un identificatoreunico. Le interfacce vengono specificatea livello di cluster e non a livello di attri-buti, anche se gli attributi vengono poitrasferiti individualmente.

Il profilo definisce il valore degli iden-tificatori (ID) degli attributi e dei clu-ster, cosı come il formato di ogni attribu-to. Per esempio, in un controllo domesti-

co di una lampada, profilo Lampada, ilcluster OnOffDRC del dispositivo di con-trollo di luminosita remoto (Dimmer Re-mote Control) contiene un solo attributo,OnOff, il quale puo avere un valore ad 8-bit senza segno, nel quale il valore 0xFFsignifica ON, il valore 0x00 significa OFFe il valore 0xF0 significa uscita bistabile.

Il profilo descrive anche quali clustersono obbligatori e quali opzionali perogni dispositivo. In aggiunta, il pro-filo potrebbe definire alcuni servizi delprotocollo ZigBee come obbligatori.

In base a queste definizioni e possibilescrivere il codice relativo all’applicazionespecifica. E’ infatti possibile scrivere ilcodice nel modo che fa piu comodo, rag-gruppando le funzioni e gli attributi inbase alle definizioni date nel profilo. Inquesto modo e possibile avere una certacompatibilita anche tra diversi dispositivicostruiti da diversi produttori.

4.1 Tipo di messaggi e binding

I dispositivi possono comunicare con al-tri dispositivi presenti nella rete se sonoa conoscenza dei relativi indirizzi di re-te. Questo tipo di messaggi vengono de-finiti come messaggi diretti. Comunque,i messaggi diretti portano ad un ecces-sivo overhead dovuto essenzialmente allaricerca e al mantenimento di tutti gli in-dirizzi di destinazione. Il protocollo Zig-Bee offre una caratteristica che semplifi-ca la comunicazione, nota come binding.Il Coordinator del protocollo ZigBee creauna tabella di accoppiamenti degli indi-rizzi a livello cluster/endpoint tra i ser-vizi e le richieste dei dispositivi nella re-te. Ogni coppia viene chiamata binding.Un binding puo essere richiesto dal di-spositivo stesso, oppure puo essere creatodal Coordinator o da un altro dispositivo.

Copyright 2000-2007 · · · M.M.Electronics · · · http://www.mmetft.it 8

Page 9: M. Electronics M. · A norma del-l’art. 70 µe comunque consentito, per scopi di critica o discussione, il riassunto e la citazione, accompagnati dalla menzione del titolo dell’opera

Michele Marino · · · [email protected] Il protocollo ZigBeeTM

Una volta creato il binding, due disposi-tivi possono comunicare tra loro attra-verso il nodo Coordinator. Il dispositivosorgente invia il messaggio al Coordina-tor, il quale replica il messaggio verso unoo piu dispositivi di destinazione. Questotipo di messaggi vengono definiti comemessaggi indiretti.

4.2 Formato messaggi del protocolloZigBee

Ogni messaggio del protocollo ZigBeeconsiste di 127 byte suddivisi tra iseguenti campi:

• MAC Header - L’intestazione delMAC contiene il campo di control-lo frame (Frame Control), il BeaconSequence Number (BSN) e le infor-mazioni di indirizzamento del mes-saggio che viene trasmesso. E’ im-portante notare che il MAC Headerpotrebbe non includere la sorgenteo la destinazione finale del messag-gio se il messaggio stesso deve pas-sare per un nodo Router. La gene-razione e l’utilizzo di questo headere trasparente al codice applicativo.

• Network Layer Header (NWH) -Questo header contiene, insieme adaltre informazioni, la sorgente attua-le e la destinazione finale del messag-gio. La generazione e l’uso di que-sto header e trasparente al codiceapplicativo.

• Application Support Sub-LayerHeader (APS) - Questo header in-clude l’identificatore del profilo, l’IDdel cluster e il punto finale di de-stinazione (endpoint) del messaggiocorrente. La generazione e l’utilizzodi questo header e trasparente aifini del codice applicativo.

• APS Payload - Questo campo con-tiene il frame del protocollo ZigBeeper l’applicazione del processo. Ilcodice applicativo e responsabile delcontenuto dell’APS Payload.

4.3 Formato frame del protocolloZigBee

Il protocollo ZigBee definisce due forma-ti di frame: il formato Key Value Pair(KVP) e il formato Message (MSG). En-trambi i frame sono associati con un IDcluster, ma i frame KVP sono pensatiper permettere il trasferimento di alcu-ne informazioni associate ad un attributousando una particolare struttura, mentrei frame MSG trasferiscono informazioniutilizando una forma strutturale libera.Il profilo dell’applicazione che si va a pro-gettare specifichera il formato del frameche dovrebbe essere usato per trasferirele informazioni e il formato di ogni fra-me MSG. Date le differenze nel formatodel frame, un cluster non puo utilizzareentrambi i formati KVP ed MSG.

4.4 Frame KVP

Un frame KVP contiene le seguentiinformazioni:

1. Conteggio transazione

2. Tipo frame

3. Transazione

• numero sequenza transazione

• tipo comando e tipo datiattributo

• identificatore attributo

• codice errore (opzionale)

• dato attributo (dimensione va-riabile)

Copyright 2000-2007 · · · M.M.Electronics · · · http://www.mmetft.it 9

Page 10: M. Electronics M. · A norma del-l’art. 70 µe comunque consentito, per scopi di critica o discussione, il riassunto e la citazione, accompagnati dalla menzione del titolo dell’opera

Michele Marino · · · [email protected] Il protocollo ZigBeeTM

Il tipo di comando indica cosa si e sup-posto di fare con l’applicazione proget-tata sulle informazioni manipolate. Persempio, il comando ”Set”, richiede di set-tare il valore dell’attributo indicato dalrelativo ID al valore indicato dal dato at-tributo, e il comando, ”Ottieni con Ac-knowledge”, richiede di inviare il valoredell’attributo fornito dall’identificatoredell’attributo stesso.

4.5 Frame MSG

Un frame MSG contiene le seguentiinformazioni:

1. Conteggio transazione

2. Tipo frame

3. Transazione

• numero sequenza transazione

• lunghezza transazione

• dati transazione

Sia il dispositivo di trasmissione chequello di ricezione devono conoscere ilformato dei dati in transazione.

5 Indirizzamento di rete

Ogni nodo nella rete ZigBee ha due in-dirizzi: un indirizzo MAC a 64-bit e unindirizzo di rete a 16-bit. Oltre a questo,ci sono altre due forme di indirizzamentomessaggi disponibili.

5.1 Estensione unica identificatoriIEEE - EUI-64

Qualunque dipositivo che comunica uti-lizzando il protocollo ZigBee deve avereun indirizzo globale unico ovvero, l’indi-rizzo MAC a 64-bit. Questo indirizzoe costituito da un campo che identifica

in modo univoco l’organizzazione (Oga-nizationally Unique Identifier - OUI) da24-bit piu 40-bit assegnati direttamen-te dal produttore del dispositivo ZigBee.L’indirizzo OUI e acquistabile dall’IEEEal fine di assicurarne l’unicita. E’ pos-sibile ottenere il proprio indirizzo OUIfacendone richiesta al seguente indirizzo:

https://standards.ieee.org/regauth/oui/forms/OUT-form.shtml

E’ evidente che se si e gia in posses-so di un indirizzo OUI per applicazioniEthernet, e possibile utilizzare lo stessoOUI anche per le applicazioni che fannouso del protocollo ZigBee.

6 Indirizzamento di rete

I dispositivi utilizzano il loro indirizzoper esteso al fine di comunicare mentrerisultano coinvolti nel processo di acces-so alla rete. Quando un dispositivo acce-de con successo ad una rete ZigBee, rice-ve un indirizzo di rete a 16-bit che vienepoi utilizzato per comunicare con gli altridispositivi presenti nella rete.

6.1 Messaggi unicast

In un messaggio unicast, l’indirizzo delnodo di destinazione viene fornito nell’in-testazione a livello MAC del pacchetto ditrasmissione. I dispositivi che possiedonoquell’indirizzo saranno i soli a ricevere imessaggi.

6.2 Messaggi broadcast

In un pacchetto broadcast, l’indirizzo didestinazione a livello MAC, e 0xFFFF.Ogni ricetrasmettitore abilitato alla ri-cezione ricevera il messaggio. Questaforma di indirizzamento viene utilizzata

Copyright 2000-2007 · · · M.M.Electronics · · · http://www.mmetft.it 10

Page 11: M. Electronics M. · A norma del-l’art. 70 µe comunque consentito, per scopi di critica o discussione, il riassunto e la citazione, accompagnati dalla menzione del titolo dell’opera

Michele Marino · · · [email protected] Il protocollo ZigBeeTM

quando si esegue l’accesso alla rete, al fi-ne di ricercare percorsi di comunicazio-ne nella rete e per eseguire altre funzio-ni di ricerca sul protocollo ZigBee. Ilprotocollo ZigBee implementa un mec-canismo di conferma passivo per i pac-chetti broadcast. Questo significa chequando un dispositivo da origine o ri-trasmette un pacchetto broadcast, restain ascolto di tutti i dispositivi ad essoadiacenti al fine di tramsettere nuova-mente il pacchetto. Se tutti i dispositi-vi adiacenti non replicano il messaggioentro un certo intervallo di tempo (nw-kPassiveAckTimeout), il pacchetto verratrasmetto nuovamente fino a quando nonsentira la ritrasmissione da tutti i dispo-sitivi adiacenti o fino a quando non sisupera il massimo tempo di trasmissione(nwkNetworkBroadcastDeliveryTime).

7 Meccanismo di trasmissione dati

In una rete tipo non-beacon, quando undispositivo vuole trasmettere un framedati, semplicemente resta in attesa fi-no a quando il canale diventa inattivo.Una volta verificato che il canale di co-municazione e libero, il dispositivo puotrasmettere il frame.

Se il dispositivo di destinazione e unFFD il relativo ricetrasmettitore e sem-pre attivo, e gli altri dispositivi posso-no trasmettere verso di lui in qualun-que istante. Questa capacita consente lacreazione delle reti con topologia a ma-glia. Diversamente, se il dispositivo eun RFD, potrebbe andare in modalita ri-sparmio energetico e quindi disabilitareil propio ricetrasmettitore. Il dispositivoRFD non sara quindi in grado di rice-vere messaggi in questo stato. Questa si-stuazione viene gestita chiedendo che tut-

ti i messaggi inviati e ricevuti dal dispo-sitivo RFD passino dal dispositivo FFDpadre. Quando il dispositivo RFD ali-mentera il proprio ricetrasmettitore, ri-chiedera i propri messaggi al dispositivoFFD che lo contiene. Se il nodo padreha memorizzato un messaggio per il no-do figlio, lo inoltrera non appena il nodofiglio diventa attivo. Questo consente aldispositivo RFD di risparmiare energia,ma richiede allo stesso tempo al dispo-sitivo FFD di avere piu memoria RAMal fine di conservare i messaggi per tut-ti i nodi figli. Se un nodo filgio non ri-chiede il messaggio per un certo intervallodi tempo (macTransactionPersistenceTi-me), il messaggio andra in time out e ilnodo padre lo eliminera dalla memoria.

7.1 Routing

Il routing consente di espandere la reteconsentendo ad un dispositivo di entrarenella rete anche se questo e posizionatoin una regione oltre la copertura radiodel Coordinator del protocollo ZigBee.

Il tipo di routing desiderato per unmessaggio e indicato nel momento in cuiviene inviato il messaggio. Esistono treopzioni di routing:

• SUPPRESS - Se in una rete a magliaviene trovato un router, il messaggioviene trasferito attraverso quel rou-ter. In caso contrario, il messaggioviene trasferito attraverso l’alberodella rete.

• ENABLE - Se in una rete viene tro-vato un router, il messaggio vienetrasferito attraverso quel router. Senon viene trovato nessun nodo dismistamento dati, il router puo av-viare una ricerca per trovare un per-corso di smistamento dati. Quando

Copyright 2000-2007 · · · M.M.Electronics · · · http://www.mmetft.it 11

Page 12: M. Electronics M. · A norma del-l’art. 70 µe comunque consentito, per scopi di critica o discussione, il riassunto e la citazione, accompagnati dalla menzione del titolo dell’opera

Michele Marino · · · [email protected] Il protocollo ZigBeeTM

la ricerca viene completata, il mes-saggio verra inviato lungo il percor-so calcolato. Se il router non e ingrado di smistare i dati, inviera ilmessaggio lungo l’albero della rete.

• FORCE - Se il router e in grado dicercare percorsi di smistamento da-ti nella rete, avviera la ricerca di unpercorso anche se e gia esistente unpercorso valido. Quando la ricercaviene portata a termine, il messaggioverra trasferito lungo il nuovo per-corso calcolato. Se il router non hala possibilita di trasferire il messag-gio, questo sara trasferito sull’albe-ro delle rete ZigBee. Questa opzio-ne dovrebbe essere usata con cautelain quanto genera molto traffico sullarete. In genere viene utilizzata perriparare un router fuori uso.

8 Associazione di rete

La rete basata sul protocollo ZigBee vie-ne inizializzata dal Coordinator. Allapartenza, il Coordinator esegue la ricer-ca di altri Coordinator di rete ZigBee nelproprio campo di azione. In base all’e-nergia presente nel canale e al numero direti trovate su ogni canale disponibile, ilCoordinator stabilisce la propria rete eseleziona un identificatore PAN ID a 16-bit unico. Una volta creata la nuova re-te, i router e i dispositivi del protocolloZigBee possono entrare nella rete.

Formata la rete, e possibile che a cau-sa di cambiamenti fisici, altre reti possa-no sovrapporsi creando un conflitto sulPAN ID. In questa situazione, un nodoCoordinator potrebbe avviare una pro-cedura per la risoluzione del conflitto suiPAN ID che porta uno dei Coordinatora cambiare PAN ID e/o canale. Il Coor-

dinator che esegue il cambiamento devecomunicare la modifica a tutti i suoi di-spositivi figli in modo che questi possanoadeguarsi alla nuova configurazione.

I dispositivi del protocollo ZigBee me-morizzano informazioni sugli altri nodidella rete, includendo nodi padri e figli, inun’area di memoria non-volatile chiama-ta ”neighbor table”. All’accensione, seun dispositivo figlio determina che facevaparte di una rete attraverso la ”neighbortable”, potrebbe eseguire una proceduradi notifica al fine di localizzarsi nuova-mente all’interno della rete. I dispositi-vi che ricevono la notifica faranno unaricerca nella propria ”neighbor table” everificano se il dispositivo che ne ha fat-to richiesta e uno dei figli. Se e cosı, ildispositivo padre informera il dispositivofiglio del riconoscimento all’interno del-la rete. Se la richiesta di notifica fallisceoppure il dispositivo figlio non e presentenella ”neighbor table”, allora tentera dientrare nella rete come nuovo dispositivo.Il dispositivo generera quindi una lista didispositivi padri potenziali e cerchera dientrare in una rete esistenze alla massimaprofondita.

Una volta entrato in rete, un disposi-tivo puo dissociarsi dalla rete per via diun messaggio di abbandono da parte deldispositivo padre oppure da una richiestadi dissociazione del dispositivo stesso.

Il tempo richiesto da un dispositivo perla determinazione dell’energia del canalee delle reti disponibili in ogni canale especificato da un parametro presente nelfirmware per processori Microchip (Scan-Duration). Per la banda di frequenza a2.4GHz, il tempo di scansione in secon-di viene calcolato in base alla seguenterelazione:

0.01536 · (2ScanDuration + 1) (1)

Copyright 2000-2007 · · · M.M.Electronics · · · http://www.mmetft.it 12

Page 13: M. Electronics M. · A norma del-l’art. 70 µe comunque consentito, per scopi di critica o discussione, il riassunto e la citazione, accompagnati dalla menzione del titolo dell’opera

Michele Marino · · · [email protected] Il protocollo ZigBeeTM

I dispositivi Router e i dispositivi Enddel protocollo ZigBee eseguono una solascansione per determinare le reti dispo-nibili, ma il dispositivo Coordinator neesegue due, la prima delle quale al fine didetemrinare l’energia nel canale e la se-condo per determinare le reti disponibili.La specifica della durata della scansionedefinisce quindi il tempo di start-up delsistema complessivo.

9 La stack Microchip

Microchip mette a disposizione una stackscritta in C da utilizzare con i propriPIC. Questa permette di implementaree utilizzare in modo semplice e intuitivoil protocollo ZigBee.

9.1 Composizione di un nodo hard-ware

Per creare un nodo del protocollo Zig-Bee e necessario avere a disposizione iseguenti componenti:

• microcontrollore Microchip con in-terfaccia SPI

• ricetrasmettitore RF MicrochipMFR24J40

• antenna a monopolo o a microstri-scia

Come mostra la figura 4, il micro-controllore (master) si connette al mo-dulo RF (slave) mediante il bus SPI ealcuni segnali di controllo. Le risorsehardware richieste dal PIC18F per l’im-plementazione della stack sono riportatenella tabella 4.

Chiaramente i pin RC0, RC1, RC2possono essere cambiati a piacere andan-do a modificare le relative procedure del-la stack. Il flusso di progetto permette

Figura 4: Struttura di un nodo hardware

di utilizzare sia un’antenna a bipolo cheun’antenna a microstriscia. La tensionedi alimentazione e di 3.3V, che puo es-sere fornita anche mediante una batte-ria. Tipicamente, sia i Coordinator che iRouter vengono alimentati dall’alimenta-zione principale, mentre i dispositivi Endpossono funzionare a batteria.

9.2 L’analizzatore di reti wireless

Insieme al codice sorgente, la Microchipfornisce anche un software per analiz-zare le reti wireless chiamato ZENA. Iltool consente inoltre di creare file sorgentipersonalizzati per l’applicazione specifi-ca. La versione dimostrativa non permet-te l’analisi in tempo reale delle reti masolo di visualizzare il traffico memorizza-to in precendenza. Il pacchetto completodella stack si puo scaricare e installareliberamente dal sito della Microchip.

9.3 Struttura della stack

I file sorgenti utilizzati dalla stack sononumerosi e al fine di mantenere un cer-to ordine e compatibilita, i file che so-no comuni ad altre applicazioni vengo-no memorizzati in una directory diver-sa da quelli necessari all’implementazio-ne del protocollo ZigBee. I file relativialla stack contengono tutta la logica disupporto per tutti i tipi di applicazionedel protocollo ZigBee. E’ evidente che, in

Copyright 2000-2007 · · · M.M.Electronics · · · http://www.mmetft.it 13

Page 14: M. Electronics M. · A norma del-l’art. 70 µe comunque consentito, per scopi di critica o discussione, il riassunto e la citazione, accompagnati dalla menzione del titolo dell’opera

Michele Marino · · · [email protected] Il protocollo ZigBeeTM

Risorsa DescrizioneINT0 accetta interrupt provenienti dal ricetrasmettitore MRF24J40TMR0 temporizzazioneRC0 selezione chipRC1 regolatore tensione/wake-upRC2 reset ricetrasmettitoreRC3 SPI SCKRC4 SPI SDIRC5 SPI SDO

Tabella 4: Risorse richieste al PIC18F

base all’applicazione che si va a proget-tare, verra utilizzata solo una parte dellalogica a disposizione. Questo viene sta-bilito andando a modificare le definizioninel file zigbee.def. Chiaramente ogni ap-plicazione avra il suo file di definizione.Questo approccio consente di utilizzarefile sorgenti comuni per applicazioni di-verse e generare il relativo codice mac-china facendo riferimento solo al file didefinizione.

9.4 Primo esempio applicativo

Per poter implementare il protocollo Zig-Bee e necessario avere a disposizione iltool di sviluppo software MPLAB, sca-ricabile gratuitamente dal sito della Mi-crochip. Lo sviluppo della prima appli-cazione di esempio riguarda i seguentipassi:

• assicurarsi di aver installato corret-tamente il pacchetto relativo allastack Microchip

• lanciare il tool MPLAB IDEe aprire il progetto situa-to in *\DemoCoordinator\DemoCoordinator.mcp per l’ap-plicazione relativa al Coordinator,*\ DemoRFD\DemoRFD.mcp per

l’applicazione relativa ad un RFD,*\DemoRouter\DemoRouter.mcpper l’applicazione relativa all’imple-mentazione di un Router1 (figura5)

• impostare tutte le opzioni relative almicrocontrollore in uso (tipo oscil-latore, configurazione WatchDog,BOREN, ecc.)

• compilare il progetto usando ilcomando build2 (figura 6)

• se la compilazione non viene porta-ta a termine, controllare le imposta-zioni di compilazione e le opzioni diprogetto

• programmare il microcontrollore conil file .hex generato dalla compila-zione (per esempio DemoCoordina-tor.hex )

Come impostazione predefinita ai nodiEnd sono disabilitati i servizi di binding

1L’asterisco indica il percorso scelto duran-te l’installazione del pacchetto. Nel seguito deldiscorso, tale indicazione verra omessa.

2 Assicurarsi che i file sorgenti si trovino nel-la directory MpZBee posizionata nella radice deldisco rigido.

Copyright 2000-2007 · · · M.M.Electronics · · · http://www.mmetft.it 14

Page 15: M. Electronics M. · A norma del-l’art. 70 µe comunque consentito, per scopi di critica o discussione, il riassunto e la citazione, accompagnati dalla menzione del titolo dell’opera

Michele Marino · · · [email protected] Il protocollo ZigBeeTM

Figura 5: Menu apertuta progetto

e di ricerca. Chiaramente i servizi posso-no essere abilitati eliminando il commen-to alle relative stringhe di definizione nelfile .def (nelle applicazioni dimostrativepresentate, si tratta del file zigbee.def ).

9.4.1 Binding sui dispositivi End

Se entrambi i nodi hanno il binding abi-litato (]define USE BINDING non com-mentato), un nodo3 switch manda il suomessaggio a uno o piu nodi light attra-verso il meccanismo del binding e dellamessagistica indiretta. Prima di inviareun messaggio indiretto e necessario crea-re un binding tra il nodo switch e il no-do light. La gestione del binding vieneeffettuata attraverso un pulsante sulla li-nea RB5. Premendo il pulsante sul nodoCoordinator si avvia la richiesta di bin-ding al dispositivo End. Premendo il pul-sante sul nodo RFD (End) si ottiene ilbinding richiesto. Nel caso in cui non ve-

3Con i nomi switch e light ci si riferisce nuo-vamente all’esempio del controllo di luminositadi una lampada.

Figura 6: Menu compilazione progetto

nisse premuto il pulsante sul nodo RFDentro circa 5 secondi, la richiesta di bin-ding da parte del nodo Coordinator vain time out e il processo di associazionedeve essere ripetuto. Eseguito il binding,il nodo switch puo ora inviare messaggiindiretti al nodo light.

9.4.2 Ricerca di dispositivi

Se entrambi i nodi sono abilitati al-la ricerca di nuovi dispositivi (] defi-ne USE BINDINGS non commentato),il nodo switch puo inviare messaggi alnodo light attraverso il meccanismo del-la messagistica diretta. Prima di inviareun messaggio diretto, il nodo switch de-ve individuare l’indirizzo di rete del nodolight. Supponiamo, per semplicita, cheil nodo switch conosca l’indirizzo MACdel nodo light. Anche in questo caso, laprocedura di ricerca viene gestita attra-verso la linea RB5. Premendo il pulsan-te sul nodo Coordinator viene avviata laprocedure di ricerca dispositivi attraver-so un messaggio bradcast sulla rete. La

Copyright 2000-2007 · · · M.M.Electronics · · · http://www.mmetft.it 15

Page 16: M. Electronics M. · A norma del-l’art. 70 µe comunque consentito, per scopi di critica o discussione, il riassunto e la citazione, accompagnati dalla menzione del titolo dell’opera

Michele Marino · · · [email protected] Il protocollo ZigBeeTM

logica a basso livello del nodo RFD vedrae risposndera a questo messaggio senzanessun supporto da parte del layer ap-plicazioni. Quando il Coordinator rice-ve la risposta da parte del nodo RFD, ein grado di comunicare con il nodo lightinviando messaggi diretti. Se entrambi inodi sono configurati come switch o light,premendo il pulsante sulla linea RB5, en-trambi i nodi prenderanno come indirizzodi rete quello del Coordinator. In que-sta configurazione ogni nodo e in gradodi interscambiare messaggi diretti versol’altro nodo.

9.4.3 Invio dei messaggi

Una volta creato il binding o scoperto unindirizzo di rete, il nodo switch puo invia-re messaggi al nodo light per accendereo spegnere un led o una lampada. L’in-vio del messaggio viene gestito dalla lineaRB4 del PICDEM Z. Se il messaggio ediretto, l’applicazione del comando verranotificata quando la stack riceve una ri-sposta MAC per la trasmissione. Se ilmessaggio e indiretto, l’applicazione delcomando verra notificata quando la stackmemorizza il messaggio per l’ultima tra-smissione. Quando l’applicazione vienenotificata e il nodo light riceve il coman-do, viene invertito il livello logico dellalinea RA1 dove risulta essere collegato ilcarico (un led nel caso del PICDEM Z).

9.5 Utilizzo della stack Micro-chip

La progettazione di un sistema basatosul protocollo ZigBee si basa sui seguentipassi:

• ottenere un indirizzo OUI

• determinare la copertura radio inbase al data rate e alla geografiadell’applicazioe richiesta

• selezionare il microcontrollore adat-to all’applicazione

• sviluppare l’applicazione Zig-Bee usando come supporto la stackmessa a disposizione dalla Microchip

• ottenere tutte le certificazioni per gliapparati RF

Lo sviluppo dell’applicazione, invece,si basa sui seguenti passi:

1. determinare il profilo del sistema

2. determinare la struttura degli end-point che ogni dispositivo andra adutilizzare

3. creare una nuova directory di pro-getto nella quale andare a crearetutti i file sorgenti dell’applicazione

4. utilizzare il tool ZENA per generarei file di configurazione in base al tipodi dispositivo, alla configurazione ealla struttura degli endpoint

5. sviluppare l’applicazione partendodai modelli messi a disposizionedalla Microchip

6. includere il codice e le modifiche nelfile modello

9.6 Interfacciamento con la stack

Per poter accedere alle funzioni del pro-tocollo ZigBee, il sorgente dell’applica-zione deve contenere il seguente header:]include zAPL.h

Copyright 2000-2007 · · · M.M.Electronics · · · http://www.mmetft.it 16

Page 17: M. Electronics M. · A norma del-l’art. 70 µe comunque consentito, per scopi di critica o discussione, il riassunto e la citazione, accompagnati dalla menzione del titolo dell’opera

Michele Marino · · · [email protected] Il protocollo ZigBeeTM

Il Coordinator del protocollo necessi-ta inoltre di variabili di supporto per te-nere traccia delle primitive che vengonoeseguite dalla stack:

ZIGBEE PRIMITIVE currentPrimiti-ve;

Un router del protocollo ZigBee o undispositivo End necessitano anche loro ditenere traccia delle primitive in esecuzio-ne. In aggiunta, questi necessitano di al-tre variabili di supporto per implementa-re le procedure di ricerca e associazionead una rete:

NETWORK DESCRIPTOR * cur-rentNetworkDescriptor;ZIGBEE PRIMITIVE currentPrimitive;NETWORK DESCRIPTOR * Network-Descriptor;

Infine e necessario configurare tutti ipin per l’interfacciamento con il moduloricetrasmettitore. Il processo di configu-razione viene automatizzato attraverso iltool ZENA.

Prima di utilizzare la stack, e necessa-rio inizializzarla. Devono essere abilitatele interrupt:

ZigBeeInit();RCONbits.IPEN = 1;INTCONbits.GIEH = 1;

A questo punto l’applicazione e in gra-do di interfacciarsi con la stack attra-verso le primitive definite nel protocolloZigBee e nelle specifiche IEEE 802.15.4.Le operazioni della stack vengono ese-guita chiamando la funzione ZigBeeTa-sks(). L’operazione verra eseguita finoa quando il percorso di esecuzione del-la primitiva richiesta non sara comple-to. Poiche e possibile eseguire una so-la primitiva alla volta, viene utilizzatauna singola struttura dati per memoriz-zare tutti i parametri della primitiva inesecuzione. La struttura e visibile nel fi-

le di header ZigBeeTasks.h. Processatauna primitiva, e importante fare atten-zione a non mandare l’esecuzione in loop,indicando la prossima primitiva da ese-guire o mandando l’esecuzione in stallo(NO PRIMITIVE. I file di modello messia disposizione dalla Microchip includonole impostazioni di processamento predefi-niti per molte primitive. L’utilizzo di dueprimitive richiedono l’utilizzo di codi-ce aggiuntivo:APSDE DATA indicatione NO PRIMITIVE. La figura 7 mostrala struttura base dell’applicazione.

Figura 7: Struttura base dell’applicazio-ne

9.7 Creazione e accesso ad una rete

Anche la creazione della rete vieneriportata nel file di modello. Ilprocesso viene inizializzato nella pri-mitiva NO PRIMITIVE. Se il dispo-sitivo e un Coordinator e, se none ancora stata formata nessuna re-te, questo avviera il processo relati-vo alla formazione di una rete attar-verso la primitiva NLME NETWORKFORMATION request. Se il dispositivonon e un Coordinator, tentera di acce-dere alla rete. Se un dispositivo era giapresente nella rete, tentera di accederenuovamente nella rete come orfano attra-verso la primitiva NLME JOIN request

Copyright 2000-2007 · · · M.M.Electronics · · · http://www.mmetft.it 17

Page 18: M. Electronics M. · A norma del-l’art. 70 µe comunque consentito, per scopi di critica o discussione, il riassunto e la citazione, accompagnati dalla menzione del titolo dell’opera

Michele Marino · · · [email protected] Il protocollo ZigBeeTM

con il parametro RejoinNetwork settatoal valore TRUE. Se l’accesso fallisce o ildispositivo non era in una rete, tentera dientrare come nuovo dispositivo con la pri-mitiva NLME NETWORK DISCOVE-RY request. La primitiva permette di re-levare le reti disponibili nel campo di co-pertura radio del dispositivo. Il codiceesecutivo selezionera una delle reti dispo-nibili e cerchera di accedervi attraverso laprimitiva NLME JOIN request con il pa-rametro RejoinNetwork settato al valorebooleano FALSE.

9.8 Ricezione dei messaggi

La notifica della ricezione di un messag-gio viene fornita attarverso la primiti-va APSDE DATA indication. Quando laprimitiva viene richiamata, i parametriutilizzati dalla stessa primitiva conten-gono informazioni sul messaggio, mentreil messaggio ricevuto viene memorizza-to in un buffer. Il messaggio viene suc-cessivamente estratto dal buffer attraver-so la funzione APLGet(). Il parametroDstEndpoint indica l’endpoint di destina-zione del messaggio. Se l’endpoint e va-lido, il messaggio puo essere processato.La figura 8 mostra il modello di codiceutilizzato per la ricezione dei messaggi.

9.9 Invio dei messaggi

La stack Microchip per il protocollo Zig-Bee prevede l’invio di un solo messag-gio alla volta. I passi da seguire sono iseguenti:

1. verificare che il layer applicazione siapronto per l’invio di un nuovo mes-saggio verificando che il valore ritor-nato dalla primitiva ZigBeeReady()sia al valore booleano TRUE.

2. bloccare l’accesso alla primitiva Zig-BeeReady() attraverso la primitivaZigBeeBlockTx(). Un eventuale ac-cesso alla primitiva ZigBeeReady()ritornera il valore FALSE

3. trasferire il contenuto del messaggionell’array TxBuffer, usando la varia-bile TxData per indirizzare le cel-le dell’array. Completato il trasferi-mento, la variabile TxData dovreb-be puntare alla prima cella dell’arraycontenente il messaggio

4. caricare la primitiva APSDE DA-TA request

5. settare il parametro currentPrimiti-ve a APSDE DATA request, e chia-mare la primitiva ZigBeeTasks().

Tipicamente i messaggi vengono in-viati dall’applicazione in due posizionidifferenti:

• nel processo APSDE DATAindication, in risposta ad unmessaggio ricevuto

• nel processo NO PRIMITIVE, in ri-sposta ad un evento dell’applicazio-ne.

Il processo di invio messaggi e identi-co per entrambe le locazioni. E’ porreattenzione alle seguenti note:

• ogni frame APS deve avere unidentificatore di transazione unico.Questo viene ottenuto dalla stackmediante la funzione APLGetTran-sID()

• TxData deve puntare alla prossimalocazione disponibile, cosı TxBufferviene caricata usando un indirizza-mento ad incrementi successivi

Copyright 2000-2007 · · · M.M.Electronics · · · http://www.mmetft.it 18

Page 19: M. Electronics M. · A norma del-l’art. 70 µe comunque consentito, per scopi di critica o discussione, il riassunto e la citazione, accompagnati dalla menzione del titolo dell’opera

Michele Marino · · · [email protected] Il protocollo ZigBeeTM

Figura 8: Codice ricezione messaggio

• l’endpoint di destinazione deve esse-re gia stato identificato e memoriz-zato nella variabile destinationEnd-point

• l’indirizzo di rete a 16-bit del di-spositivo di destinazione deve esserestato gia identificato e memorizzatonella variabile destinationAddress

• esiste la possibilita di richiedere cheil messaggio venga smistato nellarete, se possibile.

Lo stato di trasmissione del messaggioverra restituito dalla primitiva APSDEDATA confirm. Se il messaggio non vie-ne trasmesso con successo, la stack ten-tera automaticamente l’invio, un cer-to numero di volte stabilito nella va-riabile apscMaxFrameRetries. La figu-ra 9 mostra relativo alla trasmissione deimessaggi.

9.10 Richiesta e ricezione datida un RFD

Poiche gli RFD normalmente disabilitanol’alimentazione dei propri ricetrasmetti-

tori quando vanno in modalita risparmioenergetico, essi devono richiedere i mes-saggi quando riattivano le relative sezionia radio frequenza. Questo avviene attra-verso la primitiva NLME SYNC request.La figura 10 mostra una sequenza ti-pica per portare l’RFD in modalita ri-sparmio energetico e una procedura perla riattivazione mediante timer Watch-dog o pulsante esterno. E’ possibilemandare in modalita risparmio energeti-co il dispositivo nelle seguenti condizionioperative:

• non c’e nessuna primitiva del pro-tocollo ZigBee pronta ad essereprocessata

• la stack non sta eseguendo nessuncompito in background

• la richiesta di dati precedente e stataportata a termine

• tutti i processi relativi alla specificaapplicazione sono stati completati.

Copyright 2000-2007 · · · M.M.Electronics · · · http://www.mmetft.it 19

Page 20: M. Electronics M. · A norma del-l’art. 70 µe comunque consentito, per scopi di critica o discussione, il riassunto e la citazione, accompagnati dalla menzione del titolo dell’opera

Michele Marino · · · [email protected] Il protocollo ZigBeeTM

Figura 9: Codice trasmissione messaggio

Quando il dispositivo RFD richiede imessaggi al nodo padre, riceve le seguentirisposte:

• se il nodo padre ha messaggi me-morizzati per il dispositivo RFD, liinviera uno alla volta, e il dispo-sitivo RFD generera una primitivaAPSDE DATA indication

• se il nodo padre non ha nessun mes-saggio memorizzato, il dispositivoRFD generera una primitiva NL-ME SYNC confirm con uno statoSUCCESS.

Se l’RFD non riceve nessuna rispostadal nodo padre, generera una primiti-va NLME SYNC confirm con una statoNWK SYNC FAILURE.

9.11 Trasmissioni sicure

La stack Microchip supporta tutte i settemodi di sicurezza dei pacchetti in transi-to nella rete, definiti nelle specifiche delprotocollo ZigBee. Le modalita di pro-tezione possono essere suddivisi in tregruppi:

• Message Integrity Code (MIC) -assicura l’integrita del pacchetto.Quando viene incluso nel pacchet-to di trasmissione, assicura che ilpacchetto, completo di header e da-ti, non ha ricevuto nessuna modificadurante la trasmissione. I dati nonsono criptati in questa modalita

• Encryption - consente di criptare idati trasmessi. Il testo in chiaro con-tenuto nei dati trasmessi non puoessere ottenuto se non si e a cono-

Copyright 2000-2007 · · · M.M.Electronics · · · http://www.mmetft.it 20

Page 21: M. Electronics M. · A norma del-l’art. 70 µe comunque consentito, per scopi di critica o discussione, il riassunto e la citazione, accompagnati dalla menzione del titolo dell’opera

Michele Marino · · · [email protected] Il protocollo ZigBeeTM

Figura 10: Codice ricezione messaggi RFD

scenza della chiave usata nella cifra-tura. Questa modalita non verifical’integrita o il contenuto dell’headerdel pacchetto, ma include la sorgen-te del pacchetto originale e il framecounter

• ENC-MIC - e una combinazione deigruppi descritti nei primi due pun-ti. In questa modalita i dati vengo-no cifrati e allo stesso tempo vienegarantita l’integrita del pacchetto.

Chiaramente e possibile usare trasmis-sioni non protette attarverso il codice0x00. La capacita di ogni modo disicurezza viene riportato nella figura 11.

Il protocollo ZigBee definisce suppor-ti diversi per la sicurezza di dispositivicommerciale o residenziali, in base all’u-so della chiave di cifratura. La differenza

sostanziale tra i due consiste nel fatto chementre nella modalita residenziale vieneutilizzata una chiave unica di rete tra larete e i pacchetti, nella modalita commer-ciale viene richiesta la generazione di unachiave si sicurezza individuale tra ognicoppia di nodi in comunicazione. Allostato attuale, la stack Microchip prevedel’utilizzo della sola modalita residenziale.

La stack supporta reti con o senza chia-vi di sicurezza preconfigurate. La sicu-rezza viene supportata sia sul layer NWKche sul layer APL, in base alle esigenzedell’applicazione. E’ possibile abilitarneil supporto anche sul layer MAC.

Il protocollo di sicurezza ZigBee si spe-cifica dunque combinando tre elementi:

• il frame counter

• l’indirizzo esteso della sorgente (nel

Copyright 2000-2007 · · · M.M.Electronics · · · http://www.mmetft.it 21

Page 22: M. Electronics M. · A norma del-l’art. 70 µe comunque consentito, per scopi di critica o discussione, il riassunto e la citazione, accompagnati dalla menzione del titolo dell’opera

Michele Marino · · · [email protected] Il protocollo ZigBeeTM

Figura 11: Servizi di sicurezza del ZigBee

caso in cui sia attivo il layer MAC);l’indirizzo non esteso della sorgentenel caso in cui siano attivi i layerNWK e APL

• il key sequence number (per il layerMAC) o il security control byte (peri layer NWK a APL).

Materiale, application note e codi-ci sorgenti possono essere scaricati di-rettamente dal sito della Microchip(www.microchip.com).

Copyright 2000-2007 · · · M.M.Electronics · · · http://www.mmetft.it 22

Page 23: M. Electronics M. · A norma del-l’art. 70 µe comunque consentito, per scopi di critica o discussione, il riassunto e la citazione, accompagnati dalla menzione del titolo dell’opera

Michele Marino · · · [email protected] Il protocollo ZigBeeTM

Riferimenti bibliografici

[1] Microchip, ‘Microchip Stack for the ZigBeeTM Protocol‘, Application noteAN965.

[2] Microchip, ‘MRF24J40 Data Sheet‘.

[3] ZigBee Alliance, ‘Wireless Control That Simply Works‘, http://www.zigbee.org

Copyright 2000-2007 · · · M.M.Electronics · · · http://www.mmetft.it 23