LD2410C Radar aanwezigheidssensor – Eerste stappen en meer

LD2410C Radar aanwezigheidssensor
Koop de LD2410C Radar aanwezigheidssensor en steun dit kanaal

De LD2410C is een mmWave-aanwezigheids-/bewegingssensor die erg goedkoop en breed verkrijgbaar is. Met een beetje hulp en begrip is het een GEWELDIG alternatief voor infrarood- en ultrasone detectoren. Voor die prijs is hij geschikt voor alles, van het detecteren van menselijke aanwezigheid/beweging in vrij grote ruimtes tot het regelen van de verlichting in opslagruimtes en kasten.

Ik heb EINDELOOS veel tijd besteed aan het leren gebruiken van dit apparaat, mede door projecten die niet werkten, andere projecten met code achter een betaalmuur en meer.

Commerciële kant-en-klare units

Dus, ik begon mijn zoektocht met apparaten van Apollo Automation, zoals de Apollo Pro-1 mm Sensor en andere producten van hetzelfde bedrijf. Ze zijn GEWELDIG, maar niet goedkoop. Afhankelijk van waar je woont en je budget, kunnen ze uiteindelijk gewoon te duur zijn voor algemeen gebruik in huis.

Daarna ben ik de LD2450 gaan bekijken en uiteindelijk besloot ik de LD2410C uit te proberen na het zien van verschillende YouTube-video’s over dit onderwerp… maar ik liep steeds tegen doodlopende wegen aan – tot nu toe.

En hier zijn we dan… Ik heb een paar LD2410C-modules van AliExpress… simpel gezegd, ze hebben over het algemeen een 5-pins connector met aarde, seriële RX, seriële TX, een uitgang voor een LED en VCC. Voorlopig kunnen we de uitgang negeren en ons concentreren op de 4 pinnen – aarde (GND) is duidelijk, VCC naar 5V, RX en TX.

Standalone gebruik van de LD2410C – zonder ESP

Vervolgens heb ik een FTDI uit de voorraad gehaald (Koop deze hier en steun dit kanaal) – een klein printplaatje dat je in de seriële poort van je computer (of een hub) steekt en dat je 3V3V seriële RX- en TX-signalen geeft, evenals 3V3V- en 5V-uitgangen – ook deze is voor een prikkie verkrijgbaar bij AliExpress. Bij hun CHOICE-items zou je een paar LD2410C’s en een FTDI voor ongeveer 10 euro inclusief verzendkosten moeten kunnen krijgen. Tegenwoordig kies ik meestal voor seriële apparaten zoals FTDI’s met USB-C, omdat ik probeer te standaardiseren op USB-C, maar ik heb wel een paar USB-A naar C-adapters bij de hand, omdat niet al mijn USB-hubs een USB-C-aansluiting hebben.

Hier is in ieder geval een oudere USB-A FTDI aangesloten op een LD2410C-sensor… de FTDI levert de 5V-voeding (ongeveer 79 mA nodig) en ook de seriële RX- en TX-signalen (aangesloten op de LD2410c in omgekeerde volgorde – d.w.z. RX op TX, TX op RX).

LD2410C Radar aanwezigheidssensor met FDTI
LD2410C Radar aanwezigheidssensor met FDTI
LD2410C Radar aanwezigheidssensor
LD2410C Radar aanwezigheidssensor

Enkele details… als je naar de LD2410C kijkt, zie je rechts het apparaat – de sensorzijde is zichtbaar. Mijn exemplaar is ongeveer 20 mm bij 15 mm. Zoals je ziet heb ik TX, TX, aarde en VCC aangesloten. Dat is alles – voor slechts een paar euro kan dit apparaat, dat bijvoorbeeld met een app of pc communiceert, betrouwbaar de aanwezigheid en beweging van mensen detecteren. Om er iets nuttigs mee te doen, is iets meer werk nodig, maar laten we dat stap voor stap aanpakken.

Aan de rechterkant detecteert het apparaat objecten recht vooruit tot een hoek van ongeveer 60 graden en werkt het op een afstand van enkele centimeters tot enkele meters – hoewel mijn ervaring tot nu toe suggereert dat 20 cm naar buiten het beste werkt. Oh ja, de LD2410C wordt warm tijdens gebruik. Hieronder zie je een beter beeld van mijn FTDI en de aansluitingen.

FTDI en de aansluitingen
FTDI en de aansluitingen


Hopelijk maken de bovenstaande afbeeldingen de verbanden duidelijk. Ik heb een video (hieronder – ingesloten) gemaakt die bij dit artikel hoort en hopelijk helpen die twee je op weg om deze apparaten te gebruiken. Terzijde, de LD2410C heeft een lichtsensor. Die kan handig zijn als aanwezigheidssensor in een ruimte voor lichtregeling, om te voorkomen dat de lichten aangaan als het buiten al licht is. Daar ga ik hier niet verder op in.

Wees niet zuinig – een ESP32 S3 Mini kost slechts 3 euro (of het equivalent daarvan) in China.

Een video van Dronebot Workshop heeft me uiteindelijk op weg geholpen – dank aan de eigenaar daarvoor – hier is zijn video ter referentie. Er zijn twee manieren om met de LD2410C te communiceren: via Bluetooth of via de seriële pinnen. Ik begin met de laatste. In een blogpost bij de bovenstaande video noemt de schrijver een gratis EXE-tool van de fabrikant van de LD2410C die Bluetooth gebruikt. Hieronder de 3 jaar oude versie van die tool:
HLK-LD-KIT-V2.0.rar
HLK-LD2410 user manual V1.02
HLK-LD2410 Serial Communication Protocol V1.02
LD2410_Tool_EN_(english-version).zip

En de link op de Google Drive. Zie het laatste item in de bovenstaande link.

Op mijn pc heb ik deze tool geprobeerd en hij werkt
Op mijn pc heb ik deze tool geprobeerd en hij werkt

Op mijn pc heb ik deze tool geprobeerd en hij werkt – zie bovenstaande afbeelding.

Maar dat gaat ervan uit dat je een pc gebruikt… en het is maar ZO nuttig – dus ik geef de voorkeur aan de webgebaseerde online tool die ook in de video wordt beschreven. Maar eerst – zowel de tool rechts als de webtool moeten met je FTDI communiceren via de seriële poort die wordt aangemaakt wanneer deze is aangesloten op je pc of wat dan ook. Het werkend krijgen van FTDI’s valt buiten het bestek van dit artikel – bij mij lijken ze altijd direct te werken.

Ik sluit ze gewoon aan op een USB-hub die is verbonden met mijn pc en er verschijnt als bij toverslag een nieuwe seriële poort. Dat is de poort waarop je verbinding maakt met het enkele .EXE-programma dat hierboven rechts wordt getoond – en met de bedrading die ik hierboven heb laten zien, zou je, na het klikken op CONNECT met de standaard baudrate van 25600, direct iets moeten zien gebeuren.

Ik ga echter direct naar de webtool, omdat ik de bovenstaande uitleg niet zo intuïtief vond. De webtool moet namelijk ook verbinding maken met de seriële poort die door de FTDI is aangemaakt. Hier is de link, dit keer niet voor een download, maar direct naar de webgebaseerde LD2410 Configurator. En hier zie je het in actie – mijn video laat dit allemaal grafisch zien en hopelijk zie je aan de hand van de video hoe makkelijk het is om met de LD2410C aan de slag te gaan.

Eerste scherm van de FTDI aangesloten op uw computer en op de LD2450C
Eerste scherm van de FTDI aangesloten op uw computer en op de LD2450C

Na het laden van de pagina – en met uw FTDI aangesloten op uw computer en op de LD2450C – zou u dit moeten zien.

Ik heb het vakje “Geavanceerde verbindingsopties weergeven” niet aangevinkt, ik heb gewoon een poort gekozen zoals hierboven weergegeven – en verbinding gemaakt.

Op dit punt was alles operationeel. Nu zien we de volledige hoofdpagina van de LD2410 Configurator – met live aanwezigheidsdetectie in het blauwe vak linksboven en beweging in het rode vak ernaast – zoals hieronder weergegeven. Ik ga hier in de video dieper op in.

Door simpelweg naar het onderstaande paneel te kijken en misschien wat met de bedieningselementen rechtsboven te spelen, krijg je hopelijk een idee van wat de LD2410C kan (en wat de beperkingen ervan zijn – de waarden hebben de neiging om wat te fluctueren, dus in de praktijk is een beetje filteren handig).

LD2410C Configurator (schermafbeelding)
LD2410C Configurator (schermafbeelding)

De volgende stap, waar ik later op terugkom (aangezien niet iedereen ESPHOME en Home Assistant gebruikt), is om die gegevens in een bruikbare vorm te krijgen. In het artikel van DronebotWorkshop wordt uitgelegd hoe je Arduino met de LD2410C kunt gebruiken en wordt ook de HLKRadarTool-app voor Android genoemd. Als je naar het bovenstaande bedieningsscherm kijkt, zie je dat je Bluetooth op het apparaat via die webpagina kunt in- en uitschakelen. Toen ik het inschakelde, verscheen de LD2410C in de app die ik uit de Android Play Store had gedownload, maar persoonlijk besloot ik om bij de bovenstaande webpagina te blijven en de officiële ESPHOME-website te raadplegen, waar ze de code voor de LD2410C uitleggen.

De basis is achter de rug – nu komt het echte werk!

NU, als je dat allemaal hebt doorstaan!!!! GEFELICITEERD!!!! Je hebt de juiste keuze gemaakt, want na meer dan een dag te hebben verspild aan een ESP32-C3-bord dat werkte met licht aangepaste standaard ESP-HOME LD2410-code – op zich al spannend – probeerde ik vandaag een ESP32-S3. Nadat ik erachter kwam dat ik willekeurig pinnen GPIO9 en 10 had gekozen voor RX en TX, en ze niet alleen verkeerd om had aangesloten, maar ook fysiek pinnen 8 en 9 had verbonden, kreeg ik de code eindelijk niet alleen werkend in ESP-HOME, maar verscheen deze OOK op magische wijze in Home Assistant. En daar begint de ECHTE magie…

Keuze van ESP, mogelijkheden en beperkingen

Een paar dingen om te beginnen: ik weet zeker dat er een reden is waarom de C3 zich zo lastig gedraagt, daar kom ik nog een keer op terug. Ten tweede is het belangrijk om te weten dat je op de ESP32-borden de standaard UART1 niet kunt gebruiken. Uiteindelijk heb ik gewoon GPIO9 en GPIO10 gekozen, omdat die pinnen in een lijst staan ​​die als UART’s gebruikt kunnen worden. Ik heb NIETS meer gedaan dan GPIO9 en GPIO10 specificeren en jawel, een ESP32-S3 mini communiceerde met de LD2410C. En toevallig heeft de S3 Mini een WS2812B LED op pin 48. Dat is mijn volgende project… visuele afstandsindicatie, zoals ik die gebruik op mijn Apollo-units.

In mijn geval had ik ook problemen (en dat had ik al heel lang) met het maken van projecten op mijn hoofd-pc terwijl Home Assistant en dus ESP-HOME op een andere machine draaiden… al die problemen verdwenen toen ik verder ging zoals voorheen, maar voor de eerste flash de controls liet compileren op de machine waarop ESP-HOME draait – en het board op diezelfde machine aansloot – voilà. Oh, en het toewijzen van een vast IP-adres (een willekeurig vrij adres) aan de chip garandeert een betere flash-ervaring.

Ik zet alle code hier online, geen betaalmuren, geen ontbrekende onderdelen…

En als voorproefje: de code…

De code als voorbeeld

(Deze is zonder de WS2812B LED code)

De bovenstaande code was mijn eerste poging en bevatte geen WS2812B-code – alleen de LD2450C.

En nu, met behulp van ChatGPT, heb ik mijn eerdere pogingen – de onderstaande code – voor de ESP32-S3 met RGB-led op GPIO48 en de LD2410C overtroffen… nu verandert de ingebouwde RGB-led van kleur afhankelijk van de afstand… ALLEMAAL BINNEN het ESP32-S3-bord met ESP-HOME – helemaal zonder Home Assistant. MAGIE. Hier is het… Ik heb de blauwe led losgekoppeld, ik kan dat eerste led-platform net zo goed uiteindelijk weggooien…

platform: binary
name: “Blue Status Light”

output: light_output

id: led_light
restore_mode: ALWAYS_OFF

De code met de WS2812B LED als voorbeeld

Heb je gezien dat ik in de bovenstaande code (bijna aan het begin) ben overgeschakeld naar het Arduino-framework?

Dat bleek een probleem te zijn met mijn ESP-HOME-installatie, die nog wat verouderde code bevatte. Ik stuitte op hetzelfde probleem met de ESP-C6 (ook een fijn board met een RGB-led, maar deze keer op GPIO8). Uiteindelijk vonden we een oplossing: de ESP-HOME-add-in verwijderen en opnieuw installeren (simpelweg), hoewel ik uiteindelijk toch bij het Arduino-framework ben gebleven, zonder specifieke reden. Het simpelweg verwijderen en opnieuw installeren wist de cache en is onschadelijk (je verliest je eerdere werk niet), waarna het ESP-IDF-framework weer werkt. Ik ontdekte dit toen ik de C6 probeerde en te horen kreeg dat het Arduino-framework de C6 niet ondersteunt. Dus ik heb de sprong gewaagd – en na het opnieuw toevoegen van ESP-HOME kon ik de C6 met esp-idf gebruiken, waarbij ik de LED naar GPIO8 verplaatste – maar toen werkte de originele Neopixel-bus niet meer met de C6, dus heb ik de WS2812-instellingen aangepast om het esp32_rmt_led_strip-platform te gebruiken met iets andere parameters – ik vermoed dat dat wel werkt met de oudere boards.

Hier is de code voor de ESP32-C6… met een paar aanpassingen aan de afstanden en dat rare blauwe lampje uitgeschakeld…

De ultieme oplossing en enkele beperkingen

Na wat meer onderzoek bleek dat de ESP32-S3 van deze kleine boards iets meer geheugen heeft. Dus ik koos daarvoor en, gewapend met succes, werd ik ambitieus. Ik dacht dat het leuk zou zijn om een ​​BME280 temperatuur-/druk-/vochtigheidssensor op hetzelfde board te hebben – GEWELDIG idee – twee gadgets in één… maar er was één probleem: de sensor gebruikt een I2C-bibliotheek en haalt ook code op voor (in dit geval niet gebruikte) SPI.

Toen ik mijn nieuwste wonder wilde compileren, weigerde de ESP-HOME-linker. Ik dacht dat de gecombineerde code van de LD2410C en de BME280 misschien te veel was – en ik had gelijk. Ik had echter (zoals gebruikelijk) een basiswebserver in de ESP-HOME-code opgenomen, zodat ik de resultaten in een browser kon bekijken voordat ik controleerde of het apparaat aan Home Assistant was toegevoegd. Door de webserver uit te commentariëren werkte alles weer – ChatGPT zegt dat het tot 300 KB alleen al voor de webserver gebruikt en dat geloof ik wel.

Hier is de code zoals die er nu uitziet, de webserver is uitgeschakeld, maar de rest werkt perfect. Na wat onderzoek lijkt het erop dat er manieren zijn om het codegebruik te minimaliseren, zodat ik mijn webserver weer kan gebruiken – bijvoorbeeld door geen API-versleuteling te gebruiken als alles op een vertrouwd intern netwerk draait. De webserver heeft de grootste impact, gevolgd door het uitschakelen of minimaliseren van logging, het uitschakelen van OTA (eh, nee dank je), de API-encryptie en andere optimalisaties – niets van dat alles hieronder – gewoon geen webserver, dus geen preview op een webpagina… pas het IP-adres aan en gebruik niet alleen DHCP (dynamische adressering)…

Oh, hieronder heb ik de seriële pinnen van de LD2410 aangepast aan de standaard I2C-pinnen van de BME280…

HAH – lastminute wijziging – in plaats van de webserver uit te schakelen, heb ik logging uitgeschakeld door de baudrate van logging op 0 te zetten. Ik kon de webserver daarna weer inschakelen. De beste keuze.

En op bijna magische wijze – in Home Assistant…

LD2410C Radar aanwezigheidssensor in Home Assistant
LD2410C Radar aanwezigheidssensor in Home Assistant
LD2410C Radar aanwezigheidssensor in Home Assistant
LD2410C Radar aanwezigheidssensor in Home Assistant
LD2410C Radar aanwezigheidssensor in Home Assistant
LD2410C Radar aanwezigheidssensor in Home Assistant

Dat is het voorlopig – om hier echt verder mee te gaan, heb ik een ESP met meer geheugen nodig – of veel meer kennis 🙂

Zoals je hierboven kunt zien, werken de sensoren WEL… en die ingebouwde WS2812 RGB-led wordt automatisch aangestuurd – de kleur van het icoon verandert op magische wijze met de afstand. Oorspronkelijk deed ik de aansturing via Home Assistant – en dat kan ook… of niet… Het is meer een extraatje dan een noodzaak. Ik vind het prettig om visuele feedback te hebben over de werking van het apparaat.

Je kunt al die sensoren naar behoefte gebruiken in Home Assistant-automatiseringen. Ik gebruik zelf vaak alleen de sensoren voor ‘bewegend doel’ en ‘stilstaand doel’.

Aanvullingen en opmerkingen zijn welkom.
Koop deze op Aliexpress en steun dit kanaal


Ondersteun mijn website’s, kanaal en inhoud en mijn voortdurende inspanningen via Patreon:
https://patreon.com/Colani

Suc6
Terry van Erp