Il radar mmWave intelligente LD2410B, perfetto per rilevare presenza e movimento in ambiente domestico ed ideale da integrare in Home Assistant
Nel mondo della domotica moderna, il rilevamento della presenza è diventato uno degli aspetti più importanti per l’automazione intelligente degli spazi. Dimentica i vecchi sensori PIR con falsi positivi e ritardi: i radar mmWave offrono una nuova frontiera di precisione, affidabilità e versatilità. Tra i più interessanti sul mercato spicca il LD2410B, una versione migliorata e ottimizzata del celebre sensore LD2410, in grado di rilevare sia movimento che presenza statica, rendendolo perfetto per applicazioni in Home Assistant. In questo articolo esploreremo le sue caratteristiche tecniche principali e ti guiderò nell’integrazione con ESPHome, così da avere un sensore radar pienamente integrato e controllabile nel tuo ecosistema smart.
- Acquistalo su Amazon: https://amzn.to/3IMno35
- Acquistalo su Aliexpress: https://s.click.aliexpress.com/e/_op3s2RO
Specifiche tecniche
Il sensore LD2410B si basa sulla tecnologia mmWave radar a 24 GHz, che consente di rilevare non solo i movimenti delle persone, ma anche la loro presenza quando sono ferme, grazie all’analisi dei micro-movimenti corporei. Questo lo distingue nettamente dai sensori PIR tradizionali, che faticano a captare la presenza di un soggetto statico. Il modello “P” porta con sé una miglioria sostanziale rispetto alla versione base, con l’aggiunta di un connettore UART più stabile, un design più compatto e maggiore efficienza energetica, caratteristiche che lo rendono più adatto a installazioni embedded come quelle su ESP32.

Dal punto di vista della comunicazione, il sensore utilizza l’interfaccia UART con una velocità di trasmissione predefinita a 256000 baud, il che garantisce un flusso dati rapido e continuo, fondamentale per ottenere aggiornamenti in tempo reale sulla presenza e distanza degli oggetti o delle persone rilevate.

La portata effettiva varia in base alla configurazione, ma in condizioni ottimali può arrivare fino a circa sei metri per rilevamento in movimento, leggermente meno per soggetti statici. Un altro punto di forza del LD2410B è la capacità di distinguere tra presenza in movimento e presenza statica, offrendo quindi due livelli di granularità nel rilevamento, utilissimi per scenari diversi: ad esempio, per accendere una luce con il movimento e spegnerla solo dopo l’effettiva assenza prolungata.

L’alimentazione può avvenire a 3.3V o 5V, in base alla versione del modulo, e va verificata con attenzione per evitare danni.

Il sensore è dotato di firmware aggiornabile e può anche essere configurato tramite software per personalizzare parametri come soglia di sensibilità, area di rilevamento e durata dei trigger. La compatibilità con ESPHome è garantita grazie al supporto nativo del componente ld2410, il che semplifica l’integrazione in Home Assistant senza dover scrivere codice complesso o ricorrere a firmware personalizzati.

Collegamenti
Per far comunicare correttamente il sensore radar LD2410B con un microcontrollore come l’ESP32, è necessario collegare i loro pin in modo preciso, rispettando la logica della comunicazione seriale UART. Il sensore utilizza due linee fondamentali per trasmettere e ricevere dati: una linea TX (trasmissione) e una RX (ricezione). Questi due canali devono essere incrociati con quelli del microcontrollore: il pin TX del sensore va collegato al pin RX dell’ESP32, mentre l’RX del sensore si collega al TX dell’ESP32. Questo scambio è indispensabile perché il sensore deve inviare i propri dati all’ESP32, che a sua volta deve poter comunicare col sensore per leggerne i parametri o modificarne la configurazione.

Oltre a questi due canali di comunicazione, è fondamentale che il sensore e il microcontrollore condividano un riferimento comune, ovvero la massa. Per questo motivo, bisogna collegare il pin GND del LD2410B direttamente al pin GND dell’ESP32. Senza questa connessione, i due dispositivi potrebbero non capirsi elettricamente, anche se i cavi TX e RX fossero collegati correttamente. Infine, il sensore ha bisogno di alimentazione. A seconda della versione acquistata, può richiedere 3.3V o 5V.
Codice
Andiamo a creare un nuovo device su ESPHome e chiamiamolo LD2410. 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 LD2410 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 (“ld2410”) che quello più leggibile per Home Assistant (“LD2410”).
esphome:
name: ld2410
friendly_name: LD2410
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: "0MetiVO4UYM07MzUISuH20D7cEUTD1LDH2v8OuTDBCU="
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: "23cf3e9f780d6868b903642cbcd75c33"
captive_portal:
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 (“Ld2410 Fallback Hotspot”) con una password predefinita, in modo che sia possibile riconfigurarlo.
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: "Ld2410 Fallback Hotspot"
password: "ScPEjUCPQ7o9"
Per collegare il sensore LD2410 all’ESP32 si usa la comunicazione seriale UART. Nel codice, specifichiamo quali pin dell’ESP32 sono dedicati a trasmettere (GPIO17) e ricevere dati (GPIO16) dal sensore. Impostiamo anche la velocità di trasmissione a 256000 baud, che è quella richiesta dal sensore. Il controllo di parità viene impostato come NONE, per migliorare la semplicità di comunicazione, mentre stop_bits viene adoperato a 1 per indicare la fine di ogni byte trasmesso. Infine, nel blocco ld2410 indichiamo che il sensore deve usare questa connessione UART, così ESPHome può ricevere e interpretare correttamente i dati dal radar.
uart:
id: uart_ld2410
tx_pin: GPIO17 # ESP32 TX → LD2410 RX
rx_pin: GPIO16 # ESP32 RX → LD2410 TX
baud_rate: 256000
parity: NONE
stop_bits: 1
ld2410:
uart_id: uart_ld2410
Andiamo a definire una serie di sensori virtuali che saranno esposti in Home Assistant. Questi sensori permettono di monitorare in tempo reale i dati grezzi rilevati dal radar:
- moving_distance rileviamo la distanza del bersaglio in movimento;
- still_distance rileviamo la distanza di una presenza ferma, anche se seduto o immobile;
- moving_energy mostriamo il livello di energia radar riflessa da un oggetto in movimento;
- still_energy mostriamo il livello di energia radar riflessa da un oggetto statico.
sensor:
- platform: ld2410
moving_distance:
name: "Distanza movimento"
still_distance:
name: "Distanza statico"
moving_energy:
name: "Energia movimento"
still_energy:
name: "Energia statico"
Muoviamoci, poi, definendo i sensori binari has_target (il radar ha rilevato un bersaglio umano o animale), has_moving_target (il radar rileva una presenza in movimento) e has_still_target (il radar rileva una presenza statica).
binary_sensor:
- platform: ld2410
has_target:
name: "Presenza rilevata"
has_moving_target:
name: "Movimento rilevato"
has_still_target:
name: "Presenza statica rilevata"
In questa parte della configurazione, definiamo un sensore di testo che legge la versione del firmware del sensore LD2410. Questo permette di visualizzare direttamente in Home Assistant quale versione software sta usando il modulo radar, utile per controlli e debugging.
text_sensor:
- platform: ld2410
version:
name: "Versione firmware LD2410"
Inoltre, utilizziamo il LED di stato collegato al pin GPIO22 dell’ESP32. Questo LED è facoltativo e serve a fornire un’indicazione visiva semplice sul funzionamento del dispositivo, ad esempio lampeggiando durante il normale funzionamento o in caso di errori.
status_led:
pin: GPIO22
Infine, attiviamo un web server sulla porta 80, che consente di accedere al dispositivo tramite browser per monitorarne lo stato o configurarlo in modo semplice, senza bisogno di collegarlo via cavo o accedere a Home Assistant.
web_server:
port: 80
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 LD2410 da integrare.

Autorizzate la configurazione ed otterrete quanto segue.
