Introduction: DIY Termostato Online
In questo articolo tratto la realizzazione di un termostato controllabile via internet tramite una app android.
Ho usato la ormai onnipresente ESP8266, un sensore e poco altro
Ho visto in lungo ed in largo tanti esperimenti più o meno utilipraticidifficiliinutilisimpatici e cosi via, lo scopo sembra sostanzialmente quello di farti comprare qualcosa, poi se ti funziona o meno sono fattacci tuoi.
Sperimento anche io da sempre, ultimamente desideravo fare qualcosa che servisse, uno sfizio ma comunque con un impiego pratico di tutto rispetto.
Ho scelto questo perche ci vedo una sintesi dello spirito tecnologico dei tempi che corrono, c'è la filosofia IOT e tante altre belle cose direttamente embedded in questo progetto.
Step 1: Cosa Desideravo
La notte ho freddo e ho pensato di realizzare qualcosa che mi tenesse il letto ad una temperatura gradevole (tramite una termocoperta) ma sotto il mio controllo, da ora sotto il controllo di una serie di automatismi, successivamente aggiungerò una parte che controllerà il condizionatore, quando impiegherò un dispositivo con qualche pin in più, poi ...
Step 2: Cosa Occorre
Per realizzare quanto segue ho utilizzato quello che si vede in foto:
- una bread board
- un po di connettori di vario colore
- due interruttori con capocchia di colore diverso
- una basetta con led (anche un unico led con opportuna resistenza va bene) serve solo per controllare il funzionamento, poi sostituita con un transistor NPN e un relay o altro utile a controllare un carico a 220v .
- una scheda ESP8266 (su ebay ve la tirano addosso per poco)
- una interfaccia USB/seriale TTL indispensabile alla programmazione della ESP8266 (reperibilità come sopra)
- un sensore di temperatura, io ho usato il DHT11 che rileva anche l'umidità, poi sostituibile con altro a scelta
- ultimo ma non meno importante: l'alimentatore, infatti la ESP8266 tipicamente usata esige 3,3 V, potreste prenderli dalla FDTI ma non riuscirebbe a fornire la necessaria potenza, infatti solo la ESP consuma 300 millesimi di ampere, fatevi i conti ...
Step 3: Vediamo L'insieme
Nelle foto sopra è ben visibile come ho congegnato il tutto, sto ancora pensando a come inscatolarla, se mai ci riuscirò.
Fino alla fine sono sempre indeciso, avrei bisogno di una stampante 3D per poter fare quello che desidero, ma non si può avere tutto ...
Step 4: Ma Come Funziona ?
E' mediamente complicato, se non sapete cosa è un transistor o non avete mai giocherellato con arduino o con la programmazione e C è solo la terza lettera dell'alfabeto ... allora impegnatevi un po e ci arriverete.
Step 5: La Parte Hardware
L'hardware è abbastanza semplice, una volta messo a punto non avrete piu bisogno del collegamento seriale, vi sarà utile per altri progetti.
La scheda ESP8266 da me impiegata (01) ha disponibili solo due collegamenti IN/OUT.
Tale limitazione mi impone di usarne alcuni (almeno in questa fase) per piu di una funzione, vediamo come: Il pin GPO0 mi serve per leggere i valori provenienti dal sensore che può anche essere di diverso tipo. Il pin GPO2 invece mi serve (ora) insieme al reset per caricare il codice e successivamente per attivare il carico, ora ho collegato un led solo per fare un più semplice debug, successivamente attiverà il vostro dispositivo.
Di seguito lo schema messo a punto con fritzing
Attachments
Step 6: Le Parti Software: ESP8266
Per costruire il software ho usato l'ambiente IDE di arduino opportunamente messo a punto per la ESP8266.
Programmare questa schedina è facile e divertente, senza limiti, oggi piu che mai con il wired.
Cosa vi serve ? aggiungere l'occorrente, per tanto nella parte dedicata alla configurazione di arduino, ovvero (in sequenza) file>impostazioni, troverete in basso una riga con a sinistra indicato "URL aggiuntive per il gestore schede", li, una volta cliccato aggiungerete questa stringa http://arduino.esp8266.com/stable/package_esp8266com_index.json poi chiudete e riavviate.
Per completare l'opera dovete aggiungere quanto ora avete a disposizione nelle repository, quindi cliccate in strumenti>scheda e scegliete dal menu gestore schede, li cercate esp8266 by esp8266community e aspettate che quanto occorre venga prelevato.
Alla fine riavviate e sempre nel menu scheda scegliete la voce Generic ESP8266 Module.
Avete finito, ora il codice sarà compilato con caratteristiche peculiari tali da girare sulla esp8266.
quale codice ? questo, non è ordinatissimo ma funziona.
E' importante che specifichiate ove necessario le chiavi necessarie ad accedere ai servizio cloud di cui parlerò nel prossimo step.
Attachments
Step 7:
Step 8: Le Parti Software: Android
Mi occorreva una app che fosse chiara e comprensibile, il mio gusto sarà certamente discutibile ma piace cosi.
Tramite la piattaforma del MIT app inventor si possono fare grandi cose con estrema facilità e velocità, gli strumenti salvo rari dettagli mancanti ci sono tutti, io ho fatto varie app, ecco quella che considero definitiva.
Registratevi e date una occhiata ai vari esempi, c'è di tutto.
Il forum è interessante e ci sono tanti appassionati disposti ad aiutarvi e delucidarvi, in inglese.
E' importante che specifichiate ove necessario le chiavi necessarie ad accedere ai servizio cloud di cui parlerò nel prossimo step.
Attachments
Step 9: La Parte Cloud
Per mettere in comunicazione attraverso la rete occorre un server che faccia da tramite tra i due pezzi principali, ovvero il la parte in loco e la parte mobile, mi sono appoggiato alla piattaforma www.ic2cloud.com.
Questa organizzazione mette a disposizione un server a cui ci si puo appoggiare per tale tipo di operazioni e tanto altro, cosi facendo non dovete avere un server vostro ovvero una macchina in funzione in rete 24 ore su 24, comodo no ?
Chiaramente dovrete registrarvi, dare una occhiata in giro e per iniziare ad usarlo andate nella sezione in cui creerete il vostro account.
Successivamente la vostra chiave API (https://www.ic2cloud.com/wiring-api).
Adesso dovete creare una chiave combinata che contenga il nome utente del sito i2cloud e la password API.
Per farlo usate questa pagina: base64encode.org, li scriverete utente:pass e otterrete una accozzaglia di caratteri che vi identificheranno univocamente presso il servere i2cloud.
Prendetene nota, vi servirà dopo, ora vi occorre un codice che chiameremo UID, qui: guidgenerator.com ne potete creare quanti ne volete, serviranno ad identificare le vostre macchine, per ora ve ne basta una, prendetene nota.
Alla fine tutto si "riduce" ad una richiesta di scrittura sul server da parte del codice che gira sulla esp8266 il quale invierà quanto il sensore rileva dall'ambiente, una lettura dal server del valore di soglia impostato e altri controlli sempre di varie variabili che avrete il piacere di usare (se non usate direttamente quelle mie).
Su i2cloud, nella parte dedicata al signal manager potete verificare se le variabili sono inviate e ricevute, per "signal" si intende in nome del record o variabile.
Giù potete anche settarne con valori arbitrari, sempre per i vostri loschi test.
Sia da arduino che da android le richieste si effettuano combinando una stringa abbastanza complessa Tale stringa non vi impenmsierirà più di tanto, essa sarà composta dal codice sulla ESP8266 e sulla app android.
Il sistema è cosi default free, le due parti comunicano con il server in tempo reale .
prima di funzionare il sistema avrà infatti bisogno della especifica messa a punto di cui ora sapete.
Step 10: Conclusioni
E ora ? dovete scrivere il codice per l'IDE da caricare sulla ESP8266 e disegnarvi l'interfaccia per il telefono su app inventor.
No ?
OK, ve li ho messi a disposizione io, senza alcuna responsabilità e interesse alcuno.
Semplicemente se non vi funzionano sarò pronto a rispondere alle vostre richieste di delucidazioni.
Mi raccomando ! Ricordatevi di annotare ciò che imparate cosi da ripassarlo a tempo debito.