Nel progetto della domotica fai da me non può mancare un sensore di temperatura, in questo caso con alcune caratteristiche particolari, utili a metterlo in ogni punto della casa senza dover cablare o far passare fili in giro per casa.
Le caratteristiche che sono riuscito ad ottenere sono:
- Economico
- WiFi
- Portatile, quindi a batteria con una durata decente senza dover cambiare pile ogni pochi giorni.
- Interfacciabile con la mia centralina basata sul Raspberry Pi
La lista della spesa è veramente minima e prevede, purtroppo, lunghe attese, perché tutto in arrivo dalla Cina.
- WeMos D1 Mini
- Sensore DHT22 (questo shield non esiste più, quindi dovete ripiegare su DHT12 o SHT30, il codice potrebbe cambiare)
- Contenitore per 3 pile AA
- Scatoletta
La scheda WeMos D1 mini è basta su ESP8266, un microcontrollore tipo Arduino, ma con alcune caratteristiche che lo rendono davvero interessante.
Innanzitutto costa poco, con 4€ ci si porta a casa il processore, il modulo per alimentarlo e programmarlo via MicroUSB e tutta l’elettronica necessaria, poi è WiFi, di serie, senza nessun tipo di difficoltà a collegarlo alle reti casalinghe, ha la funzione di deep sleep, durante la quale non è attivo e consuma 0,3mA, questo lo rende perfetto per essere alimentato a batteria; in ultimo, ma non meno importante, si programma tramite l’IDE di Arduino, quindi il tutto è davvero semplice, se si ha già conoscenza della programmazione di Arduino.
Ho scelto la WeMos perché produce anche dei piccoli shields con sensori e altri dispositivi piccoli (relè, display OLED, …). Un po’ di pratica con il saldatore ed è possibile avere il proprio sensore di temperatura che occupa circa 2 cc (sì, è davvero piccolo!)
La parte di assemblaggio hardware è davvero banale: si saldano i pin sulla D1 e si saldano gli altri pin sullo shield, poi si collegano tra di loro. Fatto. Anzi, no, serve una saldatura aggiuntiva che colleghi tra di loro il pin RST e il pin D0 sullo shield con il sensore della temperatura.
A cosa serve questo collegamento? E’ assolutamente necessario per il ciclo di deep sleep. Quando si impartisce il comando per questa specie di ibernazione, c’è un contatore interno che consuma molto poco e dà il segnale di reset al pin D1 al termine del conteggio, collegando il pin D1 al pin di reset questo sveglierà la scheda che riprenderà il suo lavoro, come appena accesa.
Perché devo saldarlo sullo shield? Perché quando questi due pin sono collegati tra loro è impossibile scrivere il programma nel microcontrollore, quindi quando si deve aggiornare il codice lo shield può essere tolto, così non ci saranno problemi.
L’alimentazione può essere fornita tramite 3 pile stilo AA alcaline o ricaricabili. messe in serie. Se alcaline, la tensione in uscita sarà 1,5×3 = 4,5V, se ricaricabili 1,2×3 = 3,6V (sapevate che le pile ricaricabili sono da 1,2 e non da 1,5?), la scheda funziona a 3,3V e ha un regolatore di tensione che le permette di funzionare anche con i 5V della USB, pertanto fornire un po’ più di 3,3V permetterà al tutto di funzionare adeguatamente.
Ho fatto un po’ di prove è sono giunto alla conclusione che i fili nero e rosso che escono dalla scatolina delle batterie possono essere saldati sulla scheda D1 Mini ai pin 5V (il rosso) e GND (nero). Con 3 pile stilo ricaricabili da 2000mAh sono arrivato a fare più di 6,500 letture (circa 90gg con una lettura ogni 20 minuti).
Il codice, che trovate come sempre su GitHub è molto banale e si può riassumere con i seguenti passi
- Attiva WiFi (mettete qui la vostra rete e la password, solo reti 2,4GHz)
- Attiva la comunicazione con il sensore DHT22
- Effettua la lettura (il sensore è lento, ci va un delay per attendere il risultato)
- Scrive la lettura chiamando il server web (quello fatto sulla centralina, se non ve lo ricoardate, andate a vedere il post relativo) che la memorizza
- Va in ibernazione per 10 minuti (ma potete mettere il tempo che più vi piace) per poi ricominciare dal punto 1
Nel codice, al momento della scrittura del valore sul DB, c’è il parametro della stanza, così, avendo più sensori sparsi per casa, si può avere l’andamento della temperatura in ogni stanza. Ho dovuto faticare un po’ per la creazione del link http per scrivere i dati nel DB.
Scrivere il codice tramite l’arduino IDE è banale, basta seguire la semplicissima guida per abilitare la scheda, scegliere il dispositivo D1 mini (con me ha funzionato quello indicato come “retired”) e usarla esattamente come Arduino. Con il Mac non ci sono riuscito, ho fatto tutto con un PC Windows 10.
Se invece volete creare un qualunque altro sensore che misuri il parametro ad intervalli regolari (umidità, gas, pioggia, acqua nella terra delle piante, allagamento, …) basta sostituire il DHT22 con il relativo componente e studiare come interfacciarlo con l’ESP, solitamente ci sono librerie per ogni tipo di sensore.
Sto facendo la lista della spesa 🙂
il DHT22 sembra non essere più disponibile sostituito dal DHT11
https://it.aliexpress.com/store/product/DHT-Shield-for-WeMos-D1-mini-DHT11-Single-bus-digital-temperature-and-humidity-sensor-module-sensor/1331105_32534235492.html
Ciao Maurizio,
credo solo che lo abbiano finito, il DHT11 è un sensore molto meno preciso del DHT22, aspetta qualche giorno, magari riassortiscono 🙂
Ho un pò di sensori BMP180 (Temp/Hum/Press) che ho usato sul raspberry…potrei provare ad usare quelli.Dove posso cercare le librerie per interfacciarli?
prova a partire da qui, Adafruit è sempre piena di risorse interessanti (cerca le librerie per arduin
MITICO!!! 🙂 🙂
trovato:
https://learn.adafruit.com/bmp085/using-the-bmp085-api-v2?view=all
Può andar bene anche questo?
http://www.banggood.com/D1-Mini-NodeMcu-Lua-WIFI-ESP8266-Development-Board-p-1044858.html
Così ad occhio direi di sì
Ciao Francesco,
prima di tutto ti ringrazio per le belle idee da cui sto traendo spunto.
Leggendo : , mettono in evidenza che usando il DHT shield sovrapposto al D1 Mini funzioni male o comunque peggio rispetto ad usarlo separatamente o con la DUAL-BASE.
“The problem with the dht-shields is that they only work fine if you don’t use them as shields right on top of a D1 mini.”
dicono sia meglio usarli così : https://ae01.alicdn.com/kf/HTB1D1rLMXXXXXXtXVXXq6xXFXXX2/202831103/HTB1D1rLMXXXXXXtXVXXq6xXFXXX2.jpg
Cosa ne pensi ? Hai qualche riscontro sul fatto che conviene NON sovrapporli ?
Grazie in anticipo 😉
Sicuramente potrebbe patire del calore generato dalla scheda durante il suo lavoro, ma accendendolo per pochi secondi alla volta non credo che questo possa influenzare la lettura, ho controllato con altri termometri e le temperature sono sufficientemente corrette per quel che serve a me 🙂
Se volessi usare la Dual-Base, debbo comunque effettuare la ponticellatura tra il pin RST e il pin D1 sullo shield per attivare il ciclo di deep sleep ?
Ultima domanda, visto che in casa ho a disposizione svariate prese di corrente; se alimentassi il WeMos D1 Mini direttamente con un alimentatore micro usb
ci sarebbero differenze sui consumi rispetto alle batterie ?
p.s. : è la seconda volta che invio questo messaggio
La connessione tra D1 e RST va fatta comunque, se no, una volta messo in deep sleep non riusciresti più a riprenderlo (il deep sleep attiva D1 dopo il tempo di attesa, se non è connesso a RST la scheda non si resetta).
L’energia che usa è sempre la stessa, anche io ne ho uno collegato a un carica batterie USB, il grosso vantaggio è che non devo cambiare le pile ogni 4 mesi 🙂
PS non ho visibilità del primo invio, ci sarà stato un problema in quel momento, se si ripete mi avvisi? Grazie!
Grazie mille, sei stato gentilissimo !!
Mi hai tolto gli ultimi dubbi, mho inoltro l’ordine ai cinesi.
Se ci fossero altri problemi ti avviserò.
Ciao Francesco, ho letto con molto interesse il tuo articolo, vorrei farti una domanda…
Io sto cercando di realizzare un progetto simile, ma dovrei ricevere il valore di temperatura e tramite arduino visualizzarlo su un display. E’ un progetto semplice ma non riesco a realizzarlo, in rete non trovo nulla del genere, tutti i progetti effettuano la visualizzazione su telefono o pc. Saresti così gentile da aiutarmi?
Pensavo di realizzare il tutto con una NodeMCU ESP-12E con collegato un sensore DS18B20 come trasmettitore ed una Esp8266-01 ed un display collegati ad Arduino come ricevitore. E’ fattibile?
Ciao Andrea,
fare un progetto intero così nei commenti è complesso, ma se vuoi attaccare un sensore ad Arduino e leggerne la temperatura trovi le guide direttamente nel sito di arduino.cc, c’è sicuramente la guida di base per il sensore di temperatura (sensore, resistenza e 10 righe di codice) e per il display c’è sia la guida per LCD (come quello che trovi nel mio misuratore di corrente) che per il display 16×2, che è ancora più facile.
Se invece il sensore di temperatura è lontano da Arduino puoi vedere come ho fatto i sensori su ESP8266 e usare un MKR1000 che ha già la WiFi integrata. Da esoerienza, più cose aggiungi ad arduino, più la cosa si complica in modo esponenziale
Ciao Francesco! Dopo aver eseguito con successo il tuo tutorial per la videosorveglianza, ed essere successivamente riuscito a migrarlo su Telegram ( devo ringraziare la chiarezza e dettagli, ma anche i tuoi podcast per esserne venuto a conoscenza), mi chiedevo se secondo te sarebbe possibile ( ed eventualmente non troppo difficile) riuscire ad utilizzare un Wemos D1 mini con sopra uno schield relè per controllare uno scaldabagno o magari l’apertura di un cancello automatico o ti un portone tramite citofono. Tu che ne pensi? Ti sembra una buona idea? Saluti !
Ciao Mario,
il relè su WeMos lo sto testando in questi giorni e quindi uscirà un post a lui dedicato, lo faccio con il mio bot di Telegram che fa una chiamata http al server web aperto dalla scheda wemos, a questo punto puoi comandare tutto quello che vuoi!
Aspetto con ansia! Ai relè avevo già pensato appena completata la tua guida sul bot di Telegram, avrei potuto provare da solo ma ho alcune lacune tecniche che me lo rendono impossibile, grazie a te imparo sempre qualcosa di nuovo. Comincio ad ordinare una marea di relè shield per Wemos d1 mini e Wemos d1 mini … Serve altro?
Ciao Mario,
mi piace questo entusiasmo! Io ho fatto tutto con una wemos e uno shield relè, non serve altro, quindi ti servirà una coppia per ogni luce/dispositivo che vorrai comandare
Si sono entusiasta! Guarda qua Francesco
http://s.aliexpress.com/rYRbaENr puntiamo sul nuovo pro oppure va comunque bene la versione 2.2.0 del mini? Risparmiamo? Certo che mi fa proprio gola sto mini pro…Ahaha
Secondo me per quello che devi fare il mini va benissimo!
Ciao Francesco, ho letto con interesse questo tutorial e ho ordinato 3 schede D1 mini su Aliexpress ma, amara sorpresa, mi sono costate 11 euro l’una per via del dazio doganale oltre che per le spese di spedizione… Ti è successo lo stesso?
ho, sbagliato il conto… 22 euri l’una tutto compreso! Per poco più prendo l’Arduino MKR1000.
sono un po’ abbattuto…
Ciao Guido,
sono i rischi di comprare dalla Cina, purtroppo. A me fino ad adesso la dogana mi ha fermato solo delle pale per l’elicottero radiocomandato qualche anno fa, anche lì mi hanno bastonato per bene.
In media, se l’ordine è sotto i 20€ i rischi sono più bassi che se è un ordine maggiore, ma un po’ di rischio c’è sempre.
Mi spiace davvero un sacco 🙁
Come consigliato da Francesco mantenetieniti basso come costo con le spedizioni dal singolo venditore o pensate ad altri metodi anche piuttosto semplici. Purtroppo alle volte puoi non aver mai ordinato niente ed al primo colpo ti fanno una sorpresa così ed il poveraccio di comprare su questi mercati non vuole più sentirne parlare…
Sì Mario, è proprio l’ingenuità ( ma forse di più la malignità dello Stato italiano) che ti fa cadere in certe trappole.
Comunque brevemente, anche se magari per molti non è una novità, nel mio caso è successo questo:
– ordino 3 Wemos D1 mini pro a $ 5.5o totale $ 16.50 ( sarebbe perfetto!!!)
– ho fretta (mannaggia) e invece della posta ordinaria prendo il servizio Express $ 19.40
Ho fatto i miei conti e ci sto ancora dentro.
Anche lo stato fa i suoi conti e somma $16.50 + $19.40 = $35.90 ( aih, ho superato la soglia 22€) e ai $35.90 applica il dazio e alla risultante aggiunge l’iva (l’iva su una imposta!!!).
Altri 34 euro. In totale sono arrivato a 66 euro.
Morale: bisogna tenere conto anche della spedizione ai fini del raggiungimento della soglia, e comunque mai avere fretta: i soldi della spedizione vengono tassati due volte, come quelli del prodotto acquistato.
Questo progetto mi piace ancora molto e ora voglio concentrarmi sul nuovo acquisto nella speranza di dimenticare la disavventura.
Non sapevo che le spese di spedizione fossero tassate, maledetti!
Memento per la prossima volta: ci va pazienza 😀
Buon lavoro con il tuo progetto!
Ciao Francesco, complimenti per l’articolo, sto provando pure io ad implementare il progetto. Ti segnalo un errore nel testo, quando dici di collegare il pin D1 a RST per il deep-sleep correggilo in pin D0. L’immagine è corretta ma il testo porta in errore.
Ciao,
Stefano
Ciao Stefano, hai perfettamente ragione! Lo correggo subito, Grazie della segnalazione!
Ciao Francesco,
vorrei sapere se ci sono aggiornamenti riguardanti questa soluzione.
In particolare mi riferisco alla durata delle batterie.
Grazie
Ciao Carlo,
pensavo di passare tutto a una cosa con le LiPo, ma ho scoperto troppo tardi (per portarlo alla Maker Faire) che di connettori delle LiPo ce ne saranno almeno 20 e quindi ho la batteria con il connettore diverso rispetto a quello della scheda. Secondo me con una LiPo e il sensore nuovo si arriva a un annetto, ma è una stima