Dopo aver introdotto l'argomento, in questa lezione ci immergeremo nello studio dell'architettura del noto protocollo di comunicazione wireless ZigBee che ha rivoluzionato il modo in cui i dispositivi a bassa potenza si connettono e comunicano tra loro. Lo studio della sua architettura è fondamentale per comprendere come i vari componenti di ZigBee lavorano insieme per garantire una comunicazione efficiente, scalabile e sicura. ZigBee è specificatamente progettato per applicazioni che richiedono una lunga durata della batteria e una comunicazione affidabile, rendendolo ideale per l'automazione domestica e l'Internet of Things (IoT).
Struttura Generale di ZigBee
Iniziamo esaminando la struttura generale di ZigBee, che comprende diversi livelli e componenti. Esso si basa sulle specifiche IEEE 802.15.4 che definiscono i requisiti fisici e il livello di accesso al supporto. Questa architettura stratificata consente di gestire comunicazioni affidabili e sicure tra dispositivi. L'architettura di ZigBee è composta essenzialmente da tre livelli principali:
- Livello Fisico (PHY)
Modulazione e Demodulazione: la modulazione è il processo che converte i dati digitali in segnali analogici (onde radio) per trasmetterli attraverso un canale radio. Il PHY in Zigbee utilizza la modulazione DSSS (Direct Sequence Spread Spectrum) con O-QPSK (Orthogonal Quadrature Phase Shift Keying). Al ricevitore, avviene il processo inverso, cioè la demodulazione, per recuperare i dati digitali dai segnali ricevuti.
Bande di Frequenza: il PHY definisce anche le bande di frequenza utilizzate da Zigbee per la trasmissione radio. Le frequenze standard previste da Zigbee sono:
- 2.4 GHz: banda utilizzata in tutto il mondo, compatibile con dispositivi come Wi-Fi e Bluetooth. Questa banda supporta una velocità di trasmissione fino a 250 kbps.
- 868 MHz: banda utilizzata prevalentemente in Europa. Ha una velocità di trasmissione di 20 kbps.
- 915 MHz: banda utilizzata principalmente in Nord America, con una velocità di trasmissione di 40 kbps.
Gestione della potenza e della portata
Codifica e Decodifica dei dati
- Livello di controllo dell’accesso al supporto (MAC)
Medium Access Control
- CSMA/CA Carrier Sense Multiple Access with Collision Avoidance
- Gestione dei Frame
- Sicurezza
- Cifratura
- Autenticazione
- Controllo degli accessi
- Ritrasmissione e conferma
- Livello di Rete
Gestione della topologia di rete: Zigbee supporta diverse topologie di rete, tra cui:
- Rete a stella
- Rete a maglia
- Rete a cluster tree
Il livello NWK si occupa di gestire e mantenere questa topologia, garantendo che i dispositivi siano connessi in modo ottimale.
Routing dei pacchetti: una delle funzioni fondamentali del livello di rete è il routing, ovvero la capacità di instradare i pacchetti di dati da un dispositivo all'altro attraverso i percorsi più efficienti. In una rete mesh, ad esempio, i dati potrebbero dover attraversare più dispositivi per raggiungere la destinazione. Il routing in Zigbee utilizza due principali tecniche:
- Table-driven routing
- Routing ad-hoc on-demand
Il livello NWK garantisce che i pacchetti trovino il percorso migliore, riducendo i tempi di trasmissione e aumentando l'affidabilità della comunicazione.
Gestione dei dispositivi e degli indirizzi: in una rete Zigbee, ogni dispositivo ha un indirizzo univoco. Il livello NWK si occupa di assegnare e gestire questi indirizzi, assicurandosi che ogni nodo abbia un indirizzo coerente e che la comunicazione possa essere instradata correttamente. Inoltre, gestisce l'unione di nuovi dispositivi alla rete e la rimozione dei dispositivi esistenti.
Sicurezza: il livello NWK implementa varie misure di sicurezza, come l'autenticazione dei dispositivi e la crittografia dei dati, per proteggere la rete da accessi non autorizzati e garantire la riservatezza dei dati. Zigbee utilizza chiavi di rete e chiavi di sessione per garantire che solo i dispositivi autorizzati possano partecipare alla rete e scambiare informazioni.
Discovery della rete: quando un nuovo dispositivo Zigbee si unisce alla rete, il livello NWK facilita il network discovery che consente al dispositivo di trovare il coordinatore della rete e identificare quali dispositivi sono disponibili per la comunicazione. Il discovery può essere sia passivo (ascoltando i segnali di altri dispositivi) che attivo (inviando richieste alla rete).
Scenario pratico
La rete ZigBee, come anticipato nella lezione precedente, è composta da vari componenti chiave, ognuno con un ruolo specifico nel funzionamento del sistema. Tra questi ricordiamo gli end device, i coordinatori e i router.
Supponiamo di avere all'interno di una rete un sensore di temperatura, un coordinatore e un router. Immaginiamo adesso che Il sensore di temperatura ogni qual volta rilevi una temperatura inferiore a un valore impostato, ad esempio 18 °C, invii un messaggio all'attuatore per il riscaldamento per accenderlo e aumentare la temperatura ambiente. Il sensore di temperatura rileva la temperatura ambiente e poiché la temperatura è sotto i 18 °C, genera un messaggio di allerta che può includere informazioni come l'ID del dispositivo, il tipo di messaggio (ad esempio, "ATTIVA RISCALDAMENTO") e la temperatura attuale.
Il sensore di temperatura invia il messaggio al coordinatore ZigBee. Qui entra in gioco il livello di rete (NWK). Prima il messaggio viene preparato nel livello MAC per includere l'indirizzo del coordinatore e i dettagli di sicurezza (cifratura, autenticazione). Il livello fisico (PHY) gestisce quindi la trasmissione del messaggio utilizzando onde radio. Il coordinatore ZigBee riceve il messaggio e verifica la sua validità utilizzando i meccanismi di autenticazione e la cifratura. Se il messaggio è valido, il coordinatore lo interpreta e determina che deve essere inoltrato all'attuatore per il riscaldamento. Se il coordinatore non è direttamente connesso all'attuatore, invia il messaggio a un router ZigBee presente nella rete che funge da intermediario.
Il router utilizza le informazioni dell'intestazione del messaggio per instradare correttamente il messaggio all'attuatore. La rete ZigBee sfrutta una topologia a maglia, quindi il messaggio può viaggiare attraverso vari router fino a raggiungere la destinazione. L'attuatore per il riscaldamento riceve il messaggio dal router. Anche qui, il messaggio passa attraverso i livelli MAC e PHY, garantendo la corretta ricezione e l'integrità dei dati.
Una volta ricevuto il messaggio, l'attuatore lo interpreta e riconosce che deve accendere il riscaldamento. L'attuatore per il riscaldamento esegue l'azione richiesta, attivando il riscaldamento per aumentare la temperatura ambiente. Potrebbe anche inviare un messaggio di conferma al sensore o al coordinatore per informare che il riscaldamento è stato attivato con successo.
Conclusioni
In questa lezione abbiamo visto come attraverso uno scenario pratico, un sensore di temperatura possa comunicare con un attuatore per regolare la temperatura di un ambiente in base ai dati raccolti. Questo esempio dimostra chiaramente l'efficacia dell'instradamento dei dati e la collaborazione tra i vari dispositivi ZigBee all'interno di una rete.
Infine, nonostante la necessità di un coordinatore o hub ZigBee per il corretto funzionamento della rete, esistono scenari in cui dispositivi ZigBee possono essere gestiti direttamente tramite altre tecnologie di comunicazione, come Bluetooth o Wi-Fi, oppure attraverso soluzioni ibride con l'integrazione di dispositivi come hub smart o dongle USB. Questo amplia ulteriormente le possibilità di interazione tra i dispositivi ZigBee e le app mobili. Senza la necessità di hardware aggiuntivo dedicato.