Alla scoperta dei moduli XBee3

Se vi è capitato di intraprendere ricerche su come il protocollo ZigBee può esservi di aiuto per una vostra applicazione, o avete sentito parlare dell’implementazione micropython combinata con i nuovi moduli XBee3, o ancora se siete curiosi di sapere come programmare i moduli XBee3, allora siete capitati nel posto giusto. In questo primo appuntamento vedremo insieme le novità rese disponibili con i nuovi moduli XBee3 ed inizieremo ad acquisire dimestichezza con XCTU, il tool offerto dalla DIGI per la programmazione ed il debug dei moduli XBee3.

In articoli precedenti sono state sviscerate in maniera dettagliata le specifiche del protocollo ZigBee, esaminando in maniera accurata tutte le caratteristiche che il protocollo prevede sia a livello fisico sia a livello applicativo, se avete bisogno di un ripasso potete dare un’occhiata qui. Oggi, però, faremo qualcosa di diverso, abbandoneremo la parte teorica immergendoci nella pratica. In un primo momento vedremo insieme quali sono le caratteristiche ed i vantaggi introdotti dai nuovi moduli XBee3, successivamente inizieremo subito con la parte pratica lavorando immediatamente con XCTU, grazie al quale realizzeremo il nostro primo sistema che sfrutta il protocollo ZigBee per lo scambio di dati tra un Coordinator ed un Router.

XBee3: specifiche

Prima di iniziare con la pratica, vediamo insieme alcune caratteristiche degli Xbee3. Effettuando una macro distinzione possiamo dividere questi nuovi device in due famiglie: la famiglia dei moduli RF e la famiglia dei moduli Cellular LTE. Precisiamo che in mercato sono diffusi anche moduli nominati XBee PRO, questi però non verranno presi in considerazione in quanto non rispettano le specifiche stabilite dalla ETSI (European Telecomunications Standard Istitute). Grazie alla famiglia dei moduli RF è possibile sfruttare i segnali radio per la trasmissione e la ricezione di dati attraverso una rete PAN (Personal Area Network) che, rispettando le specifiche del protocollo ZigBee, permette lo scambio di informazioni tra il Coordinator ed altri dispositivi periferici. In seguito, vedremo come creare una propria rete PAN configurando un Coordinator ed un Router, ancora un pò di pazienza. Le specifiche tecniche dei moduli RF prevedono una larghezza di banda di 2.4 GHz, un data rate di 250Kbps e ricoprono in ambienti indoor una distanza di circa 60 metri. Questa famiglia è acquistabile in 3 diversi fattori di forma: Micro-mount, Through-hole e Surface-mount, riportati in Figura 1.

Figura 1: form factor XBee3 RF

La scelta di un fattore di forma rispetto ad un altro, risente principalmente dello spazio disponibile per la realizzazione della propria applicazione, risulta logico, quindi, che nel caso ci proiettiamo in un’ottica di progettazione di un sistema embedded, il formato Micro-mount sarà il preferito, ma se rimaniamo in un contesto di sperimentazione, il formato Through-hole potrebbe risultare più user friendly. Qualunque sia la vostra scelta, l’unica accortezza che dovrete tenere ricade sulla nominazione dei pin che risulta discorde tra i vari fattori di forma. Tra le principali caratteristiche rese disponibili si ha la possibilità di utilizzare interfaccia come UART, SPI, I2C; sono disponibili 4 canali ADC a 10 bit e sono presenti 15 GPIO digitali, insomma tutto ciò che serve per rendere questi moduli low-cost indipendenti con appositi firmware. Analizzando invece la seconda famiglia citata in precedenza, ovvero quella dei Cellular LTE, questa si candida come cavallo di battaglia della DIGI. Questo modulo, oltre ad essere provvisto di tutte le caratteristiche dei moduli RF, prevede anche la possibilità di una connessione LTE consentendo la creazione di applicazioni IoT che sfruttano servizi come AWS, messaggistica MQTT, scambio di SMS e gestione della connessione HTTP. Questi moduli risultano disponibili soltanto nel fattore di forma Through-hole, come visibile in Figura 2.

Figura 2: form factor modulo XBee3 Cellular LTE

Con tutto ciò, il vero valore aggiunto offerto da questi nuovi moduli, sia RF che Cellular LTE, è sbocciato con l’integrazione di micropython, un’implementazione snella ed efficace del linguaggio di programmazione Python3, consentendo lo sviluppo di applicazioni sempre più custom e realizzabili in contesti di risorse hardware limitate. Non lasciatevi intimorire da un “nuovo linguaggio di programmazione” perché gli snippet che scriveremo saranno di facile comprensione per chiunque abbia un minimo di dimestichezza con la programmazione. Questa nuova feature ci consente di svincolarci dalla necessità di un microcontrollore esterno, ad esempio Arduino, per la gestione dei moduli XBee. Torneremo su questo argomento in maniera più dettagliata nei prossimi appuntamenti.

Dal momento che l’aspetto economico è un fattore fortemente incisivo per la progettazione di sistemi embedded, in questa prima fase metteremo da parte le possibili applicazioni realizzabili con un modulo XBee3 Cellular LTE e ci focalizzeremo sui moduli XBee3 RF in quanto l’obiettivo iniziale è quello di acquisire confidenza con la loro programmabilità. Grazie a questa rapida analisi possiamo subito apprezzare come la DIGI sia intenzionata a non passare in secondo piano nel mercato IoT ormai pieno di competitors, ma si candida come uno dei principali leader, ricoprendo applicazioni che possono variare dal settore hobbistico fino ad arrivare al settore IIoT.

XCTU

Benissimo, è giunto il momento di iniziare con la pratica e come prima cosa cerchiamo di comprendere come lavorare con questi moduli, in particolare come possiamo configurarli. Per la realizzazione delle nostre applicazioni utilizzeremo il tool XCTU, l’interfaccia offerta gratuitamente dalla DIGI per la programmazione ed il debug dei moduli XBee. Precisiamo che per la realizzazione del sistema saranno necessari due moduli XBee3. L’istallazione di XCTU è raggiungibile tramite il seguente link: https://www.digi.com/products/iot-platform/xctu#productsupport-utilities. Una volta concluso il processo di installazione ed avviato il tool ci troveremo di fronte la seguente schermata riportata in Figura 3.

Figura 3: schermata iniziale XCTU

Per il momento trascuriamo le icone in alto a destra relative alla Console Working ed al Network Working e rimaniamo sull’icona di Configuration Working. A questo punto spostiamoci in alto a sinistra e selezioniamo l’icona Discover Radio Device per consentire a XCTU di acquisire il nostro modulo tramite l’interfaccia seriale. È bene precisare sin da subito che, al fine di consentire il rilevamento del device, è strettamente necessario l’utilizzo di una porta seriale, pertanto per fare ciò sarà necessario dotarsi di appositi adattatori XBee3 Through-hole oppure nel caso scegliate un modulo SMD potreste anche pensare di progettarvi la vostra breakout board come quella riportata in Figura 4.

Figura 4: breakout board per XBee3 SMD

Qualunque sia la vostra scelta, risulta fondamentale garantire al modulo una comunicazione affidabile, altrimenti difficilmente riuscirete a lavorarci.

Figura 5: selezione della porta seriale per il rilevamento del modulo

Una volta selezionata la porta seriale come in Figura 5, potete passare con Next alla prossima sezione ed impostare i parametri relativi alla porta che state utilizzando, un esempio è visibile in Figura 6.

Figura 6: selezione dei parametri della porta seriale

Se la procedura è andata a buon fine, XCTU rileverà il vostro modulo, altrimenti se insorgono errori, prima di ripetere la procedura di scansione, ricontrollate i parametri impostati ed accertatevi che sia garantita una buona comunicazione seriale con il modulo. Concluso il processo di identificazione e selezionato il modulo, ci verrà fornita una lista di parametri di configurazione, non li vedremo tutti ma approfondiremo solo i più significativi per questa prima fase. Con grandi probabilità il vostro modulo dopo il suo primo boot non avrà installata l’ultima versione del firmware, quindi una delle prime cose da fare è proprio l’update con l’ultima versione disponibile per il Function set DIGI XBee3 ZigBee 3.0, questo Function set ci consentirà di usufruire in un secondo momento delle API.

Figura 7: update della versione del firmware

Concluso il processo di aggiornamento, possiamo iniziare ad esaminare le principali voci di configurazione, partendo dalla sezione fondamentale relativa al Networking. Tramite la voce Device Role è possibile configurare il nostro modulo come Coordinator o Router, se avete bisogno di un ripasso sulla loro distinzione potete guardare qui. A tale proposito se selezioniamo From Network[1], configuriamo il nostro modulo come Coordinator, viceversa otterremo un Router. Con l’occasione ricordiamo che il Coordinator ricopre un ruolo principale per il protocollo ZigBee ed al fine di ovviare conflitti nella rete è necessario garantire l’unicità del nodo. Subito dopo troviamo la voce Extended PAN ID, in questo spazio potete inserire un valore a vostra scelta compreso nel range previsto che consentirà l’identificazione della vostra rete. Come ultimi parametri impostiamo ad 1 la voce ZigBee stack profile in modo da garantire l’abilitazione delle specifiche ZigBee ed infine abilitiamo il Coordinator Verification per consentire ai futuri Router di verificare l’esistenza del Coordinator. In Figura 8 è riportato un riassunto di questi primi parametri impostati.

Figura 8: configurazione della sezione di Networking

Passiamo ora alla sezione Security, qui abilitiamo Encripted Enable in modo da garantire una comunicazione criptata all’interno della rete. Nella sezione successiva, ovvero quella relativa all’Addressing, possiamo sfruttare la voce Node Identifier per inserire un nome a nostro piacimento, ad esempio CoordinatorEOS.

Figura 9: configurazione delle sezioni Security ed Addressing di XCTU

[...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2559 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici e potrai fare il download in formato PDF eBook e Mobi per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

14 Commenti

  1. SuperG72 SuperG72 17 Aprile 2020
    • Nicolò Ferranti Nicolò Ferranti 18 Aprile 2020
  2. Maurizio Maurizio 17 Aprile 2020
    • Nicolò Ferranti Nicolò Ferranti 18 Aprile 2020
  3. Adriano Gandolfo Adriano Gandolfo 17 Aprile 2020
  4. Mariangela.Mone Mariangela.Mone 17 Aprile 2020
  5. Alfredo.Centinaro Alfredo.Centinaro 17 Aprile 2020
  6. briand06 briand06 17 Aprile 2020
    • Nicolò Ferranti Nicolò Ferranti 19 Aprile 2020
      • briand06 briand06 19 Aprile 2020
        • Nicolò Ferranti Nicolò Ferranti 19 Aprile 2020
          • briand06 briand06 20 Aprile 2020
  7. Maurizio Maurizio 22 Aprile 2020

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend