Sensori per sistemi embedded – Parte 3 – Progetto di un sistema IoT con Telegram ed Arduino

L'articolo conclude la mini serie sui sensori per sistemi embedded, con focus legato ad Arduino e Raspberry Pi. In questa terza puntata ci occuperemo dell'integrazione di Arduino con il noto sistema di messaggistica istantanea Telegram. In particolare, realizzeremo un bot per la lettura di dati da un sensore di temperatura, una termocoppia, e per l'attuazione di semplici comandi di accensione e spegnimento di alcuni LED, simulando un piccolo sistema domotico. L'esempio, per quanto banale, raccoglie quanto c'è da sapere per la programmazione di un microcontrollore e la sua configurazione su rete Wi-Fi, nonché lo scambio di messaggi con un sistema remoto, in questo caso simulato attraverso un bot Telegram. Sketch per Arduino e configurazione hardware completano l'articolo.

Introduzione

L'Internet of Things, più comunemente noto con l'acronimo IoT, ha rivoluzionato il mercato consentendo all'elettronica dei sistemi embedded, i cui esponenti più celebri sono Arduino e Raspberry Pi, di trasformare qualsiasi dispositivo in un prodotto cosiddetto "smart". Spesso tale concetto è confuso con la parola intelligente, ma di intelligente dietro questi dispositivi c'è ben poco. Infatti, sarebbe più giusto parlare di dispositivi senzienti, ovvero dispositivi in grado di percepire il mondo che li circonda ed attuare, sulla base di una logica prefissata dall'utente, una serie di azioni volte a salvaguardare lo stato di salute o garantire la sicurezza dell'oggetto monitorato. Tali dispositivi, tipicamente low-power, ovvero dispositivi a basso consumo energetico, sono volti a garantire una continua operatività, anche su base annuale, senza l'intervento di un operatore. Ciò consente di dislocarli in aree poco accessibili, garantendo un continuo monitoring dei dati. Esempi sono le cosiddette reti di sensori wireless, argomento di cui abbiamo già dato ampio spazio all'interno di questo blog. Si lascia al lettore più curioso l'obiettivo di approfondire tali tematiche. L'articolo si pone l'intento di guidare il lettore nella realizzazione di un sistema IoT con Telegram ed Arduino. In particolare, viene spiegato come costruire una piccola stazione di monitoraggio ed attuazione attraverso l'utilizzo di un bot Telegram. Per chi non conoscesse la nota applicazione di messaggistica istantanea, semplicemente possiamo dire che si tratta di una versione di WhatsApp più avanzata, in cui non solo si può scambiare messaggi con le persone che conosciamo, ma è anche possibile costruire dei robot, detti bot, con cui comunicare inviando delle richieste ed ottenendo da loro risposte. Una sorta di Alexa/OK GOOGLE, ma in formato molto ridotto e semplificato. Nella fattispecie, l'articolo presenta non solo come costruire uno di questi bot su Telegram, ma anche come configurarlo per lo scambio dati con un sistema Arduino connesso in rete. Il microcontrollore si occuperà di leggere dati di temperatura all'interno di una stanza, e comandare l'attuazione (accensione e spegnimento) di alcuni semplici LED.

Hardware

Partiamo da subito con l'indicare quali sono le componenti di cui abbiamo bisogno. Le possiamo riassumere brevemente per punti, come mostrato nel seguito:

  • NodeMC (scheda per la comunicazione su rete Wi-Fi)
  • ds18b20 (sensore di temperatura)
  • 4 board relè (per l'accensione e lo spegnimento di LED)
  • breadboard (per la connessione delle varie componenti)
  • Arduino (qualunque, ma Arduino UNO o la sua variante Mega sono i più adatti)
  • alimentatore a 5V - 2A (necessario per alimentare il sistema e l'accessione/spegnimento dei LED)
  • account Telegram (necessario per poter creare il bot)

Come prima cosa, passiamo a collegare le componenti tra loro come mostrato nello schematico riportato in Figura 1. Cosa importante è che una resistenza di almeno 4.7 kOhm sia collegata alla sonda ds18b20, per consentirne il corretto funzionamento. Maggiori dettagli sono riportati sul datasheet del prodotto.

Figura 1: Schematico connessioni.

Figura 1: Schematico connessioni

Come possiamo vedere dallo schema in Figura 1, i dispositivi a relè sono utilizzati per comandare LED di grosse dimensioni, delle lampadine, ma volendo è possibile sostituirli anche con dei LED più piccoli, per intenderci quelli presenti nel kit base del microcontrollore Arduino. Nello schematico in Figura 1 possiamo ancora notare la presenza del modulo per la misura della temperatura, rappresentato come un transistor a tre terminali. Di fatti, la sonda non è altro che una termocoppia, dispositivo che varia la propria resistenza di uscita, dunque la tensione che Arduino leggerà ai capi dell'ingresso analogico, in funzione della temperatura esterna. Maggiori informazioni sul legame ingresso-uscita, temperatura-tensione, sono presenti nel datasheet del dispositivo. Anche qui si rimanda al lettore più curioso la possibilità di approfondire il funzionamento. In Figura 2 è riportata una foto del sistema finale.

Figura 2: Foto configurazione finale.

Figura 2: Foto configurazione finale

Software

Veniamo ora all'interfaccia software. Per poter comunicare con i diversi dispositivi è necessario installare delle apposite librerie. Tali librerie consentono in modo abbastanza semplice la parte di scambio di messaggi con il bot Telegram, la gestione dell'interfaccia Wi-Fi, nonché piccole ed altre cose come la shell SSH. Per rendere questo processo più semplice, qui il link per il download dell'archivio contenente tali librerie da inserire all'interno del percorso (sotto sistema operativo Windows) C:\users\user\documents\arduino\libraries. A questo punto, prima di procedere con il software vero e proprio, è necessario verificare che tutti i componenti funzionino correttamente. Dunque, la capacità di comunicare con ogni singolo dispositivo. Per questo è stato realizzato un semplice sketch Arduino che acquisisce l'indirizzo seriale dei diversi componenti, e li mostra a schermo. Il codice è riportato in Appendice, mentre in Figura 3 è mostrata l'immagine di output prodotta su monitor seriale da Arduino.

Figura 3: Schermata output di Arduino.

Figura 3: Schermata output di Arduino

Ancora, prima di procedere oltre, è buona norma verificare che la sonda sia in grado di misurare i dati di temperatura e che questi vengano mostrati a display correttamente. L'argomento è stato già presentato nella seconda puntata di questa miniserie, seppure con un esempio leggermente diverso. Quindi si rimanda all'articolo per ulteriori dettagli ed informazioni riguardo la configurazione hardware e la scrittura del software.

Bot Telegram

A questo punto possiamo procedere alla creazione del bot su Telegram. Per farlo, è necessario cercare all'interno dell'applicazione il contatto denominato "botfather". Da qui, intraprendere una comunicazione con lui. La lista di comandi disponibili per la creazione del bot sono accessibili utilizzando la stringa "/help". Per procedere alla creazione del bot, inseriamo il comando "/newbot" e premiamo invio. Tale comando avvierà il processo di creazione del bot. Da qui, botfather inizierà a farci una serie di domande volte a configurare correttamente il bot. In particolare, ci verrà chiesto di dare un nome al bot, ed un username per l'accesso alle impostazioni da amministratore. Il processo di creazione terminerà con l'assegnazione di un token per la comunicazione in ingresso ed uscita al bot.

ATTENZIONE: Mi raccomando, non cedete a nessuno il token perché è l'unico strumento a vostra disposizione per lo scambio dati da e verso Arduino. Chiunque in possesso del token potrà scambiare dati con il dispositivo (oltre a quello che avete previsto nel bot), nonché modificare il bot stesso. Dunque, prestate molta attenzione. In Figura 4 è riportata un'immagine di esempio per la comunicazione intrapresa per la creazione del bot con l'account botfather.

Figura 4: Immagine di esempio creazione bot Telegram.

Figura 4: Immagine di esempio creazione bot Telegram

Ottenuto il token, è sufficiente inserirlo nello sketch di Arduino (vedi Appendice) per poter avviare la comunicazione tra i due. Nel seguito sono riportati i campi da modificare in funzione dei dati a disposizione. In altre parole, il campo SSID contiene l'identificativo della rete Wi-Fi a cui è connesso il microcontrollore. Al contrario, user e BotToken, come suggerisce il nome, contengono i dati ottenuti da botfather riguardo al bot Telegram appena creato. Nel seguito un estratto del codice da modificare.

// Nel campo "xxx" inserire l'SSID 
const char* ssid = "xxx"; 
// Nel campo "yyy" inserire il campo password 
const char* password = "yyy"; 
// Nel campo "zzz" inserire il token restituito da bothfather 
const char BotToken[] = "zzz";

A questo punto, il processo è terminato e possiamo iniziare a comunicare con il bot. Per farlo ci basterà inviare, all'interno della chat, i seguenti comandi: 1-ACCESO, 1-SPENTO, 2-ACCESO, 2-SPENTO, 3-ACCESO, 3-SPENTO, 4-ACCESO, 4-SPENTO, TEMPERATURA. I comandi di attuazione ci consentiranno di aprire/chiudere il circuito a relè, e conseguentemente programmare l'accensione o lo spegnimento delle lampadine. Il comando "TEMPERATURA" avvierà il processo di lettura dei dati dalla termocoppia, con la conseguente visualizzazione a schermo della temperatura.

Qui i comandi per l'accensione e lo spegnimento dei LED in esecuzione sul sistema Arduino: [...]

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

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend