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:
- ESP32: https://amzn.to/3QWmJNh
- DHT11: https://amzn.to/41S74ou
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.
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.