Il sensore DHT11 è uno dei più economici e presenti nel mercato, ideale per realizzare il nostro primo sensore smart con Home Assistant

Il DHT11 è un sensore molto diffuso e apprezzato per la sua semplicità d’uso e il basso costo. È in grado di rilevare temperatura e umidità relativa, risultando ideale per progetti di domotica e monitoraggio ambientale. Sebbene la sua precisione non sia elevata come quella di sensori più avanzati (come il DHT22 o l’SHT31), il DHT11 rappresenta una soluzione affidabile per applicazioni in cui è necessario tenere sotto controllo le condizioni climatiche di un ambiente. Grazie alla sua interfaccia digitale a singolo filo, può essere facilmente collegato a un ESP32, programmato con ESPHome e integrato in Home Assistant, permettendo di consultare i dati direttamente da un’interfaccia smart.

Acquista su Amazon:

Specifiche tecniche

Il sensore DHT11 è progettato per offrire una rilevazione semplice ed efficace della temperatura e dell’umidità. Funziona con una tensione di 3,3V o 5V, quindi è compatibile con la maggior parte dei microcontrollori, incluso l’ESP32.

Il DHT11 ha un consumo energetico molto basso, rendendolo ideale per dispositivi alimentati a batteria. Inoltre, è un componente molto compatto, il che lo rende facilmente integrabile in piccoli progetti IoT.

Il DHT11 è in grado di misurare temperature comprese tra 0°C e 50°C, con una tolleranza di ±1°C. Sebbene non sia il sensore più preciso sul mercato, è perfetto per applicazioni non critiche, come il monitoraggio del clima domestico o di piccoli ambienti. Il range di rilevazione dell’umidità relativa è compreso tra 0% e 100%, con una precisione di ±1%. Anche se questa precisione non lo rende ideale per applicazioni industriali, è più che sufficiente per usi domestici, come la regolazione dell’umidità in una stanza.

Il DHT11 utilizza un protocollo di comunicazione digitale a singolo filo, il che significa che è necessario un solo pin dati per ricevere le informazioni. Questo lo rende molto semplice da collegare e configurare. Tuttavia, ha una frequenza di campionamento limitata: può effettuare solo una lettura al secondo (1Hz), quindi non è adatto a situazioni in cui servono aggiornamenti molto rapidi.

Il DHT11 è disponibile sia come sensore standalone sia all’interno di un modulo. La differenza principale tra le due versioni è la presenza di alcuni componenti aggiuntivi nel modulo che ne facilitano l’uso.

Infatti, il sensore DHT11 standalone: ha quattro pin (VCC, GND, DATA e NC) e richiede l’aggiunta di una resistenza pull-up da 4,7kΩ a 10kΩ sul pin dati per funzionare correttamente, mentre il modulo DHT11 incorpora già la resistenza pull-up nel suo un piccolo circuito di alimentazione, rendendolo più facile da collegare direttamente a un microcontrollore.

Collegamenti

Visto che utilizzeremo il modulo, i collegamenti saranno ridotti al minimo. Connettiamo il pin + del modulo ai 3,3V della ESP32, mentre il pin al GND della ESP32. Il pin out, per l’invio delle informazioni, lo colleghiamo al GPIO4 della scheda.

DHT11

Codice

 Andiamo a creare un nuovo device su ESPHome e chiamiamolo DHT11. Saltiamo per il momento la connessione e selezioniamo la scheda che dobbiamo programmare (ESP32)

Una volta creato, clicchiamo su EDIT per modificare il codice. 

Questo è il codice per configurare una ESP32 per leggere i dati da un sensore DHT11 e inviarli a Home Assistant tramite ESPHome. Il dispositivo sarà accessibile in rete tramite Wi-Fi e potrà essere aggiornato via OTA (Over-The-Air) senza bisogno di connessione fisica. Potete scaricarlo a questo LINK.

All’inizio, il codice definisce il nome del dispositivo, sia quello tecnico (“dht11”) che quello più leggibile per Home Assistant (“DHT11”).

esphome:
  name: dht11
  friendly_name: DHT11

Poi si specifica che il microcontrollore utilizzato è un ESP32 e che il firmware verrà compilato usando il framework Arduino, che è più semplice e supportato rispetto ad altre alternative come ESP-IDF.

esp32:
  board: esp32dev
  framework:
    type: arduino

Il codice attiva il logger, che serve a registrare gli eventi e inviare messaggi di debug. Inoltre, viene attivata l’API di ESPHome, che permette a Home Assistant di comunicare con il dispositivo in modo sicuro grazie a una chiave di crittografia.

logger:

api:
  encryption:
    key: "BqCRwaw/0RgwhHXyzGBO3iarMqOlYI2eig2H6HZUCjU="

Per evitare di dover collegare il dispositivo fisicamente ogni volta che si vuole aggiornare il firmware, viene attivata la modalità OTA (Over-The-Air), con una password di sicurezza. Inoltre, è presente la funzione captive portal, che permette di riconfigurare il Wi-Fi direttamente da un browser in caso di problemi di connessione.

ota:
  - platform: esphome
    password: "b55ad4a669ee7c20692581cb11cbb7ad"

Per collegarsi alla rete, il codice usa le credenziali Wi-Fi salvate nei secrets di ESPHome (file separato non visibile nel codice). Se la connessione fallisce, il dispositivo crea un hotspot Wi-Fi di emergenza (“Dht11 Fallback Hotspot”) con una password predefinita, in modo che sia possibile riconfigurarlo.

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Dht11 Fallback Hotspot"
    password: "nKpx6Bhr75jB"

Il sensore è collegato al pin GPIO4 dell’ESP32 e misura due valori:

  • Temperatura in gradi Celsius (senza decimali, quindi arrotondata all’intero più vicino).
  • Umidità relativa in percentuale (anch’essa senza decimali).
    Il codice imposta un aggiornamento ogni 2 secondi, quindi ESPHome leggerà i dati e li invierà regolarmente a Home Assistant.
sensor:
  - platform: dht
    pin: GPIO4
    temperature:
      name: "Temperatura"
      unit_of_measurement: "°C"
      accuracy_decimals: 0
    humidity:
      name: "Umidità"
      unit_of_measurement: "%"
      accuracy_decimals: 0
    update_interval: 2s

Salvate e verificate con Validate se il codice è stato scritto correttamente.

Collegate la ESP32 al computer tramite cavo USB, e cliccate su Install.

Conclusa l’installazione, integriamo il device su Home Assistant. Dovrebbe essere arrivata una notifica sulla plancia. In ogni caso, per integrarlo andate su Impostazioni -> Dispositivi e servizi e apparirà il dispositivo DHT11 da integrare.

Autorizzate la configurazione ed otterrete quanto segue.