Subtotale: €16,50 (IVA incl.)
Scopriamo le potenzialitร dellโapplicazione di instant messaging Telegram realizzando un telecontrollo basato su uno smartphone e una demoboard dotata di modulo WiFi.
Quando teniamo in mano il nostro smartphone, ormai possiamo dire di avere una porta aperta sul mondo: non solo per la connettivitร globale (telefono, Internet, Social, Instant Messaging) che ci fornisce, ma anche per le potenzialitร offerte dai link di rete wireless implementati, ossia il Bluetooth e il WiFi. Grazie ad essi e a specifiche app che spuntano come i funghi, da tempo lo smartphone puรฒ essere utilizzato come comando a distanza per unitร collocate sotto copertura, ma anche interconnesse via Internet.
Questo articolo nasce dallโidea di utilizzare uno smartphone per realizzare un sistema di controllo da WiFi, che si avvale di una scheda di sviluppo ospitante un modulo wireless ESP8266.
Non รจ la prima volta che proponiamo un sistema per inviare comandi a distanza; questa volta -perรฒ- proponiamo un comando wireless diretto via WiFi, sfruttando un software di instant messaging che possiamo considerare lโantagonista di Whatsapp: Telegram.
La scheda di sviluppo che utilizzeremo รจ la Espresso Lite V2.0, acquistabile direttamente da questo sito; puรฒ funzionare da sola (stand-alone) o insieme a una scheda Arduino, dato che รจ Arduino-compatibile.
La demoboard espresso Lite v 2.0
La scheda monta un modulo ESP8266 WROOM-02 (certificato FCC, CE e TELEC) con 4 Mb di Flash ed รจ stata progettata per le applicazioni IoT; le caratteristiche principali sono:
โข supporto per IDE Arduino e le sue librerie;
โข supporto bootloader per IDE Arduino;
โข tensione di alimentazione da 5 a 12 Vcc;
โข regolatore on-board a 3,3V (800 mA);
โข pulsante di reset e due pulsanti programmabili dallโutente.
Una delle particolaritร della scheda รจ che la sua piedinatura ha un passo di 2,54 mm; ciรฒ rende facile inserirla se occorre testarla con componenti che si possono disporre su basette millefori. Per agevolare lโinserzione la Espresso Lite puรฒ essere dotata di pin-strip maschio e femmina.
Definito lโhardware che useremo, vediamo ora che cosa possiamo fare e come sfruttare al meglio la nostra demoboard e lo facciamo con un progetto in grado di interfacciarsi con Telegram.
Telegram รจ unโapplicazione di messaggistica focalizzata su velocitร e sicurezza (รจ stata la prima a implementare la crittografia dei messaggi) รจ molto rapida, semplice da usare e gratuita. Basa il proprio funzionamento su un protocollo di comunicazione open source sviluppato appositamente per ridurre al minimo la quantitร di byte inviati per messaggio.
Il vantaggio di questo sistema consiste nello sfruttare la rete WiFi senza lโuso di moduli telefonici o SIM (invece con Whatsapp si dovrebbe registrare un numero di telefono e quindi bisognerebbe vincolare una SIM).
Telegram e i bot
Lโarma vincente di Telegram รจ che permette di creare, oltre ai classici account associati ai numeri di telefono, anche dei Bot. Un Bot รจ un sistema di risposta automatica che offre agli utenti la possibilitร di reperire informazioni o contenuti attraverso la scrittura di comandi indicati dal Bot stesso allโavvio della ricerca. Piรน precisamente, un Bot รจ un utente virtuale, ovvero un client automatico che si collega al servizio al nostro posto; per questo viene considerato un robot, non a caso Bot รจ lโabbreviazione di robot.
Lโutente puรฒ interagire con i Bot come fossero utenti, inviando loro messaggi, comandi e richieste utilizzando richieste HTTPS.
I Bot possono essere utilizzati per ottenere notifiche personalizzate e notizie; un Bot puรฒ agire come un giornale intelligente, inviando solo contenuti pertinenti non appena vengono pubblicati. In breve, gli potete dire quali messaggi o argomenti interessano e tra tutti vi invierร solo quelli.
Un Bot puรฒ arricchire le chat telegram con contenuti provenienti da servizi esterni, quindi offre integrazione con altri servizi. Di ciรฒ si occupano gli Image Bot, GIF Bot, IMDB Bot, Wiki Bot, Music Bot, Youtube Bot, GitHub Bot.
Un Bot permette di creare strumenti personalizzati: ad esempio puรฒ fornire avvisi, previsioni meteo, traduzioni, formattazione o altri servizi. Con i Bot รจ anche possibile creare dei giochi: un Bot puรฒ giocare a scacchi e dama contro di voi, agire come ospite in giochi a quiz, o anche prendere parte a un gioco di ruolo (Trivia Bot).
Un Bot potrebbe anche connettere le persone in cerca di interlocutori sulla base di interessi comuni o della vicinanza (HotOrBot).
Lo stesso canale Futuranet News รจ basato su un bot.
Gli utenti possono interagire con i Bot in due modi:
– inviando loro messaggi e comandi aprendo una chat con essi (come fossero altri utenti) o aggiungendoli ai gruppi; ciรฒ รจ utile per i chat Bot o news Bot come TechCrunch e Forbes bot;
– inviando richieste direttamente dal campo di input digitando lo @username del bot e la richiesta; ciรฒ permette di inviare contenuti dai bot in linea.
Per utilizzare i Bot รจ necessario aggiungerli nelle chat: nella schermata in cui cโรจ lโelenco delle chat si trova la sezione Cerca; qui bisogna scrivere il nome del Bot preceduto dal simbolo @. Allโavvio, il Bot darร le istruzioni da seguire per poterlo utilizzare. Nel nostro caso andremo a creare un bot personalizzato da noi creato, che ci permetterร di interfacciarci alla nostra scheda ed in particolare al modulo WROOM-02.
Lโapplicazione per ESP
Facciamo un passo avanti e cerchiamo di capire nella realtร che cosa possiamo fare con il progetto: immaginiamo che sia inverno e faccia molto freddo, siamo al lavoro e ci ricordiamo di non aver acceso la caldaia del riscaldamento; la prima idea che ci viene in mente รจ chiamare il vicino o un amico per chiedergli di accenderla.
Ma essendo appassionati di elettronica vorremmo essere noi a dare il comando…a distanza. Quindi potremmo utilizzare uno dei nostri telecontrolli TDG o installare un termostato GSM con modulo SIM800 che riceva comandi da SMS per attivare e disattivare la caldaia; ma in tal caso servirebbe anche una SIM telefonica e il relativo abbonamento.
Lโalternativa รจ creare un sistema di accensione/spegnimento dal nostro cellulare che faccia a meno della rete telefonica ma utilizzi il WiFi o Internet. Ciรฒ puรฒ essere fatto optando per tre soluzioni:
1. creare unโapplicazione sul nostro smartphone (anche se non tutti sarebbero in grado di elaborarla) e un firmware sulla scheda, ma il sistema risulterebbe molto complesso e necessiterebbe una discreta competenza, un tempo di sviluppo molto elevato, quindi le ore impiegate non appagherebbero lo sforzo;
2. aprire una pagina web sul nostro smartphone e creare un firmware sulla Demoboard Espresso lite v2.0 per collegarsi alla pagina allo scopo di scambiare informazioni, ma sarebbe scomodo perchรฉ volendo delle notifiche dovremmo aprire e aggiornare la pagina web, dovendoci autenticare, ecc.;
3. utilizzare un servizio di messaggistica quale รจ Telegram, appoggiandoci ad un Bot.
Avrete capito che questโultima รจ la soluzione da noi adottata, perchรฉ consente di ricevere notifiche (il modulo WiFi puรฒ inviare notifiche spontanee al nostro smartphone e questโultimo ci avviserร come se fosse un messaggio) garantisce sicurezza (solo tramite unโautenticazione -che si fa solo la prima volta- รจ possibile dialogare con il modulo) ed รจ comoda (non dobbiamo aprire una pagina web ma unโapplicazione con tutte le sue funzioni).
Vediamo dunque nel dettaglio di cosa si tratta: potete sfruttare TelegramBot lato telefono (si puรฒ utilizzare sia su Android che su smartphone basati su iOS, quindi Apple), perchรฉ non necessita di programmazione, invia notifiche di ricezione dei nuovi messaggi ed รจ unโapplicazione; mentre lato Demoboard potete usare il firmware da noi proposto.
La prima cosa da fare รจ cercare di capirlo (molte persone fanno copia/incolla) e nel caso migliorarlo. Come detto in precedenza, lโobiettivo di questo articolo รจ farvi capire come funziona il sistema che stiamo proponendo, provando a inviare e ricevere messaggi da remoto.
Procediamo a piccoli step: se non lโavete ancora fatto, installate Telegram sul vostro smartphone (Fig. 2). Ora, dallโopzione Contatti, digitiamo @BotFather e selezioniamolo; la Fig. 3 illustra lโinsieme dei comandi del Bot.
Adesso stiamo dialogando con un Bot (in questo caso il Botfather) ossia un account virtuale in grado di creare e modificare i Bot; come prima cosa scriviamo nella chat il comando proposto dal Botfather: /newbot. Il BotFather ci risponderร chiedendo un nome per il nostro Bot e poi lo username con cui potremo farlo aggiungere a chi vogliamo (il nome dopo la @, per intenderci).
Questโultimo dovrร necessariamente terminare con โBotโ.
Nomi validi quindi sono Ardubot, superbot, eccโฆ, sempre che non siano giร stati scelti da altri utenti (in questo caso scegliete un nome differente). Una volta finita la creazione del Bot, @BotFather ci risponderร con una schermata come quella in Fig. 4.
Se avete seguito la procedura di creazione alla lettera, noterete una stringa lunga 45 caratteri che รจ il โtokenโ e permetterร di autenticarci al server e di comunicare. Bene, dal lato applicazione per il momento abbiamo tutti gli ingredienti per preparare la nostra ricetta.
Ricordate quando abbiamo parlato della compatibilitร con Arduino? Ebbene, la nostra scheda puรฒ essere programmata direttamente dallโIDE di Arduino e quindi utilizzata da tutti gli appassionati del settore senza doversi cimentare nellโutilizzo di altri linguaggi (ad esempio LUA, utilizzato per la programmazione dellโESP8266 tramite il derivato NodeLua).
Detto ciรฒ possiamo cominciare a realizzare la nostra applicazione.
Come prima cosa dobbiamo aggiornare lโIDE di Arduino per far riconoscere la nostra board:
โข assicuratevi di aver scaricato lโultima versione dellโIDE Arduino;
โข dal menu โFileโ selezionare โImpostazioniโ;
โข nel campo โAdditional Boards Manager URLsโ inserire lโindirizzo http://arduino.esp8266.com/package_esp8266com_index.json
Impostate quindi i parametri come nella Fig. 5. Aprite ora il file termostato_wifi.ino scaricabile qui sotto nella sezione download. Il firmware permette di connettersi a una rete WiFi e una volta raggiunta la temperatura desiderata, attiva unโuscita della demoboard che ci servirร poi per azionare il relรฉ che accenderร la caldaia. Come vedremo in dettaglio, sono state inserite le righe di codice:
#define MAX_TEMP_OFF_CALDAIA 23
#define MIN_TEMP_ON_CALDAIA 22
Queste due define permettono di gestire la temperatura di accensione e quella di spegnimento della caldaia. Ricordiamo inoltre che maggiore sarร lโoffset di temperatura, maggiore sarร lโisteresi applicata (stabilitร del relรฉ ON/OFF). I comandi disponibili sono:
โข caldaia on (attiva caldaia);
โข caldaia off (disattiva caldaia);
โข temp (invia la temperatura della stanza);
โข tutti gli altri messaggi inviati saranno gestiti da un echo.
ร possibile aggiungere altri comandi confrontando il bot.message[i][5] con il testo da riconoscere. Ad esempio se vogliamo attivare lโuscita 13 inviando il comando Uscita ON, รจ necessario inserire nella routine chiamata Bot_EchoMessages() le seguenti linee di codice
if (bot.message[i][5] == โUscita ONโ) {
digitalWrite(13, LOW);
}
Avvio del programma
Come prima cosa dobbiamo connetterci alla rete WiFi esistente, quindi inseriamo il nome (ssid) e la password della nostra rete, come mostrato nella porzione di codice seguente:
La prima riga contiene il nome della rete, ossia lโSSID WiFi, mentre nella seconda va scritta la password di accesso alla rete stessa. Infine inseriamo i dati che riguardano il nostro bot: le righe di codice che riguardano questa operazione sono visibili nel Listato 1.
Listato 1
// Initialize Telegram BOT #define BOTtoken โIncollare il codice generato dal botfatherโ #define BOTname โnome del botโ #define BOTusername โusername del bot (per capirci quello che finisce in bot)โ #define ID_TELEGRAM Questo id lo si ricava la prima volta che inviamo il messaggio di start e permette di rispondere solo bot che vogliamo noi. Dando il comando start, il bot risponde comunicandoci il suo id.
Carichiamo il firmware
Se non ci sono errori di compilazione, procediamo con lโupload sulla scheda espresso lite v2.0; a riguardo ricordiamo che bisogna tenere premuto il pulsante โprogโ e premere per un secondo il pulsante di โresetโ.
Fatto ciรฒ eseguite lโupload e nel momento in cui si visualizzano i puntini (upload in corso) รจ possibile rilasciare il pulsante โprogโ.
Finalmente siamo giunti alla parte piรน bella e soddisfacente del lavoro! Abbiamo creato la nostra amata comunicazione tra il modulo ESP e il nostro smartphone.
Vediamo nel dettaglio:
โข apriamo ora la seriale e impostiamo il baud-rate a 115.200;
โข spostiamoci su Telegram e scriviamo il comando โstartโ (senza apici);
โข possiamo notare sulla console seriale la ricezione del messaggio e quindi lโecho in risposta:
GET Update Messages
…. connected to server
Sent Update request messages up to : 94650296
{โupdate_idโ:XXXXXXXX,
โmessageโ:{โmessage_idโ:669,โfromโ:{โidโ:XXXXXXXX,โfirst_nameโ:โGianlucaโ,โlast_nameโ:โXXXXXXXXโ,โusernameโ:โXXXXXXXXโ},โchatโ:{โidโ:XXXXXXXX,โfirst_nameโ:โGianlucaโ,โlast_nameโ:โXXXXXXXXโ,โusernameโ:โXXXXXXXXโ,โtypeโ:โprivateโ},โdateโ:1466755441,โtextโ:โstartโ}}]}
Copiamo il codice numerico dopo โupdate_idโ e impostiamo la #define ID_TELEGRAM con quel valore. Se tutto รจ andato a buon fine, dovrebbe arrivarci la notifica sullo smartphone da parte del nostro modulo, con una sequenza di messaggi, ovvero i comandi disponibili che sono attualmente implementati nel nostro programma e un codice ID_TELEGRAM che dovremmo scrivere nella define del programma.
Ora Telegram accetta i comandi (tranne lo start) solo dal nostro smartphone: pensate a quanti progetti si possono sviluppare avendo a disposizione un โterminale remotoโ che puรฒ comandare il modulo basato su ESP2866 da qualunque postazione; si puรฒ parlare a pieno titolo di domotica e pensare al piรน vasto ventaglio di applicazioni!
Vi ricordate che il nostro obiettivo finale รจ poter azionare il termostato da remoto per attivare e disattivare il riscaldamento in casa senza nessuna fatica; ebbene, procuriamoci ora lโhardware necessario, che รจ:
โข sonda termica DS18B20;
โข 1 resistenza da 4,7 kohm;
โข 1 scheda relรฉ comandabile da segnali TTL (3,3V/5V);
โข modulo basato su ESP2866.
Colleghiamo adesso il sensore di temperatura One-Wire DS18B20 al nostro modulo seguendo lo schema di cablaggio mostrato nella Fig. 6. Ora dobbiamo collegare il pin GND (รจ il filo nero, se utilizzate la sonda in versione One-Wire waterproof) al contatto GND; connettiamo poi il pin +5/3,3v (rosso in caso di One-Wire waterproof) al pin 3V3.
Collegate quindi il pin Data centrale (bianco in caso di one-wire waterproof) al pin digitale (14); verifichiamo ora che il sensore rilevi la temperatura esatta, dando il comando temp dal nostro smartphone (Fig. 7).
La funzione getTemp() restituisce un valore di tipo float dato che abbiamo bisogno di sapere anche il valore dopo la virgola.
Tale funzione รจ chiamata ogni x secondi (dove x รจ possibile impostarlo cambiando il valore di Bot_mtbs) nel loop ed รจ sempre confrontata con le due define:
#define MAX_TEMP_OFF_CALDAIA 23
#define MIN_TEMP_ON_CALDAIA 22
Ora possiamo monitorare la temperatura in qualsiasi momento della giornata.
Non ci rimane che collegare la scheda a relรฉ allโuscita di un altro pin digitale e settarlo nella riga #define PIN_GESTIONE_CALDAIA (abbiamo scelto il pin 13); la scheda รจ la RELAY2CH visibile in Fig. 8 e dispone a bordo di due relรฉ con scambio a 10A/250Vca (10A/30Vcc) attivabili con livello logici TTL o 0/3V (integra la logica del caso); si alimenta a 5 volt in continua, quindi possiamo connetterla in parallelo allโalimentazione della Espresso Lite.
Per i collegamenti fate riferimento alla Fig. 8, ricordando che il Vcc della scheda relรฉ va al Vin della Espresso Lite e le GND delle due vanno unite; siccome utilizziamo un solo relรฉ, colleghiamo il pin 13 della Espresso Lite, che abbiamo designato come uscita, allโIN1 della scheda relรฉ.
Quando la Espresso Lite attiverร lโuscita e con essa il relรฉ, vedrete il LED della scheda relรฉ accendersi; ciรฒ accadrร se la temperatura rilevata scende sotto quella impostata e la disattivazione se supera il valore massimo impostato.
Se si invia il comando โcaldaia onโ il relรจ si attiva e la caldaia si accende. Nel caso caso la temperatura sia maggiore di MAX_TEMP_OFF_CALDAIA Telegram invia un messaggio dicendo โAvvio spegnimento caldaiaโ ma il relรฉ rimane attivo e devโessere lโutente a mandare un messaggio โcaldaia offโ.
Tale gestione rimane allโutente perchรฉ se lo spegnimento della caldaia fosse stato legato alla MAX_TEMP_OFF_CALDAIA e si fosse poi inviato il messaggio โcaldaia onโ la caldaia sarebbe tornata in off. La gestione si potrebbe risolvere in vari modi: reimpostare le varie temperature, dividere le modalitร termostato ecc.
Conclusioni e Download
Finalmente abbiamo creato un termostato WiFi che ci informa dello stato della caldaia (o del condizionatore dโaria: in tal caso va invertito lo scambio del relรฉ, ossia si usano C ed NC), nonchรฉ della temperatura del locale monitorato.
Il sistema che vi abbiamo proposto in queste pagine giร funziona, ma se volete potete cimentarvi nella modifica delle due define riguardanti la temperatura: potete ridefinirle a int e creare due comandi sulla falsa-riga di quelli esistenti, che vi permetteranno di settare le due temperature da remoto; oppure potete creare comandi dedicati a eventuali gestioni di luce/tapparelle o altro ancora. In questo articolo vi abbiamo fornito le nozioni di base; non vi resta che metterle in pratica.
Codice Telegram con Espresso Lite
1 file(s) 17.99 KB
Per il download di questo file รจ necessario essere registrati al sito