SCOPI DEL PROGETTO:
CONCETTI AFFRONTATI:
|
COMPONENTI SOFTWARE UTILIZZATE:
COMPONENTI FISICI UTILIZZATI:
|
GUIDA maggiormente DEDICATA A utenti: |
|
NOTE E DISCLAIMER
|
|
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
- Il sensore LD2420
- Configurare il firmware ESPHome
- Assemblare l’hardware
- Installazione di ESPHome su NodeMCU
- Verifiche e impostazioni
- Integrazione su Home Assistant
- Integrazione su altri HUB
Assunti
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.
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.
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:
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.
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.
L’integrazione presso Home Assistant si realizza molto semplicemente, così come illustrato nella guida che segue:
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:
- Realizzare, tramite ESPHome, un sensore di presenza radar a microonde integrabile a Home Assistant (o altro)
- Realizzare una sonda di assorbimento elettrico domotica tramite PZEM, ESP8266 ed ESPHome
- Realizzare un sistema di notifiche visive LED (con NodeMCU, ESPHome e Home Assistant)
- Integrare un lettore di impronte digitali a Home Assistant (via ESP32 ed ESPHome)
- Domotizzare il riscaldamento autonomo tramite contatto pulito, ESPHome e Home Assistant
- Realizzare un BRIDGE/Gateway Bluetooth↔︎Wi-Fi autonomo (con NodeMCU ESP32 ed 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. |