Sensore di temperatura WiFi

closeQuesto articolo è stato pubblicato 8 anni giorni fa quindi alcuni contenuti o informazioni presenti in esso potrebbero non essere più validi.

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.

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.

img_2232
Saldare D0 a RST (attenzione, che se la piedinatura cambia dovete seguire i nomi dei pin e non la posizione che vedete in foto)

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).

Dove saldare i cavetti delle batterie, attenzione alla polarità!
Dove saldare i cavetti delle batterie, attenzione alla polarità!

Il codice, che trovate come sempre su GitHub è molto banale e si può riassumere con i seguenti passi

  1. Attiva WiFi (mettete qui la vostra rete e la password, solo reti 2,4GHz)
  2. Attiva la comunicazione con il sensore DHT22
  3. Effettua la lettura (il sensore è lento, ci va un delay per attendere il risultato)
  4. 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
  5. 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.

31 pensieri riguardo “Sensore di temperatura WiFi”

  1. Ciao Maurizio,
    credo solo che lo abbiano finito, il DHT11 è un sensore molto meno preciso del DHT22, aspetta qualche giorno, magari riassortiscono 🙂

  2. 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?

  3. 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 😉

  4. 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 🙂

  5. 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

  6. 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!

  7. Grazie mille, sei stato gentilissimo !!
    Mi hai tolto gli ultimi dubbi, mho inoltro l’ordine ai cinesi.
    Se ci fossero altri problemi ti avviserò.

  8. 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?

  9. 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

  10. 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 !

  11. 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!

  12. 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?

  13. 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

  14. 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?

  15. ho, sbagliato il conto… 22 euri l’una tutto compreso! Per poco più prendo l’Arduino MKR1000.
    sono un po’ abbattuto…

  16. 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 🙁

  17. 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…

  18. 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.

  19. Non sapevo che le spese di spedizione fossero tassate, maledetti!
    Memento per la prossima volta: ci va pazienza 😀

    Buon lavoro con il tuo progetto!

  20. 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

  21. Ciao Francesco,
    vorrei sapere se ci sono aggiornamenti riguardanti questa soluzione.
    In particolare mi riferisco alla durata delle batterie.
    Grazie

  22. 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

Nota importante, da leggere prima di commentare

Questo è un blog scritto per passione, non fornisco quindi risposte di tipo professionale, se avete bisogno di un aiuto tecnico rivolgetevi ad un professionista di fiducia, non offendetevi se mi astengo dal rispondere. Vi ringrazio per la comprensione.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.