community italiana di domotica personale
 
Realizzare, tramite ESPHome, un sensore di presenza radar a microonde integrabile a Home Assistant (o altro)

Realizzare, tramite ESPHome, un sensore di presenza radar a microonde integrabile a Home Assistant (o altro)

SCOPI DEL PROGETTO:
  • Realizzare un sensore di presenza con tecnologia radar microonde
  • Livello di difficoltà: medio
  • Costo: medio/basso
CONCETTI AFFRONTATI:
  • Interconnessione tra sensore e board ESP32
  • Configurazione firmware ESPHome
COMPONENTI SOFTWARE UTILIZZATE:
COMPONENTI FISICI UTILIZZATI:
GUIDA maggiormente DEDICATA A utenti:
Tutti gli ambienti
NOTE E DISCLAIMER
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata e realizzata SOLO da personale qualificato;
  • qualsiasi modifica non prevista attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno infatti puro scopo didattico) e fa decadere garanzia, omologazioni e certificazioni di qualità; dei dispositivi interessati;
  • tutte le tecniche descritte si intendono applicate a software e firmware aggiornati alle ultime versioni disponibili;
  • gli articoli di inDomus sono totalmente indipendenti e non sponsorizzati. Se mai questo cambiasse, verrà segnalato chiaramente sulle pagine oggetto di sponsorizzazione;
  • questa pagina è materialmente scritta e manutenuta da più individui: non ci si aspetti né si pretenda un supporto personale. In caso di difficoltà, chiedere supporto alla community sul nostro forum o sulla nostra chat;
  • se hai bisogno di orientarti, c'è la mappa.
Revisione progetto: 1.0

Abstract

Negli ultimi tempi è esploso il trend dei sensori di presenza. A differenza dei più datati (ma pur sempre apprezzatissimi) sensori di movimento, per lo più a tecnologia PIR, questa nuova generazione di sensori radar (o mmWave, tecnologia anloga) permette di censire la presenza di persone in un ambiente (talvolta anche in termini di numerosità, come nel caso del’Aqara FP2) per tutta la durata della loro presenza, anche se immobili.

Questo, ovviamente, in ambito di domotica personale, specialmente sugli HUB personali, permette di definire automazioni molto più interessanti e precise, come per esempio in ambito illuminotecnica: la possibilità, cioè, di accendere le luci quando una persona entra in un ambiente e spegnerle soltanto al momento in cui esso viene nuovamente abbandonato. Ed è solo un esempio.

Tali sensori sono per lo più basati su tecnologia radar a onda continua. Invece di utilizzare il tempo per misurare la distanza (noto come TOF), questa tecnologia emette un debole segnale radar con una frequenza che aumenta continuamente per creare uno sweep di segnale. Dopo essere stato riflesso dalla superficie target, l’eco del segnale viene captato dall’antenna: poiché il segnale emesso varia costantemente in frequenza, c’è una leggera differenza tra le frequenze dell’eco e dei segnali emessi. Questa differenza di frequenza è direttamente proporzionale al ritardo dell’eco, consentendo così la misurazione accurata delle distanze quindi… l’effettiva presenza. Ovviamente, le calibrazioni delle frequenze di questi sensori sono tarate sulla riflessione fornita da un essere umano.

Il presente progetto è volto a realizzare in proprio sensore presenza radar, integrabile su HUB personali (per esempio come Home Assistant), tramite un esemplice microcontrollore ESP32 e un sensore LD2420.

Si parte

Assunti

NodeMCU ESP32
un NodeMCU ESP32.

Per la realizzazione del presente progetto si assume di possedere un NodeMCU basato su ESP32 (si consiglia di valutare anche questo modello, particolarmente prestante dal punto di visto ricezione Bluetooth, un domani lo si volesse usare – anche – come BRIDGE/Gateway Bluetooth) e di avere a disposizione la suite di tool relativa al firmware ESPHome (implementata in una delle modalità previste su un host di appoggio). Il progetto è comunque attuabile anche con altre board analoghe a NodeMCU basate, volendo, anche su ESP8266.

Si assume inoltre di avere a disposizione un cavo USB/Micro-USB per collegare il NodeMCU da riprogrammare al computer ospitante i tool ESPHome, come spiegato in dettaglio dopo (a meno che il NodeMCU non ospiti già ESPHome a bordo – in tal caso non serve, in quanto la riprogrammazione avverrà in modalità OTA via Wi-Fi).

Sebbene non sia strettamente necessario, si dà per scontato di avere già a disposizione un proprio HUB personale sul quale integrare poi il sensore al fine di utilizzarlo in senso pratico.

Il sensore LD2420

Reso compatibile dalla versione 2023.11 di ESPHome, il sensore L24020 è ideale per il nostro caso d’uso.

LD2420
il sensore radar microonde LD2420.

A seconda del firmware presente sul sensore, la velocità di trasmissione seriale sarà 256000 baud per qualsiasi esemplare con firmware inferiore alla versione 1.5.3 e 115200 baud nelle versioni più recenti. Il tx_pin è cambiato da ot2 a ot1 con il firmware 1.5.3. Il firmware 1.5.4 e versioni successive ora offrono la possibilità di osservare i livelli del segnale di energia del gate e con questa versione possiamo calibrare dinamicamente il gate fermo e spostare le soglie.

Gli schemi di connessione sono i seguenti:

Con firmware 1.5.2 o più vecchi
Pin Nome Funzione
1 3v3 Tensione continua 3 volt
2 GND Massa
3 OT1 Presenza di segnale
4 RX RX Seriale (da connettere come TX sull’ESP32)
5 OT2 TX Seriale (da connettere come RX sull’ESP32)
Con firmware 1.5.3 o più recenti
Pin Nome Funzione
1 3v3 Tensione continua 3 volt
2 GND Massa
3 OT1 TX Seriale (da connettere come RX sull’ESP32)
4 RX RX Seriale (da connettere come TX sull’ESP32)
5 OT2 Presenza di segnale

Tutta la documentazione sul sensore LD2420 è disponibile qui.

Configurare il firmware ESPHome

ESPHome è un firmware “modulare” che consente, appunto, di installare sui dispositivi target (in questo caso un NodeMCU ESP32) le componenti utili agli scopi prefissi “assemblate” in un unico compilato da far eseguire al modulo.

N.b. Se non si conosce questo firmware è necessario dare una veloce lettura alla scheda ad esso dedicata; diversamente non si comprenderanno gli aspetti che verranno spiegati in seguito e, fatalmente, si fallirà.

Nel caso di questo specifico progetto il componente ESPHome utile allo scopo è LD2420, il quale consente per l’appunto la gestione del sensore scelto nel progetto, l’omonimo LD2420.

Per attivarlo, è semplicemente necessario aggiungere, nella configurazione YAML di ESPHome (la “ricetta” del nostro firmware):

ld2420:

La presenza di questa voce aggiunge, in compilazione del firmware, tale componente, attivando le funzioni di cui sopra. Sempre che, ovviamente, si stia utilizzando una versione di ESPHome uguale o superiore alla 2023.11.

Inoltre, è necessario attivare anche il componente UART Bus, il quale consente di far dialogare il componente che ospita il firmware (il NodeMCU) con il sensore. Per attivarlo, è necessario aggiunge alla configurazione YAML di ESPHome:

uart:
N.b. In caso il lettore che andremo a realizzare non venga poi utilizzato con un HUB per domotica in grado utilizzare le API di interfacciamento ESPHome (come per esempio Home Assistant – vedi guida), è possibile attivare, nella configurazione ESPHome, la piattaforma MQTT (non approfondita nel presente progetto) in alternativa alla piattaforma API.
CONFIGURAZIONE SPECIFICA

Ora, ovviamente, è necessario indicare al firmware ESPHome una parte di configurazione specifica al sensore da integrare. La configurazione ovviamente varia in base a come il lettore viene collegato al NodeMCU: noi proporremo una configurazione tipo successivamente personalizzabile dall’utente.

UART

Il primo, semplicissimo blocco da configurare è quello che spiegherà al NodeMCU come comunicare col sensore. Sono necessari due pin digitali del NodeMCU da collegare ai poli TX/RX del lettore: noi abbiamo scelto GPIO22 e GPIO23  (naturalmente possono anche essere utilizzati altri pin).

Il blocco è da configurare quindi come segue:

uart:
  id: ld2420_uart
  tx_pin: GPIO22
  rx_pin: GPIO23
  baud_rate: 115200
  parity: NONE
  stop_bits: 1

Si noti come la velocità sia stata impostata forzosamente a 115200: in caso il sensore LD2420 possegga firmware inferiori a 1.5.3, la velocità può essere impostata a 256000, così come spiegato prima.

Una volta definita la configurazione UART, è possibile completarla con i vari dettagli previsti dal componente LD2420 di ESPHome.

Vetrina - Offerte del giorno

Esempio di configurazione completa

La primissima parte “esphome:” può variare in base al modello di NodeMCU (nell’esempio, la configurazione testata per un NodeMCU ESP32), così come le varie password (OTA, di failback, di integrazione) e le credenziali di accesso alla propria Wi-Fi. Il resto del codice, da UART in poi, è dedicato alla gestione del sensore LD2420.

esphome:
  name: esphome-lab
  platform: ESP32
  board: nodemcu-32s

wifi:
  ssid: "mia_wifi"
  password: "password_wifi"

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "AP Fallback"
    password: "password_fallback"

captive_portal:

web_server:
  port: 80
  auth:
  username: admin
  password: "password_web_server"

# Enable logging
logger:

ota:
  password: "password_ota"

uart:
  id: ld2420_uart
  tx_pin: GPIO22
  rx_pin: GPIO23
  baud_rate: 115200
  parity: NONE
  stop_bits: 1

ld2420: 

text_sensor:
  - platform: ld2420
    fw_version:
      name: Versione firmware

sensor:
  - platform: ld2420
    moving_distance:
      name : Distanza di movimento

binary_sensor:
  - platform: ld2420
    has_target:
      name: Presenza

switch:
  - platform: restart
    name: Riavvio nodo ESPHome

select:
  - platform: ld2420
    operating_mode:
      name: Modalità operativa

number:
  - platform: ld2420
    presence_timeout:
      name: Timeout di rilevazione presenza
    min_gate_distance:
      name: Distanza minima gate
    max_gate_distance:
      name: Distanza massima gate
    gate_select:
      name: Selezione gate
    still_threshold:
      name: Impostazione soglia immobilità
    move_threshold:
      name: Impostazione soglia movimento
button:
  - platform: ld2420
    apply_config:
      name: Applica configurazione
    factory_reset:
      name: Reset a impostazioni di fabbrica
    restart_module:
      name: Riavvio modulo
    revert_config:
      name: Undo modifiche

Naturalmente si tratta di un esempio assolutamente personalizzabile: la configurazione proposta comunque è testata e funzionante.

N.b. A prescindere, su qualsiasi configurazione ESPHome consigliamo sempre di includere alcuni componenti secondo noi sempre utili, come quelli illustrati su questa scheda.

Assemblare l’hardware

Arrivati a questo punto è necessario assemblare le varie componenti per creare un’unicum hardware. Per farlo è necessario assemblare:

  • alimentatore;
  • NodeMCU ESP32;
  • sensore LD2420.

L’alimentatore può ovviamente essere quello suggerito, così come un comune alimentatore USB che alimenti la porta del NodeMCU tramite cavo Micro-USB. Nello schema che proporremo, comunque, ipotizzeremo l’uso dell’alimentatore suggerito da noi, in quanto testato.


Quel che è necessario fare è:

  • collegare i poli + e – in uscita dall’alimentatore all’alimentazione del NodeMCU 5 volt;
  • collegare i vari GPIO22/33 (o quelli comunque scelti nella propria configurazione di ESPHome);
  • collegare un’alimentazione 3 volt al sensore, prendendola dal NodeMCU.

Lo schema finale, realizzabile magari su basetta Breadboard per effettuare preliminarmente i propri test, è il seguente:

NodeMCU ESp32 e LD2420
lo schema di connessione.
N.b. Le connessioni possono variare in funzione del firmware presente a bordo del sensore LD2420, come spiegato prima. La configurazione proposta è quella di un LD2420 con firmware superiore alla versione 1.5.3.

Installazione di ESPHome su NodeMCU

A questo punto si è pronti per la compilazione e la successiva installazione della propria configurazione ESPHome sul NodeMCU. Le tecniche per farlo sono le più disparate – tutto dipende ovviamente da dove si ha installato e in che modalità la suite ESPHome.

CON NODEMCU VERGINE

Se il NodeMCU è vergine, l’unica possibilità di installare il compilato ESPHome è utilizzando cavo USB/Micro-USB a collegare il computer che monta ESPHome e NodeMCU. Collegare i due tramite il cavo e poi premere sul tasto BOOT/FLASH: questo imposterà il NodeMCU in modalità di riprogrammazione.

A questo punto eseguire la compilazione del firmware seguendo una delle guide dedicate al tema in base alla propria modalità d’uso di ESPHome e alla propria installazione.

CON NODEMCU GIÀ DOTATO DI ESPHOME

In caso NodeMCU sia già dotato di firmware ESPHome, la quale precedente compilazione prevedesse il codice:

ota:
  password: "password_ota"

e  avesse lo stesso “name“, allora non sarà necessario il cavo, ma basterà avviare la compilazione del firmware provvedendo all’accensione del NodeMCU il quale, entrando nella stessa rete LAN (tramite Wi-Fi) del computer sul quale viene eseguito ESPHome, verrà aggiornato.

Verifiche e impostazioni

Dopo il riavvio del NodeMCU con a bordo, a questo punto, il nostro ESPHome configurato come sopra illustrato, collegandosi all’interfaccia web esposta dal firmware (eg. presso http://esphome-lab.local, se si è mantenuto il nome proposto nella configurazione sopra, riga 2) è possibile verificare che il sensore stia funzionando e, utilizzando gli slider disponibili, configurarlo a puntino.

ESPHome LD2420 - WebGUI

Gli stessi elementi sono disponibile presso Home Assistant, in caso di integri il dispositivo su tale HUB.

Integrazione su Home Assistant

A questo punto basterà riavviare l’attuatore per provvedere in seguito all’integrazione delle sue funzionalità di sensore di presenza presso Home Assistant.

ESPHome e LD2420 su Home Assistant
un esempio delle entità disponibili tramite integrazione via Home Assistant.

L’integrazione presso Home Assistant si realizza molto semplicemente, così come illustrato nella guida che segue:

Integrare componenti ESPHome a Home Assistant (via API)

Questa integrazione genererà, come da premesse, tutta una serie di entità lato Home Assistant, le quali potranno direttamente essere utilizzate, manualmente o in modo automatico, per consultare le misure.

Integrazione su altri HUB

Come spiegato sopra, dato che chi adotta ESPHome solitamente lo utilizza in abbinamento a Home Assistant abbiamo assunto che la configurazione del firmware ESPHome andasse effettuata in questa logica, e così abbiamo fatto. Chiunque volesse invece utilizzare questo dispositivo integrandolo su altri HUB personali che non supportino le API di ESPHome, allora la strada da percorrere è quella di integrare il codice da noi proposto con un blocco relativo al componente MQTT di ESPHome, cosa che consente di acquisire i dati tramite questo standard.


Altri progetti basati sull’uso di ESPHome:

⚠️ Se di Home Assistant ne sai poco ma sei interessato a capirne di più, ti suggeriamo di partire da qui.

Questa pagina è redatta, manutenuta e aggiornata dallo staff di inDomus, un gruppo di persone molto diverse tra loro che trovi, per domande e supporto, sul forum e sulla chat del sito. Alcuni link sono taggati in qualità di affiliati Amazon e riceviamo un compenso dagli acquisti idonei, utile al sostenimento del sito, ma le nostre recensioni sono tutte indipendenti e non sponsorizzate. Se ti sei perso, a tua disposizione c'è la mappa.