Stai cercando un modo per rendere i tuoi progetti di domotica più intelligenti e reattivi?
Il sensore di presenza HLK-LD2410C è la risposta che stavi cercando. Con la sua tecnologia avanzata, offre un’alternativa superiore ai classici sensori PIR, eliminando i falsi allarmi e fornendo un rilevamento estremamente preciso.
Indice
Che cos’è l’LD2410C?
Il sensore di presenza HLK-LD2410C (datasheet) è un modulo radar ad alta sensibilità per il rilevamento dello stato di presenza umana a 24 GHz, sviluppato dalla Hi-Link Electronics.


A differenza dei sensori PIR (Passive Infrared) che rilevano solo il calore e il movimento, il suo principio di funzionamento si basa sull’uso di onde continue a frequenza modulata (FMCW) per rilevare la presenza di persone all’interno di uno spazio definito.
Combinando l’elaborazione del segnale radar con algoritmi di rilevamento corporeo ad alta precisione, il modulo consente di ottenere un rilevamento sensibile dello stato di presenza umana e di distinguere tra corpi in movimento e corpi fermi. Inoltre, può calcolare informazioni ausiliarie come la distanza del bersaglio.
Questo prodotto è pensato principalmente per ambienti interni, dove rileva in tempo reale se è presente un corpo umano in movimento o in micromovimento all’interno dell’area monitorata.
La distanza massima di rilevamento può raggiungere 5 metri, con una risoluzione di distanza di 0,75 m.
È disponibile uno strumento di configurazione visuale che consente di impostare facilmente parametri come l’intervallo di distanza di rilevamento, la sensibilità nelle diverse zone e il tempo di ritardo in assenza di persone, per adattarsi a differenti esigenze applicative.
| Caratteristica | LD2410B | LD2410C | LD2410S | LD2450 | LD2411-S | LD2461 |
|---|---|---|---|---|---|---|
| Campo di rilevamento | fino a 6 m | fino a 6 m | fino a 5 m | fino a 8 m | Movimento: 6 m , Micro-movimento: 3,5 m | In movimento: 8 m , Statico: 6 m |
| Protocolli supportati | UART, GPIO | UART, GPIO, Bluetooth | UART | UART, BLE | UART, Bluetooth | UART, Ethernet |
| Rilevamento dell'angolo | ❌ | ❌ | ❌ | ❌ | ✔️ (±20°) | ✔️ (3D spaziale) |
| Monitoraggio multi-target | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ (5 obiettivi) |

Il modulo supporta uscite GPIO e UART, è plug and play, e può essere applicato in modo flessibile a diversi scenari e prodotti smart.
Le caratteristiche principali
- Rilevamento di Movimento e Presenza: Distingue chiaramente tra movimento e presenza statica.
- Immunità a Falsi Positivi: Non viene influenzato da correnti d’aria, cambiamenti di luce o piccoli animali.
- Basso Consumo Energetico: Ideale per progetti alimentati a batteria.
- Dimensioni Ridotte: Facile da integrare in qualsiasi dispositivo.
- Frequenza Operativa a 24 GHz: Assicura una portata e una precisione eccellenti.
| Campo di rilevamento : | 0,75–6 metri (regolabile) |
| Copertura angolare : | ±60° orizzontale |
| Comunicazione : | UART (256000 baud), GPIO, Bluetooth (BLE) per la configurazione |
| Alimentazione : | 5 V CC |
| Corrente assorbita: | 200 mA - media ~79 mA |
| Dimensioni : | 16 mm × 22 mm |
Pin del del modulo
| PIN | Simbolo | Funzione |
|---|---|---|
| 1 | UART_Tx | Trasmissione seriale dei dati (all'host) |
| 2 | UART_Rx | Ricezione dati seriali (dall'host) |
| 3 | OUTPUT | Uscita alta/bassa (rilevazione intruso) |
| 4 | GNG | GND |
| 5 | VCC | Ingresso alimentazione 5 V cc |
Dove trovare il modulo
Il modulo HLK-LD2410C può essere trovato in rete:
- Presso il sito AliExpress a questo link
- Presso il sito Amazon a questo link

Esempi di utilizzo
Vediamo ora alcuni esempi di utilizzo del sensore:
- Accensione di un solo led o gestione di un relè per attivazione di un carico in caso di rilevamento
- Lettura del sensore tramite una Scheda ESP32
- Realizzazione di un semplice antifurto
Gestione tramite il solo pin OUT
Oltre alla comunicazione seriale (UART), che dà dati dettagliati su movimento e presenza, il modulo a sensore microonde LD2410C offre un’interfaccia molto più semplice e immediata: il pin OUT.

Questo pin funziona come un’uscita digitale che ti permette di creare automazioni basilari senza la complessità della comunicazione seriale. Il suo comportamento è molto semplice:
Quando il sensore rileva una presenza (sia in movimento che statica), il pin OUT va a livello HIGH (5V).
Quando non rileva più nessuna presenza per un certo periodo di tempo, il pin OUT torna a livello LOW (0V).
Esempi di utilizzo
- Accendere una luce: Collega il pin OUT a un relè che controlla una lampada. Quando entri nella stanza, la luce si accende.
- Attivare un allarme sonoro: Connetti il pin OUT a un buzzer attivo. Quando viene rilevata una presenza, il buzzer inizia a suonare immediatamente.
Vantaggi e Limitazioni
L’utilizzo del pin OUT offre il vantaggio di una programmazione estremamente semplice (basta leggere uno stato digitale HIGH o LOW). Tuttavia, ha una limitazione significativa: non avrai accesso ai dati dettagliati forniti dalla comunicazione seriale, come la distanza dell’oggetto o la distinzione tra movimento e presenza statica. I parametri di funzionamento (come il tempo di attesa prima di tornare a LOW) sono pre-configurati e possono essere modificati solo tramite la comunicazione seriale o l’app HLKRadarTool.


Lettura del sensore tramite una Scheda ESP32
Vediamo ora come utilizzare il sensore tramite una scheda di controllo. In questo caso utilizzeremo una Scheda ESP32. Per informazioni su questa scheda vedere il post TTGO T-Display: Un piccolo gigante con display per progetti IoT

Componenti necessari
- Modulo TTGO T-Display ESP32;
- Sensore presenza HLK-LD2410C;
- Breadboard 400 punti
- Cavi di collegamento
![]() |
![]() |
![]() |
![]() |
Collegamenti
Sensore LD2410C:
- VCC a 5V dell’ESP32.
- GND a GND dell’ESP32.
- TX a Pin 17 dell’ESP32.
- RX a Pin 27 dell’ESP32.

Installazione della libreria
Per comunicare con il sensore, useremo la libreria ld2410 di Nick Reynolds. Per installarla seguite questi passi:
- Aprire l’IDE di Arduino.
- Andare su
Strumenti->Gestione Librerie. - Cercare “ld2410“.
- Installare la libreria di Nick Reynolds.
Codice utilizzato
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
#include <ld2410.h> #define MONITOR_SERIAL Serial #define RADAR_SERIAL Serial1 // Connessione sensore LD2410C a ESP32 #define SERIAL_BAUD 115200 #define RADAR_RX_PIN 27 #define RADAR_TX_PIN 17 ld2410 radar; uint32_t lastReading = 0; bool radarConnected = false; void setup(void) { MONITOR_SERIAL.begin(115200); //Feedback over Serial Monitor //radar.debug(MONITOR_SERIAL); #if defined(ESP32) RADAR_SERIAL.begin(256000, SERIAL_8N1, RADAR_RX_PIN, RADAR_TX_PIN); //UART for monitoring the radar #elif defined(__AVR_ATmega32U4__) RADAR_SERIAL.begin(256000); //UART for monitoring the radar #endif delay(500); MONITOR_SERIAL.print(F("\nConnect LD2410 radar TX to GPIO:")); MONITOR_SERIAL.println(RADAR_RX_PIN); MONITOR_SERIAL.print(F("Connect LD2410 radar RX to GPIO:")); MONITOR_SERIAL.println(RADAR_TX_PIN); MONITOR_SERIAL.print(F("LD2410 radar sensor initialising: ")); if (radar.begin(RADAR_SERIAL)) { MONITOR_SERIAL.println(F("OK")); MONITOR_SERIAL.print(F("LD2410 firmware version: ")); MONITOR_SERIAL.print(radar.firmware_major_version); MONITOR_SERIAL.print('.'); MONITOR_SERIAL.print(radar.firmware_minor_version); MONITOR_SERIAL.print('.'); MONITOR_SERIAL.println(radar.firmware_bugfix_version, HEX); } else { MONITOR_SERIAL.println(F("not connected")); } } void loop() { radar.read(); if (radar.isConnected() && millis() - lastReading > 1000) //Report every 1000ms { lastReading = millis(); if (radar.presenceDetected()) { if (radar.stationaryTargetDetected()) { Serial.print(F("Stationary target: ")); Serial.print(radar.stationaryTargetDistance()); Serial.print(F("cm energy:")); Serial.print(radar.stationaryTargetEnergy()); Serial.print(' '); } if (radar.movingTargetDetected()) { Serial.print(F("Moving target: ")); Serial.print(radar.movingTargetDistance()); Serial.print(F("cm energy:")); Serial.print(radar.movingTargetEnergy()); } Serial.println(); } else { Serial.println(F("No target")); } } } |
Esempio di quello che appare attivando il Monitor seriale

Sistema di allarme con ESP32, display e indicatori visivi/sonori
Vediamo come utilizzare il Sensore presenza HLK-LD2410C per creare un sistema di allarme domestico intelligente. Utilizzeremo ancora il TTGO T-Display ESP32 per visualizzare lo stato del sensore.
Componenti necessari
- Modulo TTGO T-Display ESP32;
- Sensore presenza HLK-LD2410C;
- Ks0310 traffic light module;
- KS0019 Passive Buzzer module
- Breadboard 400 punti
- Cavi di collegamento
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Collegamenti
Sensore LD2410C:
- VCC a 3.3V dell’ESP32.
- GND a GND dell’ESP32.
- TX a Pin 17 dell’ESP32.
- RX a Pin 27 dell’ESP32.
Ks0310 traffic light module:
- G – LED Verde a Pin 2 dell’ESP32,
- Y – LED Giallo a Pin 12 dell’ESP32
- R – LED Rosso a Pin 13 dell’ESP32
- GND a GND dell’ESP32.
Ks0019 Passive Buzzer module:
- S – al Pin 25 dell’ESP32.
- V – VCC a 3.3V dell’ESP32.
- G – GND dell’ESP32.


Codice utilizzato
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
#include <Arduino.h> #include <TFT_eSPI.h> #include <ld2410.h> #include <HardwareSerial.h> // ========================================================== // MAPPATURA PIN LD2410C e INDICATORI (TTGO T-Display) // ========================================================== #define SERIAL_BAUD 115200 // LD2410C - Utilizzo di pin UART liberi (Pin 17 e 27) #define LD2410_RX_PIN 27 #define LD2410_TX_PIN 17 // Indicatori LED (Pin GPIO liberi) #define LED_GREEN_PIN 2 #define LED_YELLOW_PIN 13 #define LED_RED_PIN 12 // Buzzer (Pin GPIO libero) #define BUZZER_PIN 25 #define ALARM_FREQUENCY 2000 // Frequenza del suono in Hz (e.g., 2000 Hz) // ========================================================== // DICHIARAZIONE OGGETTI // ========================================================== ld2410 ld2410_sensor; HardwareSerial ld2410_serial(1); TFT_eSPI tft = TFT_eSPI(); // ========================================================== // VARIABILI PER LA LOGICA NON BLOCCANTE // ========================================================== unsigned long lastReadTime = 0; const long readInterval = 100; bool prevPresenceDetected = false; bool prevMovingTargetDetected = false; bool isAlarmActive = false; // Nuovo stato per tracciare il buzzer // ========================================================== // SETUP // ========================================================== void setup() { Serial.begin(SERIAL_BAUD); ld2410_serial.begin(256000, SERIAL_8N1, LD2410_RX_PIN, LD2410_TX_PIN); pinMode(LED_GREEN_PIN, OUTPUT); pinMode(LED_YELLOW_PIN, OUTPUT); pinMode(LED_RED_PIN, OUTPUT); ld2410_sensor.begin(ld2410_serial); tft.init(); tft.setRotation(1); tft.fillScreen(TFT_BLACK); tft.setTextFont(2); tft.setTextColor(TFT_WHITE, TFT_BLACK); tft.setCursor(0, 0); tft.println("Sistema LD2410C Avviato!"); } // ========================================================== // LOOP (Non Bloccante) // ========================================================== void loop() { unsigned long currentTime = millis(); if (currentTime - lastReadTime >= readInterval) { lastReadTime = currentTime; if (!ld2410_sensor.isConnected()) { ld2410_sensor.begin(ld2410_serial); } if (ld2410_sensor.read()) { bool currentPresence = ld2410_sensor.presenceDetected(); bool currentMovement = ld2410_sensor.movingTargetDetected(); if (currentPresence != prevPresenceDetected || currentMovement != prevMovingTargetDetected) { // --- AGGIORNAMENTO DI DISPLAY E LED --- tft.fillScreen(TFT_BLACK); tft.setCursor(0, 0); tft.print("Stato: "); // Resetta tutti gli indicatori visivi digitalWrite(LED_GREEN_PIN, LOW); digitalWrite(LED_YELLOW_PIN, LOW); digitalWrite(LED_RED_PIN, LOW); // Resetta lo stato del buzzer noTone(BUZZER_PIN); isAlarmActive = false; if (currentPresence) { if (currentMovement) { // STATO: MOVIMENTO (Giallo) tft.setTextColor(TFT_YELLOW, TFT_BLACK); tft.println("Movimento Rilevato"); Serial.println("Movimento Rilevato"); digitalWrite(LED_YELLOW_PIN, HIGH); } else { // STATO: PRESENZA STATICA (Rosso/Allarme) tft.setTextColor(TFT_RED, TFT_BLACK); tft.println("ALLARME! Presenza Statica!"); Serial.println("ALLARME! Presenza Statica!"); digitalWrite(LED_RED_PIN, HIGH); // Attiva il buzzer passivo con la funzione tone() tone(BUZZER_PIN, ALARM_FREQUENCY); isAlarmActive = true; } } else { // STATO: NESSUNA PRESENZA (Verde) tft.setTextColor(TFT_GREEN, TFT_BLACK); tft.println("Nessuna Presenza"); Serial.println("Nessuna Presenza"); digitalWrite(LED_GREEN_PIN, HIGH); } // Aggiorna lo stato precedente prevPresenceDetected = currentPresence; prevMovingTargetDetected = currentMovement; } } else if (!ld2410_sensor.isConnected()) { // Gestione della disconnessione tft.fillScreen(TFT_BLACK); tft.setTextColor(TFT_RED, TFT_BLACK); tft.println("Sensore Disconnesso"); Serial.println("Sensore Disconnesso"); // Resetta tutti gli indicatori digitalWrite(LED_GREEN_PIN, LOW); digitalWrite(LED_YELLOW_PIN, LOW); digitalWrite(LED_RED_PIN, LOW); noTone(BUZZER_PIN); isAlarmActive = false; } } } |

LED VERDE |
LED GIALLO |
LED ROSSO |
Configurazione avanzata del Sensore
con l’App Android HLKRadarTool
Una delle funzionalità più interessanti del modulo a sensore microonde LD2410C è la sua capacità di essere configurato tramite un’applicazione mobile, il che permette una personalizzazione precisa senza dover riscrivere il codice ogni volta. L’app ufficiale per Android si chiama HLKRadarTool e ti permette di regolare parametri cruciali come la sensibilità e le distanze di rilevamento.
Come funziona e a cosa serve
L’app si connette al sensore tramite Bluetooth e ti mostra in tempo reale i dati di rilevamento. Puoi vedere se c’è una presenza, se c’è un movimento e a quale distanza si trova l’oggetto rilevato. Questo è estremamente utile per testare il sensore e calibrare il tuo progetto in base all’ambiente in cui verrà installato.
I parametri principali che puoi modificare sono:
- Distanza di rilevamento per il movimento: Puoi impostare un raggio (in metri) entro cui il sensore deve rilevare i movimenti.
- Distanza di rilevamento per la presenza: Simile al movimento, ma per la presenza statica.
- Sensibilità: Regola la reattività del sensore. Un valore più alto lo renderà più sensibile a movimenti minimi, mentre un valore più basso lo renderà più “tollerante”, utile per evitare falsi allarmi.
Come scaricare e installare l’App HLKRadarTool
Per poter configurare il modulo a sensore a microonde LD2410CC in modo avanzato, avrai bisogno dell’app HLKRadarTool. La procedura di download è semplice e veloce:
- Apri il Google Play Store: Sul tuo smartphone Android, cerca e apri l’icona del Play Store.
- Cerca l’app: Nella barra di ricerca, digita “HLKRadarTool” e premi Invio.

- Scarica e installa: Trova l’app tra i risultati e tocca il pulsante “Installa”. L’app verrà scaricata e installata automaticamente sul tuo dispositivo.
Una volta terminata l’installazione, troverai l’icona dell’app tra le tue applicazioni.

Ora sei pronto per connetterti al sensore e calibrare le sue impostazioni in base alle tue esigenze.
Procedura di Collegamento
Per connettere il tuo sensore all’app HLKRadarTool:
- Assicurati che il sensore sia alimentato: Collega l’LD2410C all’alimentazione.
- Abilita il Bluetooth: Attiva il Bluetooth sul tuo smartphone Android.
- Apri l’app: Avvia l’app HLKRadarTool e premi il pulsante “Connect”.
- Seleziona il sensore: L’app cercherà i dispositivi Bluetooth nelle vicinanze. Il sensore LD2410C apparirà con un nome come “HLK-LD2410B_xxxxxx”. Selezionalo per stabilire la connessione.

- Configura i parametri: Una volta connesso, potrai visualizzare i dati in tempo reale e accedere alle impostazioni per modificare i parametri del sensore a tuo piacimento.
Grazie a questa app, la messa a punto del tuo progetto diventa un processo rapido e intuitivo, permettendoti di ottenere il massimo dal tuo sensore LD2410C con la massima precisione.
![]() |
![]() |
![]() |
















