corsozigbee

Upload: piergio-ferrara

Post on 07-Aug-2018

213 views

Category:

Documents


0 download

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