Dato che è iniziato il freddo e se come me, state spesso fuori, il modo migliore di trovare la casa calda al rientro è quello di sostituire il classico Termostato con uno digitale e comandabile da Web.
E visto che era ora di mandare in pensione il vecchio termostato fatto anni fa', ho passato un fine settimana con saldatore e millefori per vedere di realizzarne uno un po' più aggiornato.
Ho deciso di usare un po' di quelle Board che mi compro su Ebay ( le compro per curiosità) e quindi con ProMicro 16Mhz, board Ethernet con ENC28J60, modulino RTC con DS1307, Display LCD 16x2 , sensore di temperatura DS18B20 etc etc.
Assemblo il tutto , perdo un po' di tempo con lo sketch.. et voilà, il tutto funzionante e installato.
Cosa c'entra questo con il titolo del Topic ? Niente, era solo la premessa, visto che questo mi portava ad usare un cavo di rete volante e non è bello avere un cavo in giro per casa ( personalmente non me ne importerebbe, ma c'è chi si lamenta ) , quindi mi sono detto: passiamo al wireless e facciamoci un termostato 2.0.
Ne monto un' altro e al posto della scheda di rete ci inserisco un ESP8266-01. Mi danno un po' per aggiornare il firmware ( ma chi me lo ha fatto fare ) dato che era dei primi modelli ( roba di più di un anno fa ) e ........ insomma, il tutto non mi piaceva.
Allora mi guardo un po' in giro e vedo che ho degli ESP826-12, normali e NodeMCU.
Carini, mi dico, con questi se uso un LCD I2C, ce la faccio anche con i pochi pin che hanno.
Assemblo il tutto su Breadboard, LCD, l'RTC, 3 pulsanti, un relè , il sensore di temperatura e pure un led che mi indica che la caldaia è accesa ( visto che nel precedente me ne ero scordato ).
Perdo un po' di tempo a fare un programma ( non c'è cosa peggiore di ostinarsi a modificare un programma fatto per un'altra logica..... e io come programmatore sono proprio scarso ).
Risultato..... funziona !.
Troppa roba, mi dico. Prima di tutto l'RTC con DS1307 tanto vale che lo tolga, visto che 10sec al giorno li perde ( o meglio, va avanti ) e dato che è comunque collegato ad internet, tanto vale usare il solo NTP. Poi questa doppia alimentazione...... tristissimo.
Se voglio usare solo i 3.3V, devo togliere l'LCD, con questa tensione proprio non va ( ma per scrupolo ho pure controllato ).
Mi ricordo che da qualche parte avevo dei piccoli TFT, perché li avevo usati su una Teensy e dopo aver dato un'occhiata alla cronologia acquisti di Ebay ( e meno male , perché ogni tanto tiro fuori una bustina ancora sigillata e mi dico.... cos'è questo? ) vedo che a suo tempo ne avevo prese due, quindi una ce ne doveva essere ancora.
Trovata. Bene, ora non mi resta che capire come collegarla. Tra cronologia del browser, i vecchi Sketch usati e San Google, comincio a racapezzarmici. Ora rimane il problema della gestione SPI sugli ESP, mai usata sino ad ora. E infatti a parte qualche casuale riga colorata, dal display non ottengo altro. Sarebbe stato troppo bello, mi dico. E dato che non avevo nessuna intenzione di spulciarmi Librerie e Datasheet, per una cosa risolvibile acquistando per pochi euro un TFT sicuramente funzionante, provo a fare una ricerca su Internet per vedere se qualcuno aveva questo problema, anche se vedevo che l' ESP su detta libreria era previsto.
A volte capita anche che si riesca a trovare quello che si cerca e questa è una di quelle volte.
Perfetto, funziona ( il link è nello sketch ).
Ora però c'era da rivedere un po' il tutto, visto che il display si porta via 5/6 pin. Tolgo quindi i pulsanti, lasciandone solo uno, per l'impostazione della temperatura da locale uso un potenziometro collegato sull'ADC e come Relè uso un piccolo FEME da cs, che sarebbe da 5V ma che a 3,3V va' che è una meraviglia.
Un'altra modifica al programma, dato che da remoto non è che posso girare la manopola del potenziometro e quindi ho dovuto usare due valori di temperatura impostata ( locale e da Web ).
Anzi, visto che il mio punto dolente è la programmazione ( come dicevo sono scarso ), se ci fosse qualche anima pia interessata a farsi un termostato con pochi componenti e avesse voglia di dargli una sistemata ( l'HTML è da 20anni che non lo usavo più ) mi farebbe oltremodo felice.
In allegato trovate Sketch e schema. Per quanto riguarda l' IDE dovete installare il core attraverso il library manager ( GitHub - esp8266/Arduino: ESP8266 core for Arduino ) e per programmare l' ESP vi consiglio di farlo attraverso un semplice convertitore USB-TTL ( ricordandovi che ne serve uno con logica a 3.3V ), basta andare su Ebay, cercare USB TTL 3.3V e ve ne appaiono un'infinità .
Ps. Il consumo medio e' di circa 70/80mA ( a relè spento ), ma evitate di alimentare il tutto con l'uscita 3.3V del convertitore USB, avreste sicuramente dei problemi. Usate un'alimentazione esterna, tanto dovreste comunque prevederla.
Il TFT è Questo
Io a suo tempo li presi Qui
Termostato_ESP8266_TFT.ino (14.1 KB)