LD2410C sur ESP8266 ou ESP32 S2 sur Home Assistant – Capteur millimétrique DIY
J’ai reçu mon capteur millimétrique LD2410c 🙂 ! J’ai effectué des tests sur l’ESP8266, mais j’ai rencontré quelques petits soucis qui peuvent vous faire gagner du temps. Ce capteur permet de détecter une présence, il donne la distance entre le capteur et l’individu, il informe si la présence est en mouvement. Je n’ai pas encore étudié l’ensemble de toutes les possibilités.
Il ne faut pas que le capteur soit relié à l’ESP lors du flashage de ce dernier, et il est préférable de désactiver les journaux de débogage (logger:), bien que cela puisse être peu pratique en cas de problème. Il semble qu’il y ait un conflit. En tout cas, suite à ça tout à fonctionné correctement.
Sur l’ESP8266
Assemblage :
- 5V -> VCC / GND ->GND / TX -> RX / RX -> TX
Code source yaml pour votre ESP8266 :
esphome:
name: capteur_test
friendly_name: capteur
esp8266:
board: d1
api:
encryption:
key: "ULYrurWFc4osrD4+ZOKnXcGG3t8OGMrfqUiNt7p5NeY="
ota:
wifi:
ssid: Votre Wifi
password: Votre mot de passe
uart:
tx_pin: TX
rx_pin: RX
parity: NONE
data_bits: 8
stop_bits: 1
baud_rate: 256000
ld2410:
id: "capteur_ld"
binary_sensor:
- platform: ld2410
has_target:
name: "Présence"
has_moving_target:
name: "Cible mobile"
has_still_target:
name: "Cible Immobile"
out_pin_presence_status:
name: "état de broche de présence"
- platform: gpio
pin: D6
name: "broche gpio de présence"
device_class: presence
sensor:
- platform: ld2410
light:
name: "lumière"
moving_distance:
name: "Distance Déplacement"
still_distance:
name: "Distance Immobile"
moving_energy:
name: "Énergie Mobile"
still_energy:
name: "Énergie Immobile"
detection_distance:
name: "Distance de détection"
g0:
move_energy:
name: "g0 Énergie Mobile"
still_energy:
name: "g0 Énergie Immobile"
g1:
move_energy:
name: "g1 Énergie M"
still_energy:
name: "g1 Énergie I"
g2:
move_energy:
name: "g2 Énergie M"
still_energy:
name: "g2 Énergie I"
g3:
move_energy:
name: "g3 Énergie M"
still_energy:
name: "g3 Énergie I"
g4:
move_energy:
name: "g4 Énergie M"
still_energy:
name: "g4 Énergie I"
g5:
move_energy:
name: "g5 Énergie M"
still_energy:
name: "g5 Énergie I"
g6:
move_energy:
name: "g6 Énergie M"
still_energy:
name: "g6 Énergie I"
g7:
move_energy:
name: "g7 Énergie M"
still_energy:
name: "g7 Énergie I"
g8:
move_energy:
name: "g8 Énergie M"
still_energy:
name: "g8 Énergie I"
- platform: wifi_signal
name: Signal Wifi
id: wifi_signal_db
filters:
- lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
update_interval: 60s
unit_of_measurement: "%"
entity_category: "diagnostic"
switch:
- platform: ld2410
engineering_mode:
name: "mode ingénierie"
bluetooth:
name: "contrôle bluetooth"
number:
- platform: ld2410
timeout:
name: "délai"
light_threshold:
name: "seuil lumière"
max_move_distance_gate:
name: "distance déplacement maximal"
max_still_distance_gate:
name: "distance Immobile maximal"
g0:
move_threshold:
name: "g0 seuil Énergie M"
still_threshold:
name: "g0 seuil I"
g1:
move_threshold:
name: "g1 seuil I"
still_threshold:
name: "g1 seuil"
g2:
move_threshold:
name: "g2 seuil M"
still_threshold:
name: "g2 seuil I"
g3:
move_threshold:
name: "g3 seuil M"
still_threshold:
name: "g3 seuil I"
g4:
move_threshold:
name: "g4 seuil M"
still_threshold:
name: "g4 seuil I"
g5:
move_threshold:
name: "g5 seuil M"
still_threshold:
name: "g5 seuil I"
g6:
move_threshold:
name: "g6 seuil M"
still_threshold:
name: "g6 seuil I"
g7:
move_threshold:
name: "g7 seuil M"
still_threshold:
name: "g7 seuil I"
g8:
move_threshold:
name: "g8 seuil M"
still_threshold:
name: "g8 seuil I"
text_sensor:
- platform: ld2410
version:
name: "version du micrologiciel"
mac_address:
name: "adresse mac"
select:
- platform: ld2410
distance_resolution:
name: "résolution de distance"
light_function:
name: "fonction de lumière"
out_pin_level:
name: "niveau de broche de sortie"
button:
- platform: restart
icon: mdi:power-cycle
name: "ESP Reboot"
- platform: ld2410
restart:
name: "redémarrer"
query_params:
name: "paramètres de requête"
Sur l’ESP32 S2
Instructions de Connexion et Flashage
Sur l’ESP32 S2, les broches sont disposées de manière optimale pour faciliter la connexion et la soudure entre le LD2410C et l’ESP32S2. Pour éviter tout court-circuit entre les deux composants, j’ai ajouté une gaine thermo rétractable autour de la prise d’alimentation USB-C par mesure de précaution.
Lors du flashage de l’ESP, n’oubliez pas d’appuyer sur le bouton boot de l’ESP pour entrer dans le mode approprié.
Code source yaml ESP32 S2 :
esphome:
name: capteur_test
friendly_name: capteur
esp32:
board: lolin_s2_mini
framework:
type: arduino
api:
encryption:
key: "ULYrurWFc4osrD4+ZOKnXcGG3t8OGMrfqUiNt7p5NeY="
ota:
wifi:
ssid: xxxxx
password: xxxxxx
uart:
tx_pin: GPIO18
rx_pin: GPIO33
baud_rate: 256000
parity: NONE
stop_bits: 1
ld2410:
id: "capteur_ld"
binary_sensor:
- platform: ld2410
has_target:
name: "Présence"
has_moving_target:
name: "Cible mobile"
has_still_target:
name: "Cible Immobile"
out_pin_presence_status:
name: "état broche présence"
- platform: gpio
pin: 15
name: "broche gpio présence"
device_class: presence
sensor:
- platform: ld2410
light:
name: "lumière"
moving_distance:
name: "Distance Déplacement"
still_distance:
name: "Distance Immobile"
moving_energy:
name: "Énergie Mobile"
still_energy:
name: "Énergie Immobile"
detection_distance:
name: "Distance de détection"
g0:
move_energy:
name: "g0 Énergie Mobile"
still_energy:
name: "g0 Énergie Immobile"
g1:
move_energy:
name: "g1 Énergie M"
still_energy:
name: "g1 Énergie I"
g2:
move_energy:
name: "g2 Énergie M"
still_energy:
name: "g2 Énergie I"
g3:
move_energy:
name: "g3 Énergie M"
still_energy:
name: "g3 Énergie I"
g4:
move_energy:
name: "g4 Énergie M"
still_energy:
name: "g4 Énergie I"
g5:
move_energy:
name: "g5 Énergie M"
still_energy:
name: "g5 Énergie I"
g6:
move_energy:
name: "g6 Énergie M"
still_energy:
name: "g6 Énergie I"
g7:
move_energy:
name: "g7 Énergie M"
still_energy:
name: "g7 Énergie I"
g8:
move_energy:
name: "g8 Énergie M"
still_energy:
name: "g8 Énergie I"
- platform: wifi_signal
name: Signal Wifi
id: wifi_signal_db
filters:
- lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
update_interval: 60s
unit_of_measurement: "%"
entity_category: "diagnostic"
switch:
- platform: ld2410
engineering_mode:
name: "mode ingénierie"
bluetooth:
name: "contrôle bluetooth"
number:
- platform: ld2410
timeout:
name: "délai"
light_threshold:
name: "seuil lumière"
max_move_distance_gate:
name: "distance déplacement maximal"
max_still_distance_gate:
name: "distance Immobile maximal"
g0:
move_threshold:
name: "g0 seuil Énergie M"
still_threshold:
name: "g0 seuil I"
g1:
move_threshold:
name: "g1 seuil I"
still_threshold:
name: "g1 seuil"
g2:
move_threshold:
name: "g2 seuil M"
still_threshold:
name: "g2 seuil I"
g3:
move_threshold:
name: "g3 seuil M"
still_threshold:
name: "g3 seuil I"
g4:
move_threshold:
name: "g4 seuil M"
still_threshold:
name: "g4 seuil I"
g5:
move_threshold:
name: "g5 seuil M"
still_threshold:
name: "g5 seuil I"
g6:
move_threshold:
name: "g6 seuil M"
still_threshold:
name: "g6 seuil I"
g7:
move_threshold:
name: "g7 seuil M"
still_threshold:
name: "g7 seuil I"
g8:
move_threshold:
name: "g8 seuil M"
still_threshold:
name: "g8 seuil I"
text_sensor:
- platform: ld2410
version:
name: "version du micrologiciel"
mac_address:
name: "adresse mac"
select:
- platform: ld2410
distance_resolution:
name: "résolution de distance"
light_function:
name: "fonction de lumière"
out_pin_level:
name: "niveau de broche de sortie"
button:
- platform: restart
icon: mdi:power-cycle
name: "ESP Reboot"
- platform: ld2410
restart:
name: "redémarrer"
query_params:
name: "paramètres de requête"
Il existe de nombreux paramètres possibles pour ce capteur. Les réglages de base fonctionnent bien, cependant, les chiens et les chats sont détectés comme présence, ce qui peut être un inconvénient. Il devrait être possible de régler ce problème en ajustant le volume. En mode ingénieur, il est possible d’explorer les différentes variables pour mieux comprendre le fonctionnement du capteur. Pour ma part, je n’ai pas encore terminé d’étudier toutes les possibilités qu’offre ce produit. Les réglages de base sont déjà très intéressants à exploiter, mais je prévois d’aborder plus en détail ce sujet dans un prochain article. Il gère également la luminosité présente. Le code précédent permet un étalonnage. J’irai plus loin dans mes recherches dès que j’ai un peu plus de temps.
J’ai mis en œuvre mon premier système automatisé avec le LD2410C : la lumière s’allume automatiquement lorsque quelqu’un est dans la pièce et que la luminosité est trop faible 🙂
Cela signifie qu’il n’est plus nécessaire d’éteindre et d’allumer la lumière manuellement 😉
Rien à voir avec les capteurs de mouvements classique, ils ne détectent pas la présence contrairement au LD2410C.
Modélisation 3d de la boite (40mm x 30mm x 20mm):
Sur Home Assistant :
I : Immobile
M : Mouvement
étalonnage :
Sources : https://esphome.io/components/sensor/ld2410.html?highlight=ld2410
Bonjour Nicolas.
Bravo pour ce tuto sur le LD2410c qui m’a permis de mettre en oeuvre ce capteur de présence connecté à un ESP32S2. Tout s’est très bien déroulé en suivant votre tuto.
Il me reste à peaufiner mes réglages, notamment pour la sensibilité à la luminosité ambiante permettant d’allumer ou non une lumière, en présence d’une personne.
Avez-vous progressé dans la mise au point de vos réglages ?
Cordialement
Luc B
Je précise que j’utilise ce dispositif (LD2410c + ESP32S2) sous Home Assistant
Bonjour Luc,
Merci pour votre retour ! Je n’ai pas encore finalisé les réglages car ce n’est pas facile et je ne maîtrise pas encore tous les paramètres. La détection des animaux reste encore un défi. Je m’y remets bientôt.
L’IA ma proposé des solutions, je progresse, mais ce n’est pas encore ça.
Cordialement,
Nicolas
Bonsoir Nicolas,
Merci pour cette réponse.
J’en suis toujours à tenter de régler la sensibilité à la luminosité ambiante … quand j’en ai le temps.
Cordialement
Luc B