Sono anni che si parla di IoT. Le applicazioni IoT esistono davvero e non sono più solo belle parole e dimostrazioni teoriche, ma sono cose pratiche che possiamo usare nella vita di tutti i giorni, come per esempio gli elettrodomestici intelligenti che ci aiutano a risparmiare e a gestire meglio la nostra casa o i sistemi di automazione dell’illuminazione stradale, dei parcheggi e della viabilità che promettono di rendere le nostre città più efficienti.
Ma chi progetta sensori ed attuatori industriali sa che creare un'applicazione IoT significa buttarsi a capofitto in un mondo molto più complesso e diverso da quello delle applicazioni tradizionali. Connettersi alla rete (a filo o wireless) significa dover impadronirsi di una quantità notevole di nuove conoscenze. La solita lista di acronimi viene ripetuta a destra e a manca (http, tcp, ip, udp, dns, dhcp, mqtt…) ma ciascuno di essi rappresenta per lo sviluppatore anni di esperienza vissuta o tutta da conquistare ancora. Quando poi si legge di IoT sui giornali, saltano agli occhi i molti episodi di attacchi alla sicurezza che si succedono sempre più frequenti sulla rete, ma che trovano i sistemi IoT sempre tra i più vulnerabili ed impreparati. Acquisire l’esperienza per diventare esperti di sicurezza, utilizzando strumenti della crittografia avanzata, indispensabili oggi, richiede anni di dedizione. Sempre più spesso ci viene proposta come unica soluzione l’uso di processori sempre più potenti (32-bit o 64-bit che girano a centinaia di Megahertz), per usare librerie sempre più complesse che contengono milioni di righe di codice (Megabyte). Ma cosa succede alla nostra applicazione? Quel sensore o quell’attuatore su cui avevamo speso amorevolmente anni di sviluppo e tutta la nostra conoscenza per renderlo robusto, affidabile e basso costo, ora va buttato. Va riscritto tutto, ri-testato e ri-certificato!
Ma quanto mi costa questo IoT? C’è un'altra via possibile? La risposta è si!
La Microchip Technology ha appena sviluppato in collaborazione con Google Cloud, e lanciato sul mercato un nuovo sistema di sviluppo rapido per applicazioni IOT, si chiama: “AVR-IOT WG evaluation board” [link] ed è basato su di un piccolo microprocessore AVR®!
Si proprio quello usato sulle ultimissime schede Arduino. Un 8-bit, un piccolo microprocessore industriale (ATmega4808) che costa meno di un dollaro e che gira a soli 10MHz, non Gigahertz! Non occorre riscrivere tutto, non è vero che deve essere almeno un 32-bit per connettersi alla Cloud! Non solo, ma per usarlo non è necessario dover spender anni per diventare un guru di networking e di crittografia. Ma allora dove sta il trucco?
E’ Il principio di progetto che è completamente diverso, fin dalla radice. Si applica, se volete il principio del “Divide et Impera”. Separando con intelligenza la parti dell’applicazione, e dando a ciascuna parte un compito ben preciso, per cui è ottimizzata, si ottiene un sistema semplice da realizzare, flessibile da configurare, e sicuro da testare.
Nella piccola AVR-IOT development board (Figura: 1) si identifica subito Il microprocessore al centro, ma alla sua immediata sinistra un nuovo Elemento di Sicurezza ATECC608A ed alla sua destra un network controller WiFi intelligente ATWINC15150.
L’elemento di sicurezza è di gran lunga la parte più piccola del sistema ma anche la più potente. Si occupa di tutta la parte crittografica necessaria per verificare l’autenticità del nodo IoT e per garantirne l’accesso alla cloud di Google in sicurezza. Il particolare processo produttivo lo rende ideale per difendere (come una cassaforte) le chiavi di crittografia di cui non rivelerà mai il valore, ma utilizzerà sempre e solo al suo interno efficientemente. Ogni tentativo di violazione (tampering) risulterà nella distruzione totale dei suoi contenuti, garantendo un livello di sicurezza nettamente superiore rispetto a soluzioni classiche che prevedono le chiavi siano salvate in EEPROM o Flash di un tradizionale microcontrollore. Eseguendo gli algoritmi crittografici più avanzati (per esempio Chiave Ellittica con curva a 256 punti) in hardware, invece che in software, permette all’elemento di sicurezza di fornire prestazioni molto elevate con consumi estremamente ridotti. Non a caso Google ha più volte suggerito l’uso dei prodotti ATECC di Microchip per garantire il livello di sicurezza che si richiede ad ogni applicazione IOT che si connette alle sue reti [link].
Il modulo controllore intelligente ATWINC1510 (figura 3) si prende cura invece di tutte la parte di connettività wireless (WiFi® in questo caso). Non solo si occupa di stabilire una connessione con un router WiFi 802.11b/g/n (usando WAP/PSK, WEP o anche Enterprise) ma è in grado di gestire una completa connessione di sicurezza (TLS/SSL) facendo previa verifica dell’autenticità del server a cui si connetterà. Il modulo è inoltre pre-certificato per applicazioni in USA, Canada, Europa, Giappone, Korea, China, India e Taiwan.
Così facendo il controllore intelligente sgrava l’applicazione di tutta la complessità relativa alle connettività, di fatto fornendo al microcontrollore (AVR) una connessione seriale bidirezionale sicura fino alle porte dei server di Google.
Da qui il passo è breve. Grazie al supporto fornito dall’elemento di sicurezza ATECC608A e dal controllore di rete WINC, al piccolo microcontrollore ATmega4808 (l’ultimo nato della nuova generazione di prodotti AVR con “Core Independent Peripherals”), non resta che effettuare un login (MQTT) e coordinare le attività di sensore o attuatore usando una semplice macchina a stati.
Pur già così semplice, la preparazione del codice AVR viene ulteriormente semplificata dall’uso di tool di sviluppo rapido come ATMEL START [link] e, recentemente dall’aggiunta in parallelo, del MPLAB® X MCC Code Configurator [link]. Questi permettono di creare un completo progetto IoT con pochi “click” del mouse. La loro costruzione modulare permette di aggiungere rapidamente nuovi sensori, presi da un catalogo di più di 500 schede di espansione Mikroe Click™ [link], e di (ri)configurare a piacere ogni parametro dell’applicazione (Figura 4).
Insomma, non solo è possibile migrare rapidamente sensori e attuatori basati sui più piccoli microprocessori (AVR) e trasformarli in complete applicazioni IoT senza dover riprogettare tutto, ma è forse persino più facile ed efficiente di molte soluzioni basate su processori ben più potenti e dotati di memorie di dimensioni ben maggiori. Nel frattempo non solo si sarà risparmiato un bel po’ di tempo, ma probabilmente si otterrà una soluzione a più basso consumo e più sicura! Chiedetelo a Google! [link]
A cura di
Lucio Di Jasio – Business Development Manager Microchip Technology, Inc.
Sicuramente l’IoT è un settore che via via sarà sempre più regolamentato e standardizzato. Speriamo chw tutto ciò porti a dei protocolli realmente standard e che non si inizi ad avere decine di versioni diverse per la realizzazione dei dispositivi IoT.
Sicuramente ci saranno molti protocolli, ampie possibilita’ di scelta.
Un protocollo standard molto diffuso nelle applicazioni IoT è l’MQTT, supportato tra l’altro sia dalla scheda presentata nell’articolo che da ESPertino (nel corso Embedded ho dedicato una lezione intera al protocollo). Comunicazione criptata (che richiede un engine crittografico integrato nel modulo/board per garantire un’elevata efficienza nella comunicazione) e meccanismo di publish/subscribe lo rendono adatto a moltissime applicazioni IoT anche critiche dal punto di vista della sicurezza. Con una scheda embedded a basso costo che supporti Linux (come ad esempio il Raspberry Pi) si può poi creare un gateway (a cui fanno riferimento i nodi IoT per la sensoristica) e connettersi a un server remoto oppure ai servizi cloud.