ESP8266 e NodeMCU – Monitorare la temperatura interna dell’automobile

Dopo aver installato il firmware NodeMCU sull’ESP8266 è tempo di testarlo con uno script in Lua che sfrutti sia le capacità di comunicazione con sensori, sia le capacità di comunicazione WIFI della scheda.

Quale miglior occasione per misurare la temperatura interna della mia automobile nelle calde giornate di Giugno durante la sosta nel parcheggio del mio luogo di lavoro?

Hardware

Per realizzare questa semplice scheda io ho usato i seguenti componenti:

  • ESP8266  nella versione ESP-01 più che sufficiente per il progetto
  • Sensore di temperatura/umidità DHT22 (eventualmente si può utilizzare l’impreciso DHT11)
  • Per l’alimentazione io ho optato per un alimentatore a 5v (USB) + un convertitore 5v-3.3V montato direttamente sulla board
  • Il circuito è stato montato sulla board proto5x5_rocket_dpcb di Dirty PCB

IMG_20150525_150129

Firmware – https://github.com/valerio-vaccaro/nodemcu-lua-scripts/tree/master/car_monitor

La board è stata programmata mediante il firmware NodeMCU e sono stati aggiunti due script:

  • init.lua – esegue semplicemente il file dht22_mqtt_car.lua (NodeMCU esegue automaticamente init.lua una volta che la board è stata correttamente avviata)

  • dht22_mqtt_car.lua –  effettua una serie di operazioni per assicurare la connessione e l’invio dei campioni di temperatura ed umidità:
    • si connette alla WIFI disponibile (e continua a controllare la connessione)
    • si connette al server MQTT corrispondente (in funzione della WIFI attualmente connessa)
    • si sottoscrive alla coda /temp/random (per ora i messaggi ricevuti vengono semplicemente stampati)
    • ogni 30 secondi legge temperatura ed umidità dal sensore DHT22
    • crea un messaggio JSON sulla base dei dati letti
    • invia il messaggio JSON sulla coda  /esp8266/car

Per caricare gli script ho usato l’ottimo tool multipiattaforma ESPlorer ed ho usato la piattaforma Node-RED per ricevere i dati da MQTT, filtrarli spedendo poi il risultato a EmonCMS per la storicizzazione e la rappresentazione grafica.

Facile ed economico!!!

6 Comments


  1. Ciao, molto interessante il tuo progetto, vorrei provare a realizzarlo, ma non ho capito il discorso mqtt, in pratica poi come fai a visualizzare i dati? Citi node-red ed emonCMS, non è che potresti spiegare meglio anche quest’ultimo passaggio? Grazie ancora, ciao

    Angelo

    Reply

    1. Ciao Angelo,
      i dati vengono spediti dalla scheda con il protocollo MQTT (http://mqtt.org/) verso il broker MQTT. Node-RED non fa altro che ricevere i dati dal broker (dalla stessa coda impostata sullo script Lua), formattarli e spedirli al nodo EmonCMS (https://www.npmjs.com/package/node-red-node-emoncms)
      , questi non fa altro che tradurre il messaggio in una richiesta HTTP secondo le API di Emoncms.
      I dati sono quindi trasportati con MQTT, elaborati con Node-RED, storicizzati e presentati da EmonCMS.

      Ciao,
      Valerio

      Reply

  2. Salve, non so se mi può’ aiutare, ho compilato la lista come da all’ allegato, ma a me mi da due errori nella linea 26 è 32, come avrà’ capito non ci capisco niente di programmazione, sarebbe così gentile di sbrogliare questo nodo? La ringrazio in anticipo della sua cortese attenzione. Luciano

    Reply

  3. Ciao, premetto che non ci capisco niente, ma sto imparando. Ho copiato lo script per misurare la temperatura con il modulo ESP8266-01 ma mi da due errori nella riga 26 e 32, dopo averne risolti tanti di spazi tra le varie righe, questo è’ il primo problema, subito dopo devo sostituire dht22 con un dht11, le chiederei se basta solamente sostituire il numero in tutto lo script o bisogna riscrivere in qualche altra maniera. Per informazione dopo tanto tempo sono riuscito a fare quello che ha scritto all’inizio di questo articolo.
    La ringrazio in anticipo del tempo che perderà’ per aiutarmi. Comunque vada le faccio i complimenti per tutto quello che sta facendo per chi deve imparare. Saluti Luciano

    Reply

    1. Ciao Luciano,
      quelle righe (26 e 32) sono quelle per la connessione a MQTT, che broker MQTT stai usando? Mosquitto per caso?
      Che versione del firmware di nodeMCU?

      Per la sostituzione del dht22 con dht11 basta sostituire la riga
      dht22 = require(“dht22”)
      con
      dht22 = require(“dht11”).

      Fammi sapere se fai progressi e buon divertimento.

      Valerio

      Reply

  4. salve,

    i l programma mi da due errori nella riga 26 e32 mi puo aiutare?

    sono alle prime armi e non ci capisco niente.

     

    grazie

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *