corsozigbee
TRANSCRIPT
-
8/19/2019 CorsoZigbee
1/34
-
8/19/2019 CorsoZigbee
2/34
C a m b r i d g
e T e c n o l o g y
y Elettronica In ~ Dicembre 2008 / Gennaio 2009 115
on il termine ZigBee viene definito il proto-collo di comunicazione di alto livello, basato
sullo standard IEEE 802.15.4, creato per l’im-plementazione e la standardizzazione di retiWireless PAN (Personal Area Network) a bassavelocità di comunicazione. Il protocollo ZigBee (avolte indicato anche come stack ZigBee, o stan-dard ZigBee) prevede lo scambio di dati nellefrequenze radio assegnate per scopi industriali,scientifici e medici (indicate genericamente con iltermine ISM) a 433 o 868 MHz in Europa, 315 o
915 MHz negli Stati Uniti e 2,4 GHz a diffusionepraticamente mondiale. ZigBee nasce come alter-nativa, più semplice ed economica, ad altri tipipreesistenti di standard per WPANs, come, percitarne due tra i più diffusi, Bluetooth e Wi-Fi. Lostandard prevede comunicazioni a bassa velocità,realizzate con trasmettitori di bassa potenza, oltrealla creazione di topologie di rete anche moltocomplesse e ad elevato numero di nodi. Una dellecaratteristiche peculiari delle WPAN ZigBee è lapossibilità di garantire la comunicazione tra nodi
Si sta facendo strada nel panorama dei dispositivi per reti wireless abreve distanza: è ZigBee, un protocollo di comunicazione che ha destatol’interesse di tanti costruttori. Scopriamolo insieme. Prima puntata.
di FRANCESCO FICILI
CORSO
ZigBee®
in collaborazione con
C
-
8/19/2019 CorsoZigbee
3/34
116 Dicembre 2008 / Gennaio 2009 ~ Elettronica In
che non si “vedono” direttamente,sfruttando il mesh networking. Tipi-ci target applicativi sono le appli-cazioni embedded che richiedanotransfer-rate non elevati e consumiridotti. La finalità dello standard èquella di definire una tipologia direte wireless non mirata, economicae autogestita, che possa essere uti-lizzata per scopi quali il monitorag-gio e il controllo industriale, le retidi sensori, la domotica, ecc.L’aggiornamento, la revisione e lapubblicazione dello standard, sonoaffidati alla ZigBee Alliance, unconsorzio di aziende (il cui logo èillustrato nella Fig. 1) del settoretelecomunicazioni ed elettroni-ca. La specifica ZigBee 1.0 è stata
approvata il 14 dicembre 2004 edattualmente la ZigBee Alliance ha iniziato alavorare sulla versione 1.1.I membri della ZigBee Alliance sono divi-si in tre livelli: Promoters, Participants edAdopters. Attualmente l’adesione a livelloAdopters costa a un’azienda circa 3500 dollariall’anno e permette l’accesso alle specifiche eal relativo uso per scopi commerciali. Al gior-no d’oggi si contano circa 280 aziende affiliatealla ZigBee Alliance e tra i promotori figura-no società del calibro di ST Microelectronics,
Samsung, TexasInstruments, Phili-ps, Motorola, Free-scale, Siemens edaltre ancora. Tra iParticipants figu-rano aziende del
Fig. 2 - Rappresentazione dello standard ZigBee
secondo il modello ISO/OSI
settore elettronico e produttori di microcon-trollori come Microchip Technology, Atmel,Fujitsu, Renesas, Telit, ma anche aziende disettori non strettamente connessi con quellodelle telecomunicazioni, come ad esempioFedEx e Black&Decker.
DESCRIZIONE DELLO STANDARD
Per analizzare lo standard ZigBee partiamodalla sua “carta d’identità”, ovvero, parlandoin termini di protocolli di comunicazione, dal-
la sua rappresentazione secondo il modelloISO/OSI, una cui schematizzazione semplifi-cata è visibile nella Fig. 2.Come si vede, il livello Fisico ed il livelloMAC fanno parte della specifica 802.15.4; laspecifica ZigBee aggiunge altri due livelli, chesono un livello Network (NWK) ed un livello
Application (APL). I riquadri in bianco identificano i SAP (ServiceAccess Point), che costituiscono ipunti di accesso e comunicazio-ne tra due layer (livelli o strati)contigui.Prima di addentrarsi nella descri-zione dei vari strati che lo com-pongono, è opportuno fare unpiccolo inciso sulle tipologie di di-spositivi ammessi dallo standardZigBee, in modo da poter megliocomprendere i paragrafi cheseguiranno. Lo standard ZigBeeammette tre differenti tipologie didispositivi.
Fig.1 - Logo della ZigBee Alliance.
Confronto tra le più diffuse tecnologie wireless
-
8/19/2019 CorsoZigbee
4/34
Elettronica In ~ Dicembre 2008 / Gennaio 2009 117
• ZigBee Coordinator: è il dispositivo più“intelligente” tra quelli disponibili, costi-tuisce la radice di una rete ZigBee e puòoperare da ponte tra più reti. Ci può essereun solo Coordinator in ogni rete. Assolvefunzioni vitali, come la creazione della retestessa, la selezione del canale RF e l’asse-gnazione degli identificativi. È, inoltre, ingrado di memorizzare informazioni sulla
rete creata e può agire come deposito per lechiavi di sicurezza. Un malfunzionamentodi questo dispositivo può ripercuotersi sulresto della rete o addirittura causarne il blocco.
• ZigBee Router: agisce come router interme-dio, passando i dati da e verso altri disposi-tivi. In una PAN può essercene più di uno;esso dispone di un certo livello di intelligen-za, in quanto implementa complicati algo-ritmi di routine per la selezione dei percorsimigliori da e verso un determinato nodo.
Un malfunzionamento diuno di questi dispositivinon pregiudica il funzio-namento di tutta la rete,ma può renderne inutiliz-zabile una parte.
• ZigBee End Device:questo dispositivo inclu-de solo le funzionalitàminime per dialogarecon il loro nodo parente(Coordinator o Router);può essercene più diuno e non può trasmet-tere dati provenienti daaltri dispositivi. I ZigBeeEnd Device sono i nodiche richiedono il minorquantitativo di memoriae quindi risultano spessopiù economici rispetto aiRouter ed ai Coordinator.
Un esempio di una semplice rete ZigBee nellaquale sono presenti tutti e tre i tipi di disposi-tivi è illustrato nella Fig. 3.Passiamo ora alla descrizione dei vari stratiche compongono lo stack ZigBee, partendodal basso verso l’alto e servendoci della Fig. 4,che non è altro se non una rappresentazionepiù dettagliata, nella quale sono evidenziatianche interfacce e sublayer, dell’architettura
dello stack ZigBee.
Livello FisicoIl livello fisico è definito dallo standard IEEE802.15.4, ed ha il compito di fornire l’interfac-cia tra il canale trasmissivo ed il livello MACdello standard. Secondo le specifiche, il livellofisico deve essere in grado di fornire i seguen-ti servizi:• attivazione e disattivazione del transceiver;• rilevamento dell’energia del canale in uso;• rilevamento della qualità del collegamento;
Fig. 3
Esempio di rete
ZigBee.
Fig. 4
Rappresentazione
dettagliata
dello stack ZigBee
-
8/19/2019 CorsoZigbee
5/34
118 Dicembre 2008 / Gennaio 2009 ~ Elettronica In
sono rispettivamente il PHY Layer Manage-ment Entity Service Access Point (PLME-SAP)ed il PHY Data Service Access Point (PD-SAP).Un discorso a parte lo merita la tecnica di
accesso al canale trasmissivo, che secondole specifiche deve essere di tipo CSMA/CA.CSMA/CA è l’acronimo inglese di CarrierSense Multiple Access with Collision Avoi-dance, ovvero accesso multiplo tramite ascol-to del canale con elusione delle collisioni. Nelmomento in cui una stazione vuole tentareuna trasmissione, ascolta il canale (Listen-be-fore-Transmit). Se lo trova occupato, la sta-zione attiva un timer di durata casuale (dettotempo di backoff) che viene decrementatosolo durante i periodi di inattività del canale.
Quando il timer scatta, la stazione fa un altrotentativo.Ciò permette di evitare, su basestatistica, che più nodi tentino diaccedere al canale contempora-neamente.Si è scelto di utilizzare questatecnica perché nelle reti wirelessnon è possibile rilevare le colli-sioni, come si fa nel CSMA/CD(Carrier Sense Multiple Accesswith Collision Detection), motivoper cui le collisioni devono esse-re evitate piuttosto che rilevate.
Livello MAC Anche il livello Medium AccessControl (MAC) come il livelloFisico, è definito dallo standardIEEE 802.15.4 e secondo le spe-cifiche deve essere in grado difornire i seguenti servizi:
• supporto all’avvio ed al man-
• selezione della frequenza di comunicazione;• fornitura dei servizi per l’accesso al canale
trasmissivo con la tecnica del CSMA/CA;• trasmissione e ricezione dei dati.
Il livello fisico è concettualmente costituitoda due entità distinte, la prima delle quali èun’entità di comando generalmente chiamataPHY Layer Management Entity (PLME) checostituisce la vera e propria interfaccia conil livello MAC; la seconda è invece un’entitàdeputata esclusivamente al trasferimentodei dati e viene generalmente indicata conil nome di PHY Layer Data Entity Service(PLDE). Entrambe le entità possiedono unService Access Point dedicato, che viene
utilizzato dal livello MAC per gestire l’interolivello Fisico e comunicare con esso; i due SAP
Frequenzaoperativa [GHz]
Potenza RF Interfaccia di
comunicazioneAntenne
disponibili Package Note
Aurel 2,41mW (moduli xLI)
20mW (moduli xHI)UART Chip o esterna
Pin Strip passo
2mm (modulo)
Software demo
dedicato. OCX
dedicato
Microchip 2,4 1,26mW SPI Chip QFN 40 pin
Supporto per
802.15.4 MAC e AES
encryption
Digi 2,4
1mW (moduli
standard)
100mW
(moduli PRO)
UART Filo, chip, U.FLe RPSMA
PIn Strip passo2mm (modulo)
Supportate modalità
di rete avanzate e a
basso consumo
Atmel 2,4 2mW SPI Chip QFN 40 pin
Jennic 2,4 3mW UART, SPI Chip QFN 56 pin
Supporto per
802.15.4 e AES
encryption
Tabella 1
Cross
referenceModuli
ZigBee
Rappresentazione OSI degli stack Ethernet e ZigBee
-
8/19/2019 CorsoZigbee
6/34
Elettronica In ~ Dicembre 2008 / Gennaio 2009 119
tenimento della PAN;• indirizzamento dei dispositivi;• esecuzione dell’algoritmo CSMA\CA per
l’accesso al canale trasmissivo;• allocazione dei GTS (Guaranteed Time Slot);• supporto alla sicurezza dei pacchetti tra-
smessi.
Come quello Fisico, anche il livello MAC puòessere concettualmente diviso in due entità,ossia il MAC Sublayer Management Entity(MLME), che fornisce il servizio di gestionedel livello e delle interazioni con il resto dellostack (come il supporto alla creazione di unaPAN) ed il MAC Sublayer Data Entity Service(MLDE) che si occupa, invece, del trasportodei dati. I servizi forniti sono accessibili da
due SAP: all’MLDE si accede attraverso ilMAC Common Part Sublayer Service AccessPoint (MCPS-SAP), mentre l’MLME è acces-sibile tramite il MAC Sublayer ManagementEntity Service Access Point (MLME-SAP).Relativamente all’indirizzamento, è impor-tante far notare che ogni dispositivo ZigBeeè univocamente identificato da un numero diserie a 64 bit, che viene scritto in una ROMinterna al chip e che permette così di distin-guerlo in tutto il mondo da qualsiasi altrodispositivo della stessa famiglia.
Livello NetworkIl livello Network (NWK) del protocollo èdefinito direttamente dalla ZigBee Allian-ce. I suoi compiti sonodi eseguire il routing deipacchetti dalla sorgentealla destinazione, eseguirel’associazione e la disso-ciazione di un nodo dauna network, applicare glialgoritmi di sicurezza e, neicoordinatori, inizializzarela rete ed assegnare gliindirizzi. Anche il livelloNetwork, come i preceden-ti, è formato da due entità:la Network Layer Data En-tity (NLDE) e la NetworkLayer Management Entity(NLME). La NLDE forni-sce il servizio di trasportodei pacchetti ed applica la
sicurezza; i suoi compiti sono essenzialmen-te la generazione dei pacchetti dati a livelloNetwork, il routing e l’applicazione dellasicurezza sui dati. Il livello Application puòaccedere ai servizi forniti dalla NLME attra-verso il Network Layer Data Entity ServiceAccess Point (NLME-SAP). La NLME fornisceinvece servizi volti a garantire ad una applica-zione la possibilità di interagire correttamentecon lo stack ZigBee. La fornitura di questiservizi al livello superiore è garantita dalNetwork Layer Management Entity ServiceAccess Point (NLME-SAP).A livello Network sono definite essenzialmen-te tre diverse topologie di rete: Star, Meshe Cluster Tree. La Star Network è costituitaattorno ad un PAN Coordinator al quale è
collegato un numero variabile di dispositivifigli, i quali possono essere sia Router che EndDevice. Nel caso di topologia cluster tree ilcoordinatore è collegato a stella ad una seriedi Router ed End Device; i Router, a loro volta,ripropongono una topologia a stella. Infine,nella topologia Mesh ogni nodo è collegatoa tutti quelli che si trovano nel suo raggiodi copertura. Questa topologia viene anchechiamata rete peer-to-peer. Nella Fig. 5 sonorappresentate graficamente le tre topologie direte previste dallo standard.
Livello ApplicationIl livello Application dello standard vienedefinito direttamente dalla ZigBee Alliance.
Fig. 5
Topologie
di rete
previstedallo
standard
ZigBee.
-
8/19/2019 CorsoZigbee
7/34
120 Dicembre 2008 / Gennaio 2009 ~ Elettronica In
Fig. 7
Starter
kit ZigBee
prodotto da Aurel
Il layercorrispon-
dente è for-mato dall’Appli-
cation Support Sublayer(APS), dallo ZigBee Device Object (ZDO) edagli Application Objects implementati dalcostruttore del chip in questione.L’Application Support Sublayer fornisce dueinterfacce, che sono l’APS Management EntityService Access Point (APSME-SAP) e l’APS
Data Entity Service Access Point (APSDE-SAP). La prima di queste interfacce vieneutilizzata per applicare la sicurezza, mentrela seconda è usata dagli Application Objects edagli ZDO per la trasmissione dei dati.Gli Application Object sono definiti dalcostruttore del chip e costituiscono le applica-zioni utente che si ritrovano al livello più altodello stack; risiedono su endpoint numeratida 1 a 240. Per essere conformi allo standard,devono aderire a determinati profili approvatidalla ZigBee Alliance. Gli endpoint, insieme
all’indirizzo del dispositivo, forniscono unsistema per indirizzare in maniera uniformeed univoca su tutta la rete i singoli
Application Object (ossiale applicazioni finali) al-l’interno di un disposi-
tivo. Il dualismo cheesiste tra endpointed indirizzi ZigBeeè simile a quello cheviene individuatodalla coppia indi-rizzo IP del server/numero di porta
TCP in una reteTCP/IP.Gli ZigBee
DeviceObjects(ZDO)fornisco-no un’in-
terfaccia
verso gli Application Objects usati per scopri-re altri dispositivi e servizi forniti da questi.Lo ZDO è un Application Object speciale, cherisiede sull’endpoint 0.
SOLUZIONI ESISTENTI
Attualmente, per l’implementazione di reti Zi-gBee, esistono in commercio diverse soluzionihardware; vediamo le caratteristiche di alcunetra le più diffuse.
AurelAurel Wireless propone due moduli in gradodi operare su rete standard ZigBee in manieraefficiente, sicura e con possibilità di controlloda parte del coordinatore di rete dell’integritàe funzionalità della stessa. La prima serie di
moduli è individuata dalla sigla XTR-ZB1 e,come si vede nella Fig. 6, le schede sono diffe-renziate per tipologia di dispositivo (Coordi-natore, Router, End Device), per la massimapotenza irradiata (High Power e Low Power)e per la tipologia di antenna (interna ed ester-na) prevista.Alcune caratteristiche di questi moduli sono:possibilità di cambio automatico del canaleRF in uso in presenza di disturbi, scambiodati tipo mesh tra dispositivi della stessa reteutilizzando stringhe ASCII con indirizzo più
dati, trasmissione dati codificata (128 bit dicifratura) automatica e trasparente all’utente,set di comandi ASCII per l’utilizzo a bassolivello dei moduli.Sono basati sul system-on-chip Texas Instru-ments cc2430, un potente chip che contiene alsuo interno un transceiver ZigBee associatoad un microcontrollore 8051, con tagli di flashche arrivano fino a 128 kbyte. La quantitàdi memoria è sufficiente ad ospitare l’interostack ed un’applicazione utente firmware. Nelcaso specifico, Aurel ha realizzato il firmwareper l’implementazione di nodi Coordinator,Router ed End Device, più un applicationlayer che permette di gestire la UART, ilconvertitore A/D, ingressi ed uscite digitali,interrupt ed altro ancora. Volendo espander-ne le funzionalità, può essere associato adun qualsiasi microcontrollore dotato di portaUSART.Inoltre, per permettere un semplice approccioai suoi moduli wireless ZigBee, Aurel mette adisposizione un completo kit di sviluppo che
Fig. 6 Modulo ZigBee
prodotto da Aurel.
-
8/19/2019 CorsoZigbee
8/34
Elettronica In ~ Dicembre 2008 / Gennaio 2009 121
permette di testare tutte le funzionalità deidispositivi.Il kit (visibile nella Fig. 7) comprende unascheda USB per l’interfacciamento del PANcoordinator al PC e 4 demoboard predispo-ste per la connessione con altrettanti router;
sono altresì inclusi tutta la documentazionenecessaria, i driver dell’interfaccia USB euna serie di tool software per lo sviluppo diapplicazioni.
MicrochipLa Microchip’s Radio Frequency ProductsDivision, divisione di Microchip dedicata aiprodotti RF, offre diverse soluzioni per lo svi-luppo di sistemi wireless a corto raggio, tutti basati sul chip MRF24J40. Questo dispositivoè un transceiver wireless a 2,4 GHz a standard
IEEE 802.15.4, pensato per l’utilizzo con pro-tocolli di alto livello come ZigBee.Nella Fig. 8 è possibile vedere lo schema a blocchi del transceiver MRF24j40 nella suaapplicazione tipica, ossia l’interfacciamentocon un microcontrollore PIC di Microchip.A supporto dei progettisti, Microchip Techno-logy fornisce una serie di stack software adattiall’implementazione su microcontrollori PIC.Le soluzioni proposte da Microchip sono leseguenti:
• ZigBee;• MiWi;• MiWi P2P.
Lo stack ZigBee ha una occupazione dimemoria programma che può arrivare sino a96 kbyte (escluso il codice utente), quindi è li-mitato a quei microcontrollori PIC aventi taglidi memoria adeguati. Sono supportate le to-pologie a stella e a mesh, mentre come targetsi hanno a disposizione i microcontrollori di
casa Microchip ad 8 e 16 bit (PIC24 e dsPIC);attualmente non sono supportati i PIC32.Lo stack MiWi\MiWi P2P non è altro cheuna versione semplificata dello stack ZigBee:il footprint del codice si riduce a 7÷17 kbyte(3÷9 Kbyte per MiWi P2P) e risulta quindiadeguato per applicazioni cost-sensitive, cheutilizzano microcontrollori con limitate quan-tità di memoria flash. Sono supportati micro-
controllori PIC18, PIC24, dsPIC30/33 e anchei recenti PIC32.Nella Tabella 2 sono elencate le caratteristichepiù importanti dei tre stack.Il chip MRF24j40 si presenta con un packagedi tipo QFN a 40 pin, quindi poco adatto allaprototipazione; ecco perché Microchip hamesso in commercio un modulo RF basato suquesto chip, con già a bordo tutta l’elettronicanecessaria al funzionamento (antenna inclusa)e un agevole collegamento verso l’esterno. Ilmodulo prende il nome di MRF24j40MA ed èraffigurato nella Fig. 9.
Digi-MaxstreamLa Digi-Maxstream, azienda specializzatanella realizzazione di soluzioni embedded, hasviluppato una serie di moduli radio compa-tibili con le specifiche dello standard ZigBee.I moduli radio, che sono stati battezzati conil nome di Xbee RF modules, presentano unaforma adatta alla prototipazione (due file dipin strip a passo 2 mm) e Digi mette a disposi-
Fig. 8 - Schema a blocchi del modulo MRF24J4U.
Stack Topography Hops Memory PIC18 PIC24 PIC32
MiWi™ P2P(Proprietary)
Star/P2P 1 3K-9K SI SI SI
MiWi(Proprietary)
Star/Mesh 4 7K-17K SI SI SI
Zigbee
(Certified)Star/Mesh
Infini-
te40K-96K SI SI NO
Tabella 2 - Caratteristiche degli stack Microchip.
Fig. 9 - Il modulo MRF24J4MA.
-
8/19/2019 CorsoZigbee
9/34
122 Dicembre 2008 / Gennaio 2009 ~ Elettronica In
zione una ricca dotazione di libreriefirmware sia per soluzioni point-to-point che per l’implementazione direti mesh.La soluzione proposta da Digipresenta caratteristiche interessantiper gli hobbysti, in quanto i moduli
possono essere facilmente montatisu schede elettroniche per prototi-pazione o PCB. Il passo dei pin stripper la connessione del modulo nonè standard, ma esistono in com-mercio delle schede di adattamento.L’interfaccia di comunicazione èdi tipo seriale UART,quindi facilmente inter-facciabile ad un qualsiasimicrocontrollore (PIC,AVR, ARM, ecc).Uno dei pregi di questasoluzione è rappresenta-to dalle varie possibilitànella scelta dell’antenna(Fig. 11).Per quanto riguardail supporto offerto aiprogettisti, Digi mette adisposizione un’interfac-cia software per la pro-grammazione ed il debug,
denominata X-CTU, attraverso cui è possibileprogrammare i moduli, effettuare il rangetest e dialogare con i moduli stessiattraverso un terminale dotato di interfacciaseriale.Sono inoltre a disposizione varie versionidi firmware per l’implementazione di retiZigBee. In particolare, è possibile realizzaresistemi di comunicazione wireless sia point-to-point che mesh. Per la soluzione point-to-point possono essere utilizzati i modulidenominati “serie 1”, più economici ma conprestazioni inferiori. Se invece si vuolerealizzare una mesh, è necessario utilizzare imoduli serie 2 (che sono in grado di suporta-re i nuovi firmware per implementazione diZigBee mesh, Znet 2.5 e ZB).
AtmelAnche Atmel, parallelamente alla concorrenza,propone una sua soluzione wireless ZigBee.In questo caso i moduli prendono il nome diZ-Link e sono ottimizzati per l’utilizzo conpiattaforme di tipo AVR.Nella Fig. 12 è riportato un possibile schema a blocchi del sistema.Un ottimo strumento per lo sviluppo di siste-mi wireless basati sulla soluzione propostada Atmel è lo starter kit RZ200, visibile nella
Fig. 13. JennicLa Jennic è un’azienda specializzata nellaproduzione di soluzioni wireless on-chip; lasua vasta esperienza nel settore della connet-tività senza fili ha portato alla realizzazione di
Fig. 12 - Schema a blocchi del modulo AT86RF230.
Fig. 10 Scenario applicativo dei moduli Xbee
prodotti da Digi.
Whip Antenna
Chip Antenna
U.FL.RF Connector
Fig. 11 Alcune
possibilità per la
scelta dell’anten-na per i moduli
prodotti da Digi.
-
8/19/2019 CorsoZigbee
10/34
Elettronica In ~ Dicembre 2008 / Gennaio 2009 123
un microcontrollore dotato di interfaccia IEEE802.15.4, e quindi adatto a supportare lo stackZigBee.Nella Fig. 14 è rappresentato lo schema a blocchi del JN5121.Questo versatile chip integra un microcontrol-
lore a 32 bit ed una sezione di radiofrequenzaoperante a 2,4 GHz, fino a 96 kbyte di RAMe 64 kbyte di Flash. La dotazione di periferi-che include Timer,ADC, 21 GPIO edinterfacce di comu-nicazione UART edSPI.La soluzioneproposta da Jennicfornisce un com-pleto sistema on-
chip e può essereuna buona sceltanel caso di applica-zioni cost-sensitiveche non richiedanoprestazioni partico-larmente spinte.
Fig. 13
Il sistema di
sviluppo
proposto
da Atmel
Fig. 14 - Schema a blocchi del JN5121l
Un ottimo strumento per iniziare ad utiliz-zare i moduli realizzati dalla Jennic è l’IEEE802.15.4 & ZigBee Evaluation Kit, rappresen-tato nella Fig 15.Concludiamo qui la prima puntata del corso,abbiamo fatto una panoramica dello stack Zi-gBee ed analizzato alcune tra le soluzioni piùinteressanti che propone il mercato. Come siè visto, nonostante lo standard sia di recenteconcezione, per la sua implementazione incommercio esistono già diverse soluzioni,ognuna con caratteristiche proprie, vantaggi esvantaggi.Nella prossima puntata concentreremo lanostra attenzione sul kit di sviluppo Aurel,analizzando in dettaglio i vari elementi hard-ware che lo compongono ed il software demo
tramite il quale vi verrà fornita la possibilitàdi gestire la vostra prima rete ZigBee.
Fig. 15
Evaluation
kit della
Jennic.
-
8/19/2019 CorsoZigbee
11/34
-
8/19/2019 CorsoZigbee
12/34
C a m b r i d g
e T e c n o l o g y
y Elettronica In ~ Febbraio 2009 115
Delineate le principali peculiarità dello standard e viste le specifiche
tecniche, approfondiamo l’argomento studiando, tra i dispositivi
proposti dalle Case del settore, quelli Aurel. Seconda puntata.
N
ella prima puntata abbiamo iniziato a descri-vere il protocollo ZigBee, definendone origine
e struttura, spiegando come è nato e ad opera dichi e in che ambito trova applicazione; abbiamodedicato qualche paragrafo anche a una panora-mica sui prodotti e i relativi sistemi di svilupporesi disponibili dai produttori che sono impegnatiin prima linea nel settore. Tra tutti, abbiamo sceltoquelli dell’Aurel, che analizzeremo in dettaglio,insieme ai componenti dello starter kit che fun-gerà da base prototipale durante il corso. Verrà
inoltre analizzato il software client fornito a cor-redo del kit ed il componente OCX, che permettela creazione di applicazioni software personaliz-zate impieganti i moduli ZigBee Aurel. Prima didescrivere le caratteristiche e i componenti dellostarter kit, facciamo un breve riepilogo delle prin-cipali caratteristiche della soluzione Aurel.
ZIGBEE AUREL
La soluzione ZigBee proposta da Aurel consistein una serie di moduli wireless basati sul system-
di FRANCESCO FICILI
CORSO
ZigBee®
in collaborazione con
-
8/19/2019 CorsoZigbee
13/34
116 Febbraio 2009 ~ Elettronica In
on-chip cc2430 Texas Instruments. Questopotente e versatile chip integra un transcei-ver radio compatibile con le specifiche IEEE802.15.4, un microcontrollore RISC (core8051) che può avere fino a 128 kbyte di FlashEPROM, 8 kbyte di RAM e una serie di perife-riche tra le quali si segnalano un convertitoreA/D a 12-bit, un coprocessore per crittografia
AES, due porte USART con supporto persvariati protocolli seriali, supporto per MACaddress a 64-bit, 21 General Purpose I/O edun sensore di temperatura integrato. Il tutto ècontenuto in un package QLP a 48 pin, di soli7x7mm. In Fig. 1 vedete lo schema a blocchidel cc2430.Basandosi sul system-on-chip cc2430, Aurelha costruito la serie di moduli ZigBee XTR-ZB1, che esistono nelle versioni (a secondadel firmware caricato nella flash del chip)Coordinator, Router ed End Device, e sidifferenziano per potenza del trasmettitore etipologia di antenna (esterna o interna), comemostra la Tabella 1. I moduli utilizzati duran-te questo corso sonoquelli a bassa potenzatrasmissiva e antennaintegrata, quindi CLI,RLI ed ELI. Vediamoadesso quali sono lecaratteristiche del-l’implementazione di
Aurel dei tre dispositivi che costituiscono unarete ZigBee.• Coordinatore: anche indicato come PAN
Coordinator, è l’elemento a maggiorecapacità di calcolo di tutta la rete. Per ognirete è possibile la presenza di un soloCoordinatore, che agisce in fase di creazio-ne della rete svolgendo i compiti di sceltadel canale di trasmissione e accettazione deivari dispositivi che chiedono di associarsi.Il Coordinatore definisce anche il PANID,che è un numero identificativo della rete incostruzione e che verrà utilizzato da tutti imembri come unico identificativo valido diappartenenza. Inoltre può essere visto comeelemento di supervisione e controllo dellarete; è questo il compito per il quale l’Aurel
suggerisce di utilizzarlo. Viene pertanto for-nito un software di interfaccia con il PC (ditipo OCX, inseribile come componente nelprogramma utente), tramite il quale si potràutilizzare il Coordinatore come punto diraccolta di tutti i dati trasportati dalla rete.Inoltre l’Aurel ha previsto una funzione dicambio automatico del canale in uso in pre-senza di disturbi, che agisce esclusivamentein presenza del Coordinatore.
• Router: Il Router è un dispositivo conside-rato sempre alimentato; in fase di creazione
della rete gestisce l’associazione ad essadei dispositivi che non sono direttamenteraggiungibili dal Coordinatore, attribuendoindirizzi short (16 bit) a tutte le connessioniche configura. Nelle reti ZigBee. Ad ogniRouter (o Coordinatore) si può associare unnumero massimo di dispositivi, che, nellarete ZigBee Aurel, è stato fissato in 20 (idispositivi possono essere altri Router).
• End Device: Gli End Device sono i dispo-sitivi terminali. Per far parte di una deter-minata rete, devono essere associati ad undispositivo “padre” (un Router o un Coor-dinatore), tramite il quale comunicano conil resto della rete. Caratteristica peculiare
Fig.1
Schema a
blocchi delcc2430.
Tipo didispositivo
Antennaintegrata
Antennaesterna
Antennaintegrata
Antennaesterna
Bassa Potenza Trasmissiva Alta Potenza Trasmissiva
Coordinatore XTR-ZB1-CLI XTR-ZB1-CLE XTR-ZB1-CHI XTR-ZB1-CHE
Router XTR-ZB1-RLI XTR-ZB1-RLE XTR-ZB1-RHI XTR-ZB1-RHE
End Device XTR-ZB1-ELI XTR-ZB1-ELE XTR-ZB1-EHI XTR-ZB1-EHE
Tabella 1 - Moduli ZigBee Aurel
-
8/19/2019 CorsoZigbee
14/34
Elettronica In ~ Febbraio 2009 117
di questi dispositivi è quella di poter essereposti in “sleep”, il che limita il consumodi energia a quello necessario al real-timeclock. Questa caratteristica delle reti Zig-Bee permette di remotizzare facilmente deisensori che si connettono alla rete con ciclidell’ordine dei secondi, restando in statoattivo per intervalli di tempo dell’ordine deimillisecondi; il tutto permette di alimentarequesti dispositivi a batteria anche per lun-ghi periodi di tempo.
PRESENTAZIONE DELLO STARTER KIT AUREL
Lo starter kit proposto da Aurel è lo strumen-to ideale per un primo approccio alla connetti-vità wireless ZigBee. Il kit dispone di tutti glielementi hardware e software necessari alla
realizzazione di una piccola WPAN, compo-sta da un Coordinatore e quattro nodi, chepossono essere sia Router che End device.Il contenuto dello starter kit commercializzatodall’Aurel è il seguente:• 1 Demo Board XTR-ZB1 coordinator USB;• 1 Modulo XTR-ZB1-CLI coordinator;• 4 Demo Board XTR-ZB1 router;• 4 Moduli XTR-ZB1-RLI router;• CD contenente software, driver, e documen-
tazione;• Manuale d’uso e cavo USB per la connessione;
Vediamo adesso di dare una descrizione piùdettagliata dei vari componenti del kit.
La Demoboard USBLa demoboard XTR-ZB1 Coordinator (Figura2) è stata realizzata per permettere di utiliz-zare i moduli Radio XTR-ZB1 nella versionecoordinatore. La scheda è equipaggiata conun convertitore USB/Seriale prodotto dallaFTDI e tutta la circuiteria necessaria al suofunzionamento. Nella scheda trova postoanche una strip adatta alla connessione di unmodulo XTR-ZB1, la quale, come detto nellaprima puntata, non è standard.La demoboard permette di interfacciare ilmodulo XTR-ZB1 Coordinator ad un qualsiasiPC dotato di una porta USB. Per l’interfac-ciamento, la Aurel ha deciso di utilizzareun convertitore USB seriale prodotto dallaFTDI: l’FT232R; questo chip sfrutta l’emula-zione della seriale su bus USB e in sostanzatrasforma l’USB in una porta seriale emulata.
Per il suo funzionamento ènecessario installare i driver diemulazione seriale scari-cabili dal sito di Aurel odirettamente dal sito delcostruttore del chip (FTDI).Dopo l’installazione dei driverla periferica verrà riconosciutacome porta seriale virtuale (VCP – Vir-tual COM Port) e sarà possibile gestirla comeuna normale porta seriale.
La Demoboard Router/End DeviceLa demoboard XTR-ZB1, una cui foto è visibi-le nella Fig. 3, è stata realizzata per permetterel’interfacciamento con i moduli Aurel in ver-sione Router o End Device. La scheda è dotata
di un pacco batterie formato da due pile stiloper fornire l’alimentazione, di un connettoreper il modulo wireless, connettori di espansio-ne ed una serie di periferiche che permettonooperazioni di testing e debugging; ci saràmolto utile nel resto del corso per valutarele potenzialità dei moduli prodotti dall’Au-rel. Vediamo quindi più in dettaglio come ècomposta la demoboard Router/End Device,facendo riferimento alla Fig. 4, che rappre-senta il layout della scheda vista dal latocomponenti. Come si può notare, presenta
una serie di componenti di segnala-zione e impostazione, oltread alcuni connettori di
Fig. 2
Demoboard
USB
Coordinator.
Fig. 3
DemoboardRouter/End
Device.
Fig. 4 - Schema della Demoboard Router/End Device.
-
8/19/2019 CorsoZigbee
15/34
118 Febbraio 2009 ~ Elettronica In
e quelle di alimentazione e massa della demo(vedere pinout in Tabella 3).Per impostazione predefinita, la porta serialeopera a 38.400 baud, con 8 bit di dati, nessunaparità ed un bit di stop; naturalmente questeimpostazioni possono essere modificate conopportuni comandi software, come vedremopiù approfonditamente nel seguito del corso.La demoboard dispone di sei led in SMD, uti-lizzati per fornire indicazioni visive immedia-te sullo stato di funzionamento e molto utiliin fase di debug del sistema. In particolare,abbiamo il LED 1 collegato al positivo dell’ali-mentazione e utilizzato per segnalare quan-do la scheda è alimentata. Il led numero 2 ècollegato alla linea OUT R e viene utilizzatoper segnalare quando il modulo è operativo;
risulta acceso quando il modulo è operativoed è entrato a far parte di una PAN, spentonegli altri casi. In fase di startup della rete,questo led potrebbe essere inizialmente spen-to, perché il dispositivo sta ancora cercando diassociarsi alla rete stessa. I led dal 3 al 6 sonocollegati alle uscite 1÷4 del modulo, che sonodel tipo a logica invertita: quindi quando unadi esse è a livello basso il led corrispondenteè acceso.Per testare il convertitore Analogico/Digitaledel modulo, sono stati aggiunti due trimmer
collegati agli ingressi 1 e 2 dell’ADC, che ser-vono a definire le ampiezze.La demoboard dispone anche di un dip-switch connesso a tre ingressi digitali del mo-dulo (IN1 ÷ IN3), che può essere utilizzato, adesempio, per impostare un indirizzo hardwa-re della scheda, nel caso in cui si utilizzi unacomunicazione di tipo broadcast e si vogliaidentificare un particolare dispositivo senzaricorrere al MAC address a 64-bit.Completano la dotazione della demo, duepulsanti (pulsante 1 e pulsante 2) collegatirispettivamente all’ingresso di reset hardwaree alla linea di interrupt esterno.
Procedura di messa in funzionePer utilizzare la demoboard ZigBee Aurel,dopo aver inserito le due pile AA nell’apposi-to vano batterie, chiudere il jumper di alimen-tazione del modulo; oltre che per alimentare ospegnere la scheda, il jumper può essere utileanche per effettuare misure sull’assorbimentodel modulo: allo scopo basta collegare un’op-
espansione. Il Connettore 1, la cui pinout è ri-
portata nella Tabella 2, è un’espansione com-posta da due file da 10 pin a passo 2,54 mm, alquale risultano collegate, oltre all’alimentazio-ne della scheda, anche diverse linee del chipcc2430, come i pin del convertitore ADC, gliI/O digitali e le linee di reset ed interrupt.Al connettore 2 sono collegate le linee dellaseriale (TX, RX, CTS ed RTS), la linea di disat-tivazione del power-saving per gli end device
PIN NOME DESCRIZIONE
1 Vcc Connesso al polo positivo del pacco batterie
2 Vcc Connesso al polo positivo del pacco batterie
3 ADC1 Ingresso 1 del conver titore Analogico/Digitale
4 Input R.Reset HW del modulo radio (attivo a zero logico). La linea ènormalmente a livello alto e quando la si forza a zero avvieneun reset simile a quello dopo una perdita di alimentazione.
5 ADC 2 Ingresso 2 del conver titore Analogico/Digitale
6 ADC 3 Ingresso 3 del conver titore Analogico/Digitale
7 OUT 1 Uscita digitale 1
8 ADC 4 Ingresso 4 del conver titore Analogico/Digitale
9 OUT 2 Uscita digutale 2
10 OUT R.
Uscita digitale del modulo radio usata per segnare quandoesso è operativo (la linea è a livello alto quando il modulo èoperativo e fa parte di una rete, mentre è a zero in fase distart-up e quando il modulo sta cercando di associarsi aduna rete).
11 OUT 4 Uscita digitale 4
12 OUT 3 Uscita digitale 5
13 IN 2 Ingresso digitale 2 (pull-up)
14 IN 1 Ingresso digitale 1 (pull-up)15 PWD Pin di disatt ivazione del power-saving per gl i end device.
16 IN 3 Ingresso digitale 3 (pull-up)
17 RESETReset Half e Full del modulo radio. La linea è normalmente alivello alto e quando è forzata a zero viene effettuato il reset.
18 INTERRUPT
Interrupt esterno del modulo radio. La linea è normalmentea livello alto e quando viene forzata a livello basso scattal’interrupt a seguito del quale il modulo radio invia un mes-saggio al coordinatore.
19 GND Connesso a massa
20 GND Connesso a massa
Tabella 2 - Pinout Connettore 1 della demoboard
Router/End Device.
PIN NOME DESCRIZIONE1 GND Connesso a massa
2 GND Connesso a massa
3 PWD Pin di disatt ivazione del power saving per gli end device
4 TX Uscita dati seriali
5 NC Non Connesso
6 RX Ingresso dati seriali
7 RTS Request to send
8 CTS Clear to send
9 Vcc Connesso al polo positivo del pacco batterie
10 Vcc Connesso al polo positivo del pacco batterie
Tabella 3 - Pinout Connettore 2 della demoboard
Router/End Device.
-
8/19/2019 CorsoZigbee
16/34
Elettronica In ~ Febbraio 2009 119
portuna resistenza di “sense” e misurare latensione ai suoi capi. Chiuso il jumper, biso-gna inserire il modulo XTR-ZB1 nell’appositozoccolo, con il lato componenti rivolto versol’esterno della scheda. A questo punto è possi- bile dare tensione alla demoboard agendo suldeviatore, allorché il LED 1 si accende.
Utilizzo del software demo AurelNel caso di un approccio iniziale alle reti Zig-Bee (ma spesso anche nelle applicazioni finali)risulta indispensabile utilizzare il coordina-tore collegato ad un PC con un’opportunainterfaccia software che permetta la gestione,il monitoraggio e il debug della rete stessa. Acorredo del suo kit di sviluppo, Aurel fornisceun applicativo demo, che può essere utilizza-
to sia come applicativo per il monitoraggiodelle reti ZigBee, che come base di partenzaper lo sviluppo di applicativi di gestione piùcomplessi.Vediamo quindi come installare ed utilizzarequesto software attraverso un esempio praticodi creazione di una rete ZigBee Aurel.
ZIGBEE IN PRATICA
Per utilizzare un modulo ZigBee, come primacosa è necessario installare il software ed ilcomponente OCX Aurel che viene utilizza-
to per la comunicazione. Per l’installazione,lanciare i due programmi di setup e seguirele istruzioni fino al completamento delledue procedure. In caso di difficoltà in fase diinstallazione, è possibile consultare il manua-le dell’applicativo fornito a corredo del kit oscaricato dal sito della Aurel nella sezionerelativa alla documentazione ZigBee. L’ope-razione successiva è l’installazione del driverUSB della demoboard coordinator. Collegarela scheda del coordinator al PC con un cavettoUSB ed installare la versione del driver ap-propriata al sistema operativo in uso (esiste laversione per Windows Vista\XP\2000 e quellaper i più datati Windows 98\ME). Può essereutilizzata anche la versione autoinstallante deldriver (CMD 2.02.04); se utilizzate quest’ulti-ma opzione, si aprirà una finestra di installa-zione sul prompt dei comandi. Ad installazio-ne ultimata, se tutto sarà andato a buon finedovrete vedere la finestra di Figura 5. Premeteinvio per uscire. Per verificare che il driversia stato correttamente installato, esaminate
Terminologia delle retiZigBee Aurel
PAN: una Personal Area Network è una rete informatica uti-lizzata per permettere la comunicazione tra diversi dispositivivicini a un singolo utente. La PAN può essere utilizzata percollegare i vari dispositivi tra di loro in modo da consentirescambio di informazioni o per consentire la connessione areti a più alto livello. Una PAN può essere sia cablata che
wireless, nel qual caso prende il nome di WPAN (WirelessPersonal Area Network).
PAN ID: il PAN ID è un numero su 16 bit che costituisce l’iden-tificativo di una WPAN ZigBee. È quindi possibile discrimina-re tra loro due WPAN che si trovano nella stessa area.
MAC Address: il MAC Address è un indirizzo a 64 bit cheidentifica in maniera univoca ogni nodo all’interno di una reteZigBee. Secondo le specifiche dello standard deve essere me-morizzato in una ROM interna e non può mai essere cambiato.Alcuni costruttori lo indicano anche come Serial Number.
Indirizzo Short: gli indirizzi short sono indirizzi a 16 bit che
vengono assegnati dinamicamente al momento della forma-zione di una PAN ZigBee dal Coordinatore o dai Router.
Canale RF: è il canale a radiofrequenza che viene impiegatoper la comunicazione. Come è stato detto in precedenza, unarete ZigBee dispone di diverse bande di frequenza utilizzabi-li, e, all’interno di queste bande di più canali, in modo taleche possa essere cambiato il canale in uso in presenza didisturbi. Le bande disponibili per lo standard ZigBee sonodivise per area geografica e, specificatamente, in Europa sipuò lavorare a 868 MHz negli Stati Uniti a 915 MHz; i 2,4GHz valgono praticamente in tutto il mondo. La banda piùutilizzata è chiaramente quella a 2,4 GHz, ed è in questa cheoperano i moduli Aurel. All’interno di tale banda sono dispo-
nibili 16 canali da 3 MHz ciascuno.
LQI (Link Quality Indicator): è un parametro che nelle retiZigBee Aurel indica la qualità del collegamento di un deter-minato nodo con il coordinatore della PAN. Un valore del pa-rametro LQI compreso tra 100 e 200 è indice di un buoncollegamento radio.
KA (Keep Alive): il parametro keep alive è utilizzato nelle retiAurel sui Router e sugli End Device, per ottenere il cambioautomatico di canale sulla rete. Quando su un router è attivala funzione keep alive, esso trasmette un pacchetto ogni 20secondi al coordinatore, aspettandosi una risposta. Quandonon riceve una risposta dopo sei tentativi, esegue un halfreset e tenta una nuova associazione, effettuando uno scansu tutti i canali disponibili. Sugli End Device l’operazione èsimile, con la differenza che l’End Device non interroga di-rettamente il coordinatore ma il suo dispositivo “padre” (chepotrebbe essere anche il coordinatore stesso), eseguendola stessa procedura descritta nel caso del Router. L’opzio-ne keep alive consente all’utente di una rete ZigBee Aureldi cambiare canale RF in uso senza perdere il collegamentocon i dispositivi associati alla rete, che “seguono” la migra-zione del coordinatore verso il nuovo canale.
-
8/19/2019 CorsoZigbee
17/34
120 Febbraio 2009 ~ Elettronica In
le risorse hardware del sistema (pannellodi controllo\sistema\hardware\gestioneperiferiche): sotto l’insieme porte COM e LPTdovreste trovareuna voce nomina-ta USB Serial Port,come mostratonella Fig. 6. Quel-la è la scheda USB
Coordinator.Una volta com-pletata l’installa-zione del driver, bisogna predi-sporre le quattrodemoboard perl’accensione(seguendo leistruzioni delparagrafo prece-dente) e collocar-
le a piacimentoall’interno di unastanza facendoattenzione a nonappoggiarle su superfici conduttive, onde evi-tare che si determinino cortocircuiti tutt’altroche salutari.Vi ricordiamo che i moduli dello starter kitsono router, quindi con essi è possibile crearediverse topologie di rete. Inoltre, siccome ognirouter è in grado di instradare pacchetti dativerso altre destinazioni, è possibile creare del-le catene nelle quali la distanza tra il coordi-natore e l’ultimo router della catena è pari allamassima distanza che può esistere tra due di-spositivi moltiplicata per il numero di disposi-tivi intermedi. Ora è possibile fornire l’ali-mentazione alle schede agendo sul deviatoree lanciare, dal menu Programmi del computer,l’applicativo Aurel ZigBee-Programma_Client.Inizialmente comparirà la schermata della Fig.7, che richiede l’inserimento del numero dellaporta COM virtuale assegnata al coordinator.
Inserite il numero della porta COM virtualeassegnata dal sistema (è visibile nella scher-mata delle risorse hardware) e fate clic sulpulsante OK. Eseguita questa operazione,comparirà lo splash screen e successivamentela schermata principale del programma. Nonappena il programma viene caricato, il coordi-natore inizia la procedura per la creazione diuna nuova rete e si mette in attesa di richiestedi associazione da parte di altri dispositiviAurel; in fase di creazione della rete, ad even-
tuali dispositivi non Aurelnon viene concesso diassociarsi.Per associare i dispositivialla rete, bisogna pre-mere il pulsante UnLock
Net (se la rete risultava bloccata) ed attendereche i dispositivi si asso-cino; questa operazionepuò richiedere alcunisecondi, in funzione delladistanza tra i dispositivie della complessità dellarete. Man mano che idispositivi cominciano adassociarsi, sulle demo- board si accende il LED
verde (LED 2) e sullatabella nella parte centra-le della finestra iniziano acomparire i dati relativi ai
singoli dispositivi. Quando tutti i dispositivisono stati correttamente associati, la scherma-ta del programma client dovrebbe apparirecome quella visibile nella Fig. 8.Oltre alla finestra principale, all’apertura delprogramma viene anche attivata una finestradi log, visibile nella Fig. 9, che contiene lostorico di tutti i messaggi scambiati dall’appli-
Fig. 5 - Installazione del driver della scheda USB coordinator.
Fig. 6 - Elenco risorse di sistema. Notate la pre-senza della scheda USB coordinator.
Fig. 7 - Inserimento della porta COM virtuale del coordinator.
-
8/19/2019 CorsoZigbee
18/34
Elettronica In ~ Febbraio 2009 121
cativo e dal PAN Coordinator.Come si vede, la schermata principale delprogramma client fornisce una serie di utiliinformazioni sulla rete appena creata. Nellaparte in alto a sinistra viene fornito il MAC
address del Coordinatore, il canale RF attual-mente in uso e il PAN ID della rete (all’avvioviene eseguito in automatico dal coordinatoreuno scan di tutti i canali disponibili e vienescelto quello meno affetto da disturbi). In altoa destra è presente un menu contenente ilgruppo pulsanti di comando, tramite i qualipossono essere eseguite alcune operazioni base che descriveremo in seguito. La tabellache occupa la parte centrale della finestra con-tiene invece alcune informazioni relative aidispositivi associati alle rete. Nel caso di reti
con più di 12 dispositivi associati, è possibileutilizzare i pulsanti UP e DOWN, per scorrerel’elenco. Per ogni dispositivo sono riportate leseguenti informazioni:
• numero del dispositivo;• MAC Address a 64-bit;• stato del parametro Keep
Alive: 0 indica keep alive disattivato, 1 keepalive attivato;
• indirizzo Short a 16-bit;• nome del dispositivo;• tipo di dispositivo: può essere Router o End
Device;• stato del dispositivo: il led verde indica di-
spositivo in stato ON (attivo), mentre il ledrosso indica dispositivo in stato OFF (nonattivo).
All’avvio del programma, lo stato di tuttii dispositivi è OFF. Diventa ON in caso dirisposta al comando ping ciclico o se giungeuna risposta dal device quando si entra nella
finestra di gestione dellostesso.Cliccando due volte nelcampo nome della tabella,si entra nella finestra ge-stione dispositivo, rappre-sentata in Fig. 10. In questaschermata sono riassuntetutte le informazioni rela-tive al singolo dispositivocontenute nella tabella del-la schermata principale ed
inoltre si possono cambiare alcuni parametridel dispositivo e controllare ingressi ed uscitedella scheda demo. Potete fare alcune provecambiando lo stato dei quattro led collegatialle linee di uscita, oppure leggendo lo stato
degli ingressi digitali (collegati al dip switch)ed analogici (collegati ai trimmer).Se variate lo stato dei trimmer o degli ingres-si digitali, per leggere la variazione doveteaggiornare la finestra premendo sul pulsante Applica nella parte bassa della finestra stessa.Altre informazioni che vengono visualizza-te sono il parametro LQI (vedi riquadro diapprofondimento sulla terminologia delle retiAurel), il valore della tensione presente ai capidella batteria ed il livello della temperaturadel sensore interno del system-on-chip cc2430.
Quest’ultimo corrisponde al valore della tem-peratura di esercizio del chip e può variare damodulo a modulo; non è quindi utilizzabileper risalire alla temperatura esterna. Dopoaver fatto alcuni test e verificato che il disposi-tivo sia collegato e risponda correttamente ai
Fig. 8 - Schermata del programma client con
quattro dispositivi associati ma non ancora atti
Fig. 9Finestra
di log.
-
8/19/2019 CorsoZigbee
19/34
122 Febbraio 2009 ~ Elettronica In
Fig. 13, che richiede la conferma del MACaddress del dispositivo da eliminare.Se il MAC address corrisponde, si può fareclic sul pulsante OK per continuare; il disposi-tivo verrà cancellato dalla rete senza ulterioririchieste di conferma.
Riassociazione di un dispositivo precedentemente cancellatoNel caso invece si voglia riassociare alla rete undispositivo precedentemente cancellato, è pos-sibile utilizzare il pulsante aggiungi dispositivo.
Nel caso si eseguaquesta operazio-ne, comparirà lafinestra di dialogoillustrata nella Fig.
14, che richiedeil MAC addressdel dispositivo daassociare alla rete.In tal caso doveteinserire l’indirizzoMAC e fare clicsul pulsante OK.Se il dispositivonon si riassociaautonomamente,può essere neces-
sario eseguire unhalf reset.
comandi, poteteassegnargli unnome simbolico(nell’esempio
Nodo_1), preme-re sul pulsanteapplica e chiu-dere la finestra.Ripetete questaoperazione pertutti e quattro inodi. Il risultatofinale dovrebbeessere la finestraillustrata nellaFig. 11.
Come si vede,adesso il camponome contieneil nome simbolico associato al dispositivo e illed a fianco è diventato verde, ad indicare cheil dispositivo è associato alla rete ed è attivo.Vediamo adesso alcune operazioni che è pos-sibile eseguire sulla rete ZigBee Aurel attra-verso il software client.
Cancellazione di un dispositivo dalla reteÈ possibile eliminare uno specifico dispositivodalla rete formata (nel caso, ad esempio, nonsi desideri che il dispositivo ne faccia parte, onel caso di associazione fortuita), facendo usodel comando cancella dispositivo presente nelgruppo pulsanti di comando. Se viene pre-muto questo pulsante, comparirà la finestradi dialogo illustrata nella Fig. 12. In essa ilcomputer richiede il numero sequenziale deldispositivo dal cancellare.Dopo aver selezionato il numero e fatto clicsul pulsante OK, comparirà la schermata di
Fig. 10 - Schermata di gestione dispositivo.
Fig. 11 - Schermata del programma client con quattro
dispositivi associati ed attivi.
Fig. 12 - Selezione dispositivo da cancellare.
Fig. 13 - Conferma del MAC address
da cancellare dalla rete.
-
8/19/2019 CorsoZigbee
20/34
Elettronica In ~ Febbraio 2009 123
Cambio del canale attivoe parametro keep aliveUn’altra possibilità offerta dal software demodella Aurel è il cambio manuale del canale RFin uso. Come è stato spiegato in precedenza,all’avvio della rete il Coordinator esegue unoscan su tutti i canali messi a disposizionedallo standard (per trasmissioni a 2,4 GHzi canali disponibili sono quelli che vannodall’11 al 26) e connette la rete nel canale cheritiene meno affetto da disturbi. Tuttavia se leprestazioni della rete si degradano dopo un
seguire lamigrazionedel Coordi-nator verso ilnuovo canale,altrimenti nonsaranno pos-sibili ulterioricomunicazio-ni. Se i nodinon riusciran-no a ristabilirela comunica-zione sul nuovo canale, bisognerà eseguireun reset locale su ogni nodo, per permetterea ciascun dispositivo di ricollegarsi. Nel casonon si riesca a firmare la rete sul nuovo canale,
è possibile eseguire un reset del Coordinatorvia software (pulsante Reset). In questo caso,se è stato precedentemente attivato il para-metro keep alive (KA) sui singoli nodi, questiultimi riusciranno a ricollegarsi al Coordina-tor sul canale predefinito (11).
Salvataggio dei dati della reteTra le varie funzionalità, il software offre an-che la possibilità di salvare i MAC address deidispositivi associati alla rete. Per farlo, biso-gna premere il pulsante Salva Dati nel gruppo
pulsanti di comando. Nella directory dell’ap-plicativo (di default: Programma/Demo Zi-gBee), verràsalvato unfile di testocontenentei MAC deidispositiviassociati.Il formatodel file èvisibile nellaFigura 16.Il primo MAC address della lista è quellodel Coordinator. Concludiamo così questaseconda puntata sulle reti ZigBee Aurel. Nellaprossima puntata del corso descriveremo indettaglio il componente OCX di Aurel (ed ilrelativo set di comandi di gestione della rete)e inizieremo la scrittura di un nostro softwaredi gestione della rete personalizzato, sfruttan-do le proprietà, le funzioni e gli eventi fornitida tale componente.
Fig. 14 - Finestra di dialogo Aggiungi Dispositivo.
certo periodo di utilizzo, è possibile che la si-tuazione dei canali attivi nella zona sia mutatae che il canale selezionato sia ora disturbatoda interferenze provenienti da reti limitrofe.In questo caso è possibile cambiare il canaleattivo via software senza essere costretti ad
eseguire un reset dell’intera rete. Per cam- biare il canale RF in uso premere il pulsante
Fig. 15 - Finestra di dialogo Cambio Canale.
Fig. 16Formato di
salvataggio
degli
indirizzi
MAC.
Modello ISO-OSI
Cambia Canale presente nel gruppo pulsanti dicomando. Apparirà la finestra di dialogo diFig. 15, la quale richiede di inserire il canaleRF che si desidera utilizzare. L’input ammes-so è un numero da 11 a 26; se viene inserito lo0, il Coordinator provvederà ad eseguire unnuovo scan dei canali disponibili e selezio-nerà il canale più libero da interferenze. Nelcaso venga eseguito il cambio del canale RFvia software, tutti i nodi della rete dovranno
-
8/19/2019 CorsoZigbee
21/34
-
8/19/2019 CorsoZigbee
22/34
C a m b r i d g
e T e c n o l o g y
y Elettronica In ~ Marzo 2009 115
N
elle precedenti puntate è stato introdottoil protocollo ZigBee e si è avuto modo di
valutare il sistema di sviluppo ZigBee dell’Au-rel. Sono stati esaminati in dettaglio le caratte-ristiche dello standard e i componenti del kitproposto dall’Aurel per la sperimentazione coni moduli XTR-ZB1. È stato inoltre presentato ilsoftware demo che permette la gestione ad altolivello di una PAN ZigBee attraverso un’intuitivainterfaccia grafica realizzata in Visual Basic 6. Inquesta terza puntata del corso analizzeremo in
dettaglio il componente OCX fornito dall’Aurel,che permette di realizzare interfacce di gestionedella rete; inizieremo, inoltre, la scrittura di unnostro software di interfacciamento e controllodella rete.
IL COMPONENTE OCX DI AUREL
OCX è l’acronimo di OLE Control eXtension. Icontrolli OCX sono utilizzati in linguaggi comead esempio il Visual Basic o il Visual C++ peraggiungere funzionalità ad un programma che si
Dopo aver descritto hardware e software di installazione del kit di
sviluppo ZigBee Aurel, è giunto il momento di scendere nei dettagli della
programmazione. Terza puntata.
di FRANCESCO FICILI
CORSO
ZigBee®
in collaborazione con
-
8/19/2019 CorsoZigbee
23/34
116 Marzo 2009 ~ Elettronica In
un’applicazione ospite. Il componente OCXdi Aurel fornisce appunto una serie di fun-zioni che permettono la gestione dei moduliXTR-ZB1 (come ad esempio l’inizializzazionedella porta seriale dei buffer e dei timer, laricezione e l’invio di stringhe di dati, ecc.)senza dover passare attraverso i comandi diinterfaccia dei moduli stessi. L’uso di questocomponente costituisce per lo sviluppatore unulteriore livello di astrazione (e di semplifica-zioni) nella scrittura di interfacce di gestionedella rete. In tabella 1.a, 1.b ed 1.c sono rias-sunte rispettivamente le proprietà e gli eventied alcune tra le funzioni più significative delcomponente. Tramite questo ricco assortimen-to di funzioni, proprietà ed eventi è possibilecreare un completo programma di gestione
della rete wireless generata con i dispositiviAurel. Il componente OCX contiene diverse al-tre funzioni che non sono state, per semplicità,riportate. Per chi desiderasse una guida piùesaustiva è possibile scaricare il manuale delcomponente direttamente dal sito della Aurel(www.aurel.it).
CREAZIONE DI UN SOFTWARE DI GESTIONE
PER RETI AUREL
Vediamo adesso come sfruttare il componen-te OCX per scrivere un nostro software di
gestione per reti ZigBee Aurel. Per la scritturadel software di gestione abbiamo scelto VisualBasic 6 e il relativo ambiente di sviluppo,Visual Studio.La prima cosa da fare è quindi creare unnuovo progetto in questo ambiente. Una voltaaperto e salvato il workspace, bisogna, primadi tutto, inserire nel nuovo form il componen-te OCX. Per far ciò bisogna selezionare, dalmenu a tendina Progetto, la voce Componenti.Comparirà una schermata come quella di Fig.1, all’interno della quale è possibile seleziona-re il componente che si desidera aggiungere alprogetto.Vi ricordiamo che, per poter essere importato,il componente deve prima essere correttamen-te installato, come si era fatto nel corso dellaseconda puntata quando era stato installato ilsoftware demo client dell’Aurel.Una volta importato, il componente diventaaccessibile dalla toolbar di Visual Studio,come illustrato in Fig. 2. Non dovete faraltro che selezionarlo e trasportarlo sul form,
Proprietà Descrizione
Public Property Get
OCXVersion()
Ritorna una stringa contenente la versione dell’OCX
installato.
Public Property Get
Commport()Ritorna un integer contenente la Virtual COM Port utilizzata.
Public Property Let
Commport
(COMPort byVal asInteger)
Setta la porta COM che si intende utilizzare ed inizializza la
seriale con i relativi buffer e timer utilizzati dall’OCX per la
gestione della stessa. In particolare, l’OCX utilizza un buffer
all’interno del quale vengono memorizzate le stringhericevute via seriale dal Coordinator ed un timer a 50ms che
verifica la presenza di stringhe nel buffer di ricezione.
Tabella 1.a - Proprietà del componente OCX
Eventi Descrizione
Public Event Strin-
gReceived (ByVal
RecString as String)
Evento generato quando l’OCX rileva la presenza di una
stringa nel buffer di ricezione. L’evento restituisce la stringa
così come ricevuta sulla seriale.
Public Event String-
Sent (ByVal SentString
as String)
Evento generato quando l’OCX invia via seriale una stringa.
L’evento ritorna la stringa inviata.
Public Event
DataReceived (ByVal
ShortAddr as String,
Data as String)
Evento generato quando viene rilevata la presenza di una
stringa inviata da un dispositivo remoto. L’evento ritorna
l’indirizzo short del dispositivo remoto (ShortAddr) e i dati
utili (Data).
Public Event
ErrorDetected
(ErrorCode as Integer)
Evento generato quando viene rilevato un errore sulla seria-
le. Viene restituito il codice di errore corrispondente.
Tabella 1.b - Eventi del componente OCX
Funzioni Descrizione
Public Sub StartNet ( ) Funzione che invia su seriale il comando CMD:04; (Start Net).
Public Sub
StartOPERATIONS ( )
Funzione che inizializza la porta seriale, i buffer ed i timer
utilizzati dall’OCX. Deve essere utilizzata nell’applicativo du-
rante la fase di inizializzazione della rete, subito dopo aver
effettuato i settaggi della porta seriale.
Public SubStopOPERATIONS ( )
Funzione che disabilita il timer utilizzato dall’OCX per lagestione della seriale.
Public Sub LockNet ( ) Funzione che invia su seriale il comando CMD:0A:00;
Public Sub UnlockNet ( ) Funzione che invia su seriale il comando CMD:0A:FF;
Public Sub PanInfo ( ) Funzione che invia su seriale il comando CMD:0D;
Public Sub SendData
(ByVal ShortAddr as
String, By Val Dati as
String)
Funzione che invia su seriale il comando SNT:
shortaddr:#dati:Dati; dove #dati è la lunghezza della
stringa “Dati” inserita come parametro. Viene eseguito un
controllo sui parametri inseriti: se ShortAddr e/o Dati sono
stringhe vuote la funzione non fa nulla.
Public Sub AddItem
(ByVal MACaddr as
String)
Funzione che invia su seriale il comando CMD:03:
MACaddr; dove “MACaddr” rappresenta l’indirizzo MAC del
dispositivo che si intende possa far parte della rete.
Public Sub SetRfCH
(ByVal RfCH as
Integer)
Funzione che invia su seriale il comando CMD:07:RFchan-
nel; dove RFChannel è la conversione in esadecimale del
parametro RfCH che rappresenta il nuovo canale nella
quale verrà instaurata la rete. Il parametro RfCH può
assumere i valori da 11 a 26. Se viene inviato 0 come pa-
rametro viene eseguito un nuovo scan su tutti i canali. La
funzione esegue un controllo sul parametro RfCH inserito:
se è minore di 11 o maggiore di 26 e diverso da zero la
funzione non fa nulla.
Tabella 1.c - Funzioni del componente OCX
sta sviluppando. Di fatto si tratta di una col-lezione di funzioni di libreria, eventi e metodi,che possono essere importati ed utilizzati in
-
8/19/2019 CorsoZigbee
24/34
Elettronica In ~ Marzo 2009 117
inserendolo in un punto qualsiasi dell’area dilavoro. Una volta eseguita questa operazione,all’interno del form comparirà il componenteZigBeeNet1, e sarà possibile accedere alle suefunzioni.
Per prima cosa iniziamo a fornire al nostronuovo software alcune funzioni di base, sfrut-tando le proprietà dell’OCX, come ad esempiola possibilità di ricavare e quindi visualizzarela versione dell’OCX stesso. L’operazione èresa possibile dalla proprietà Get OCXVer-sion( ), che ritorna una stringa contenente laversione dell’OCX installato. Per la visualiz-zazione si è scelto di utilizzare l’oggetto status bar, e unitamente alla visualizzazione del-l’OCX si è scelto di rendere visibile anche lamajor e minor revision del software, dichiara-
te come costanti nella sezione dichiarativa delform. È sempre consigliabile visualizzare emantenere aggiornate queste informazioni, inquanto molti errori possono derivare dall’uso(a volte inconsapevole) di versioni obsolete,o nel caso di programmi più articolati, chesfruttano componenti diversi, di versioni ditali componenti incompatibili tra loro o con ilprogramma ospite.Il codice che permette di ricavare e visualizza-re versione dell’OCX e versione del software èrappresentato nel Listato 1.Il risultato potete vederlo nella Fig. 3:Vediamo adesso qualcosa di più corposo,come l’inizializzazione dell’apparato dicomunicazione con il Coordinator (attraverso
la porta seriale emulata su busUSB) e la procedura di avviodella rete.
Dal punto di vista software, per avviare larete occorre aggiungere nel form due pulsanti,una label ed una textbox. I due pulsanti sa-ranno utilizzati per l’avvio e la chiusura dellacomunicazione con il Coordinator, la textbox
è utilizzata per ricevere in input il numerodella porta COM virtuale e la label serve solocome indicazione sullo stato della rete (onlineed offline).Per avviare le comunicazioni bisogna primadi tutto settare i parametri della porta seriale.Per far ciò si usa la proprietà Let Commport( ), che ricevein input ilnumero dellaporta serialesulla quale
è collegato ilCoordinator. Ilnumero dellaporta seriale dautilizzare viene passatoalla proprietà tramite lavariabile VCP, che imma-gazzina il valore ricavatodalla textbox creata ap-positamente allo scopo. IlListato 2 riporta il codicerelativo a quanto illustrato sopra.A questo punto si possono utilizzare le duefunzioni Sub StartOPERATIONS ( ) e SubStartNet ( ) per avviare le comunicazioni ecomandare al Coordinator di avviare la net,
come illustrato nel Listato 3.La Fig. 4 fa vedere come si presen-ta la sezione start/stop network delsoftware di controllo quando vieneavviata la “net”. Una label verdecon la scritta “ONLINE” informal’operatore sullo stato della connes-
Fig.1 - Inserimento del componente OCX Aurel.
Fig. 2 - Posizione del componente nella toolbar di Visual Studio.
Listato 1Visualizzo versioni OCX e SW sulla status bar
StatusBar1.Panels.Add
StatusBar1.Panels(1).Text = “OCX Version “ & ZigBeeNet1.OCXVersionStatusBar1.Panels(2).Text = “SW Version “ & SW_Major & “.” & SW_Minor
Listato 1 - Visualizzazione versione OCX e versione SW.
Fig. 3 - Versione OCX e versione SW
visualizzate sulla status bar.
Listato 2
‘Imposto la porta COM virtualeVCP = txtCOMPortSelection.Text
ZigBeeNet1.CommPort = VCP
Listato 2 - Impostazione dei parametri
della porta seriale.
Listato 3Creazione reteZigBeeNet1.StartOPERATIONS
ZigBeeNet1.StartNet
lblStatus.BackColor = vbGreenlblStatus.Caption = “ONLINE”
Listato 3
Avvio
comuni-
cazioni e
creazione
della rete.
-
8/19/2019 CorsoZigbee
25/34
118 Marzo 2009 ~ Elettronica In
modo, se il router padre di un End Deviceviene spento e l’End Device trova un nuovorouter cui associarsi, gli viene assegnato unnuovo indirizzo short.Per mantenere traccia dei messaggi scambiatisulla seriale tra il software ed il Coordinator,si è deciso di aggiungere al software unatextbox che funge da finestra di log contenen-te tutti i messaggi transitati sulla seriale. Su
questa textbox vengono stampati sia i mes-saggi inviati dal Coordinator al PC sia quelliinviati dal PC al Coordinator, quindi si fa usosia dell’evento StringReceived che dell’eventoStringSent.All’apertura delle comunicazioni, la finestra sipresenta come quella visibile nella Fig. 5.Come si vede vengono visualizzati, oltreall’intestazione della finestra, anche la data el’ora in cui viene avviato il Coordinator non-ché la porta COM virtuale utilizzata.Vediamo adesso come avviene la fase di asso-
ciazione vera e propria di un dispositivo allarete appena creata e come si gestisce il tutto alivello del software di controllo.Se un dispositivo si associa alla rete, il Coor-dinator lo notifica sulla seriale con l’invio diun messaggio con codice identificativo 0xCC(Network Update) e contenente l’indirizzoshort, l’indirizzo MAC e la tipologia deldispositivo che si sta associando, secondoquanto esposto nella Tabella 2.Per visualizzare a schermo i dati dei nuovidispositivi, bisogna prima intercettare lestringhe contenenti i dati che vengono inviatidal Coordinator sulla seriale. Per fare ciò sifa uso dell’evento StringReceived (recString
sione (ONLINE, nel caso della figura).Appena il Coordinator riceve il comando diavvio della rete, esegue uno scan su tutti i ca-nali disponibili (dall’11 al 26) e crea la rete sulcanale ritenuto più libero da disturbi. La reteviene identificata tramite un codice a 14 bit,chiamato PAN ID ed uguale ai 14 bit meno si-gnificativi del MAC address del Coordinator.All’atto della creazione della rete viene inoltrecreata, tramite un algoritmo di generazione dinumeri random, la chiave di encryption a 128 bit per la crittografia dei dati.Da questo momento il Coordinator si mette inattesa di associazioni alla rete di altri disposi-tivi Aurel. Eventuali tentativi di associazionedi dispositivi non Aurel vengono rifiutati.
Alla sua prima accensione, un dispositivoremoto (Router o End Device) cerca, su tutti
Fig. 4 - Sezione Start/Stop Network
del software di controllo.
Fig. 5
Finestradi log.
i canali e senza alcun vincolo, una rete cuiassociarsi. Quando la trova e si associa, gliviene assegnato un indirizzo short a 16 bit,tramite il quale gli verranno indirizzati tuttii successivi pacchetti di rete (per convenzio-ne il Coordinator ha sempre indirizzo short0x0000). Tale indirizzo short rimane lo stessoper i router, a meno che non venga eseguitoun Reset sul dispositivo. L’End Device, invece,cambia indirizzo short a seconda del routercui è associato. Pertan-to se l’End Device simuove, uscendo dallaportata radio del suo
“padre”, e si associaad un nuovo router,cambia indirizzoshort. Allo stesso
Output del comando su coordinatore
Msg Type --> 1 byte
• 0xCC --> Nwk update
Indirizzo a 16 bit del nodo --> 2 byte
Indirizzo a 64 bit del nodo --> 8 byteTipo di dispositivo interrogato --> 1 byte
Punto e virgola --> 1 byte
Tabella 2
Network
update.
Listato 4‘Intercetto l’evento scrittura stringa su seriale e plotto su schermoFor i = 1 To Len(recString)
txtComWindows.Text = txtComWindows.Text & Hex(Asc(Mid(recString, i, 1)))
Next itxtComWindows.Text = txtComWindows.Text & vbCrLf
Listato 4 - Visualizzazione dei messaggi in transito sulla seriale.
-
8/19/2019 CorsoZigbee
26/34
-
8/19/2019 CorsoZigbee
27/34
120 Marzo 2009 ~ Elettronica In
saggi ad uno qualsiasi dei dispositivi associati,per mezzo del suo indirizzo short.La tabella non è altro che un array di stringhedove l’indice costituisce il numero sequenzia-le del dispositivo associato e la stringa contie-ne i due byte dell’indirizzo short.Le istruzioni successive servono a stamparesulla label DeviceList le informazioni relativeai dispositivi associati, nel seguente ordine:numero di sequenza, indirizzo short, indiriz-zo MAC e tipologia del dispositivo.La figura 6 mostra l’output sulla finestradell’associazione di 4 dispositivi di tipo router(i 4 dispositivi costituenti il kit). È anchepossibile salvare le informazioni ottenute sufile di testo, utilizzando l’opzione del menua tendina File->Save Device List. In questo
caso viene aperta una finestra di dialogo chepermette di selezionare il percorso in cuisalvare il file ed il nome del file stesso. Nel-la figura 7 è illustrato un esempio di file ditesto nel quale è stata memorizzata la devicelist. Si noti che se alcuni dispositivi vengonoassociati e poi le comunicazioni vengono
Caratteristiche del
software di gestioneIl software di gestione utilizzato in questa ultima puntata del
corso ha lo scopo di mostrare come sia possibile, utilizzan-
do il componente OCX, gestire una rete wireless formata da
dispositivi Aurel ZigBee. Il software ha una serie limitata di
funzioni, ma permette comunque di ricavare e salvare gli
indirizzi MAC e short dei dispositivi collegati, ottenere in-
formazioni sulla rete, bloccare e sbloccare la rete ed anchecambiare il canale RF attivo. Può inoltre essere facilmente
ampliato per consentire il controllo remoto dei dispositivi.
Opzioni di visualizzazione e salvataggio
• Monitor messaggi inviati e ricevuti sulla seriale.
• Visualizzazione degli indirizzi short, MAC e tipologia del
dispositivo.
• Visualizzazione dei dati della rete (RFchannel e PAN ID).
• Salvataggio dell’elenco degli indirizzi MAC e short.
• Salvataggio Log History File.
Opzioni di controllo
• Blocco e Sblocco della rete.
• Selezione dal canale RF.
Fig. 6 -
Device List.
Fig. 7 - Salvataggio dettagli dei dispositivi
associati.
interrotte (Stop Net) ed il software riavviato,per ottenere nuovamente la Device list e latabella di corrispondenza degli indirizzi short, bisognerà effettuare un half reset su tutti inodi, in quanto nel programma non è stato
previsto alcun meccanismo per il recupero deidati della rete attraverso il Coordinator (cosapossibile solo a patto che il Coordinator stessonon venga resettato).Vediamo adesso come sono stati implementatialcuni controlli e sistemi per ricavare informa-zioni sulla rete creata: il primo di essi disponi- bile è il controllo PanInfo, che restituisce unaserie di informazioni sulla rete, come il canaleRF in uso e l’identificativo univoco della rete(PAN ID). Per ricavare queste informazioni
Output del comando
Codice di terminazione --> 1 byte
• 0x30 --> no_error
• 0x33 --> numero di parametri errato
• 0x42 --> il dispositivo non è parte della rete
Punto e virgola --> 1 byte
MsgType --> 1 byte
• 0x11 --> Pan info
Canale su cui è instaurata la rete --> 1 byte
Identificativo della rete (PAN ID) --> 2 byte
Punto e virgola --> 1 byte
Tabella 4 - Output del comando PANInfo.
-
8/19/2019 CorsoZigbee
28/34
Elettronica In ~ Marzo 2009 121
viene utilizzata la funzione Sub PanInfo ( ), di-sponibile tra le funzioni dell’OCX Aurel.L’ou-tput che viene restituito sulla seriale quandoè utilizzato tale comando, è riportato nellaTabella 4; per intercettarlo, si utilizza sem-pre l’evento StringReceived. Per distinguerloda altri tipi di messaggi si usa il suo codiceidentificativo (MsgType). Il codice che decifrail messaggio è riportato nel Listato 6. Come sipuò vedere dal codice, il numero di canale RFe l’identificativo della PAN vengono scritti, ri-spettivamente, nelle label lblRFch e lblPANid.Ciò che si ottiene nella finestra principale delprogramma è visibile nella figura 8.Uno degli altri controlli implementati è ilcontrollo di blocco e sblocco della rete. Se la
rete è bloccata, i dispositivi che non siano giàstati precedentemente associati ovvero chenon siano stati espressamente autorizzatitramite l’uso del MAC address identificativo,non possono entrare a far parte della rete. Per bloccare e sbloccare la rete si usano i tasti“Lock Net” e “Unlock Net”, il cui funziona-mento è piuttosto intuitivo. I listati 7 ed 8illustrano il codice VB6 utilizzato per l’imple-mentazione di tali comandi. Come si vede, inessi viene fatto uso delle funzioni LockNet edUnlockNet, rese disponibili dall’OCX.
Oltre all’invio del comando verso il Coordi-nator, vieneevidenziatosu una labello stato attua-le della rete(LOCKED edUNLOCKED).È importantetenere sem-pre presentequesta label,in quantose il Coordi-nator vieneprivato dellasua sorgentedi alimenta-zione perde idati relativi aidispositivi as-sociati, quindial successivo
ripristino della rete quest’ultima deve esseresbloccata, altrimenti qualsiasi tentativo diassociazione da parte di Routers o End Devicerisulterebbe vano. Infine, il software da noiproposto fornisce anche la possibilità di cam- biare il canale RF in uso. Per farlo bisognafare clic sul pulsante “Change Channel”; datoquestocomando,compariràla finestraillustrata
nella Fig.9, cherichiedel’immis-sione del nuovo canale sul quale il Coordi-nator dovrà creare la rete. I valori ammessivanno da 11 a 26. Se viene inserito il valore0, il Coordinator effettuerà uno scan su tutti icanali disponibili e sceglierà tra questi quelloritenuto più libero da interferenze. Il Listato9 mostra il codice utilizzato per l’implemen-tazione di questo comando; in esso viene
utilizzata la funzione dell’OCX Aurel “SetR-fCH (NewCh)”la quale prendecome argomen-to il numero delnuovo canaleRF. Dopol’impostazio-ne del nuovocanale, viene attivato un timer che genera illampeggio del led “Updating Nwk”, il qualeindica un update del sistema; nel contempo,viene ripulita la label contenente le informa-zioni sui dispositivi, in attesa delle nuoveassociazioni. Nella Fig. 10 è illustrato come sipresenta il frame PAN Control, tramite il qua-le è possibile accedere alle funzioni appenadescritte.
Listato 6 - Decodifica
del messaggio PanInfo.
Listato 6Evento 0x11: PanInfo
If (Asc(Mid(recString, 1, 1)) = &H11) Then
lblRFch.Caption = Asc(Mid(recString, 2, 1)) lblPANid.Caption = Asc(Mid(recString, 3, 1)) & Asc(Mid(recString, 4, 1))
End If
Fig. 8
Visualiz-zazione
RFchannel
e PAN ID.
Listato 7
Private Sub cmdLock_Click()ZigBeeNet1.LockNet
lblLock.BackColor = vbRed
lblLock.Caption = “LOCKED”
‘Comandi associati
cmdLock.Enabled = FalsecmdUnlock.Enabled = True
End Sub
Listato 7 - Blocco della rete.
Listato 8Private Sub cmdUnlock_Click()
ZigBeeNet1.UnLockNet
lblLock.BackColor = vbGreenlblLock.Caption = “UNLOCKED”
‘Comandi associatecmdLock.Enabled = True
cmdUnlock.Enabled = False
End Sub
Listato 8 - Sblocco della rete.
Listato 9NewCh = txtNewCh.TextZigBee_Aurel.ZigbeeNet1.SetRfCH (NewCh)
ZigBee_Aurel.TimerUpdate.Enabled = True
ZigBee_Aurel.lblDeviceInfo = ““
Listato 9 - Cambio del canale RF attivo.
Fig. 10
Sezione PAN
Control.
Fig. 9
Cambio del
canale RF
attivo.
-
8/19/2019 CorsoZigbee
29/34
-
8/19/2019 CorsoZigbee
30/34
C a m b r i d g
e T e c n o l o g y
y Elettronica In ~ Aprile 2009 119
N
ella terza puntata di questo corso abbiamoiniziato ad occuparci dello sviluppo di un
software di gestione realizzato in Visual Basic 6che sfrutta il componente OCX fornito da Aurel;le funzioni descritte ed analizzate riguardavanoesclusivamente il monitoraggio della rete (ricezio-ne dei MAC address e degli indirizzi short, crea-zione della tabella degli indirizzi, ricezione delPANid, ecc.) ed il controllo di alcuni parametriparticolari (selezione canale RF, blocco/sbloccodella rete). In questa quarta e conclusiva puntata
del corso, verrà introdotto ed analizzato un ulte-riore set di comandi che permette di gestire sia lelinee di output collegate ai led della demoboardsia la ricezione di segnali di allarme.
GESTIONE DELLE LINEE DI OUTPUT
Nelle prime due puntate del corso abbiamoappreso come creare una rete e raccoglierne i datipiù significativi (in sostanza gli indirizzi MAC,ma anche gli indirizzi short dei nodi). A questopunto siamo in grado di sfruttare le caratteristi-
Impariamo a gestire lo stato delle linee di uscita dell’XTR-ZB1 usando
i comandi aggiuntivi previsti nel nostro software e vediamo il codice in
Visual Basic 6 che lo rende possibile. Quarta puntata.
di FRANCESCO FICILI
CORSO
ZigBee®
in collaborazione con
-
8/19/2019 CorsoZigbee
31/34
120 Aprile 2009 ~ Elettronica In
controllo delle uscite GPIO di un qualsiasimodulo associato alla rete, bisogna fare clicsull’opzione Node Control del menu a tendinaOptions, come illustrato nella Fig. 1; appariràcosì la finestra illustrata nella Fig. 2 denomi-nata, appunto, Node Remote Control. Qui, perprima cosa bisogna selezionare il nodo dellarete che si intende controllare; allo scopo, bisogna inserire nella texbox Select Node l’in-dirizzo short del nodo desiderato (è possibilericavarlo dalla device list della finestra princi-
pale) e, successivamente, agire sui pulsanti dicontrollo (LEDx on e LEDx off ) per accendere espegnere i led.Lo stato del led viene inoltre visualizzatoall’interno del riquadro (frame) LED’s Status,presente nella stessa finestra di dialogo, difianco ai pulsanti, come evidenziato dalla Fig.3. A questo punto vediamo il codice che hapermesso l’implementazione del controllo:l’OCX dispone di due funzioni espressamentededicate alla gestione degli output digitali cheperò in questo caso non vengono utilizzate in
quanto si è deciso di fare uso di una funzio-ne generica per l’invio di comandi; il nostroscopo è avviarvi all’utilizzo di tale funzioneche, proprio perché generica, permette l’inviodi uno qualsiasi dei comandi supportati daimoduli. La funzione dell’OCX che è stata danoi utilizzata è la sub SendDirectToCoordinator (By Val Command As String), che invia sullaseriale il comando contenuto all’interno dellastringa Command.I due comandi utilizzati sono CMD:0B:addr:#out; (per settare l’uscita ad 1) e CMD:0C:addr:#out; (per settare l’uscita a 0). Le tipologie
che della rete nelle applicazioni che più ci in-teressano. Applicazioni tipiche sono, ad esem-pio, il monitoraggio ed il controllo remoto(wireless) di dispositivi elettronici quali relé,
sensori, interfacce seriali di microcontrollori,eccetera.Le demoboard Router/End Device fornitaa corredo del kit ZigBee Aurel, dispone diquattro led collegati ad altrettante linee diI/O del modulo XTR-ZB1; naturalmentetali linee sono state impostate come outputmediante il firmware, in modo da poter con-trollare l’accensione o lo spegnimento dei ledad esse collegati. Sfruttando le potenzialitàdel componente OCX Aurel è stato aggiuntoal software di gestione un ulteriore form che
permette di controllare lo stato di tali linee.Vediamo innanzitutto come utilizzare questicomandi aggiuntivi; successivamente, affron-teremo il codice scritto in Visual Basic 6 cherende possibile il tutto. Allo scopo bisogna,per prima cosa, collegare la demoboardcoordinator alla porta USB del PC tramiteil cavo fornito in dotazione al kit, accendereuna demoboard ed eseguire l’associazione deldispositivo utilizzando il software di gestione(se il dispositivo non compare nella lista diquelli associati, dovete eseguire un half-resetsul nodo locale). Per accedere alla finestra di
Fig. 1 - Accesso alla finestra di controllo delle uscite GPIO.
Fig. 2 - Finestradi controllo Node
Remote Control.
Fig. 3 - Visualizzazionedello stato dei led con
il LED 1 acceso.
Tabella 1 - Parametri dei comandi CMB:0B e CMD:0C
Parametri Tipo di parametri Output di comando
Addr --> indirizzo a 16 bit del nodo a cui si intende
inviare il comando.
#out --> uscita che si desidera settare. I valori
ammissibili sono compresi nell’intervallo [1-4]
Addr --> 4 byte indicanti, in caratteri ASCII, il valore
esadecimale dell’indirizzo del nodo destinatario.
#out --> 1 byte indicante, in caratteri ASCII, il
numero dell’uscita che si intende settare.
Codice di terminazione --> 1 byte
• 0x30 --> no_error
• 0x32 --> error nei parametri
• 0x33 --> numero di parametri errato
• 0x40 --> system busy
• 0x49 --> lost set reset
punto e virgola --> 1 byte
-
8/19/2019 CorsoZigbee
32/34
Elettronica In ~ Aprile 2009 121
dei parametri dei due comandi sono riportatenella Tabella 1.L’output del comando sul nodo locale in casodi corretta ricezione, è riportato nella Tabella 2.La sintassi è molto semplice e prevede chedopo il codice del comando ed il carattere “:”venga inserito l’indirizzo short (in caratteriASCII) del nodo di destinazione, poi un nuo-vo carattere “:” ed infine il numero dell’uscitache si intende settare o resettare, seguito dalpunto e virgola.
Se il comando viene correttamente ricevutodal nodo destinazione, quest’ultimo rispon-derà con un messaggio contenente il codice0x21 (set/reset pin) il suo indirizzo short ed ilcarattere di terminazione (punto e virgola).Il Listato 1.a riporta il codice Visual Basicutilizzato per l’accensione del LED 1, mentreil Listato 1.b contiene il codice che permette lospegnimento dello stesso led.Nella Figura 4 sono riportati i messaggi intransito sulla seriale dopo l’invio del suddettocomando per l’accensione del LED 1.
Naturalmente, anziché led, alle linee di ou-tput possono essere collegati altri dispositivi,come ad esempio relé (pilotati da transistor)transistor sia BJT che ad effetto di campo,switch allo stato solido, ponti ad H per con-
trollo di motori elettrici (ad esempio per lamovimentazione di tapparelle) e quant’altro.In sostanza, con l’aggiunta dell’opportunohardware di potenza, si può realizzare uncompleto sistema di attuazione dotato di con-trollo remoto wireless.Ricordiamo inoltre che le caratteristicheintrinseche delle reti ZigBee, come ad esem-pio il mesh networking, sono gestite dalfirmware caricato all’interno dei moduliAurel in maniera trasparente all’utente. Adesempio, per sfruttare il mesh networking dei
moduli è possibile eseguire qualche sempliceesperimento: accendete e collegate alla reteuna demoboard equipaggiata con un mo-dulo Router, quindi associate il dispositivoalla rete utilizzando l’apposito software. Oraallontanate il dispositivo dal coordinator finoad andare al di fuori della sua portata radio;verificate l’assenza del collegamento provan-do ad accendere e spegnere uno dei led (nonci dovrà essere risposta da parte del router).Adesso posizionate una seconda demoboard adistanza intermedia tra il coordinator e la pri-ma demoboard; associate il secondo modulo(sempre per mezzo del software di controllo)e riprovate ad accendere e spegnere un leddella prima demoboard, quella che prima erafuori portata. Noterete che adesso il collega-mento è presente. Il dispositivo numero 2 stafacendo da “router” tra il coordinator ed ilrouter numero 1.Appare evidente come posizionando più mo-duli all’interno, ad esempio, di una abitazio-ne, sia possibile creare una maglia connessa
Tabella 2 - Output sul nodo locale dei comandi
CMB:0B e CMD:0C.
Output del comando su nodo locale
MsgType --> 1 byte
• 0x21 --> set//reset pin
indirizzo a 16bit del nodo remoto --> 2 byte
punto e virgola --> 1 byte
Fig. 4 - Messaggi in transito sulla seriale dopo
l’accensione del LED 1 del nodo con indirizzo
short 0x287B.
Listato 1a - Codice Visual Basic per l’accensione del LED 1.
Listato 1 a
Private Sub cmdLED1on_Click()
‘setta a 0 il valore dell’uscita logica 1 relativa
‘al nodo txtNode.text
OutputBuffer = “CMD:0C:” & txtNode.Text & “:1;”ZigBee_Aurel.ZigBeeNet1.SendDirectToCoordinator (OutputBuffer)
imLED1on.Visible = TrueimLED1off.Visible = False
End Sub
Listato 1b - Codice Visual Basic per lo spegnimento del LED 1.
Listato 1 bPrivate Sub cmdLED2off_Click()‘setta a 1 il valore dell’uscita logica 1 relativa
‘al nodo txtNode.textOutputBuffer = “CMD:0B:” & txtNode.Text & “:2;”
ZigBee_Aurel.ZigBeeNet1.SendDirectToCoordinator (OutputBuffer)
imLED2on.Visible = FalseimLED2off.Visible = True
End Sub
-
8/19/2019 CorsoZigbee
33/34
122 Aprile 2009 ~ Elettronica In
(mesh) che permette di raggiungere dalla basequalsiasi nodo, anche nel caso quest’ultimo sitrovi fuori portata, rimbalzando da