{"id":5106,"date":"2025-08-28T11:19:51","date_gmt":"2025-08-28T09:19:51","guid":{"rendered":"https:\/\/www.rommelkist.nl\/elec\/?p=5106"},"modified":"2025-08-29T17:38:44","modified_gmt":"2025-08-29T15:38:44","slug":"annex32-basic-aanwezigheidssensor","status":"publish","type":"post","link":"https:\/\/www.rommelkist.nl\/elec\/elektronica\/annex32-basic-aanwezigheidssensor\/","title":{"rendered":"Annex32 Basic &#8211; Aanwezigheidssensor"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Via een artikel in Elektor magazine over het verbeteren van de WiFi-connectie van de ESP32-C3 door een aanpassing aan de antenne (<a href=\"https:\/\/www.elektormagazine.nl\/magazine\/elektor-443\/64041\">hier<\/a>) kwam ik op de website van de auteur <a href=\"https:\/\/peterneufeld.wordpress.com\/\">Peter Neufeld<\/a> terecht. Zeer interessante artikelen o.a. dus ook over Annex32. Dat van de antenneaanpassing wil ik nog een keer gaan uitproberen.<br>Op zijn site kwam ik o.a. een interessant <a href=\"https:\/\/peterneufeld.wordpress.com\/2023\/03\/07\/ld2410-human-presence-radar-sensor\/\">artikel<\/a> tegen over het inzetten van een LD2410L-radarsensor. Ik had zo een module al een tijdje in huis, maar had er nog niet iets mee gedaan. Op mijn werk hebben we namelijk een proef lopen met de inzet van dit soort modules om de aanwezigheid van medewerkers te monitoren rondom flexwerkplekken, waar altijd een groot gebrek aan is. Ik dacht dat wel leuk zou zijn om dat na te bootsen met deze modules. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hij gebruikt in zijn artikel een <a href=\"https:\/\/www.tinytronics.nl\/en\/development-boards\/microcontroller-boards\/with-wi-fi\/m5stack-atom-lite-esp32-development-board\">M5Stack Atom light ESP32<\/a> die blijkbaar twee seri\u00eble poorten heeft. In zijn programma gebruikt hij deze tweede poort. En jammer genoeg zit die niet op de ESP die ik heb: ESP32-C3 Super Mini. Ik heb het script aan gepast met GPIO20 (Rx) en GPIO21 (Tx). Maar werken doet het nog (!) niet. Ook een andere module gaf hetzelfde resultaat te zien.<br><br>Ik heb Peter om hulp gevraagd.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.rommelkist.nl\/elec\/wp-content\/uploads\/2025\/08\/Naamloos-2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"452\" src=\"https:\/\/www.rommelkist.nl\/elec\/wp-content\/uploads\/2025\/08\/Naamloos-2.png\" alt=\"\" class=\"wp-image-5118\" style=\"width:450px\" srcset=\"https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/08\/Naamloos-2.png 800w, https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/08\/Naamloos-2-300x170.png 300w, https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/08\/Naamloos-2-768x434.png 768w, https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/08\/Naamloos-2-425x240.png 425w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><figcaption class=\"wp-element-caption\">Schema: RX en TX zijn gekruist.<\/figcaption><\/figure>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\n&#039; HLK-LD2410c_test.bas\n&#039; HLK-LD2410 RADAR module from Hi-Link connected to an ESP32\n&#039; for very reliable detection of moving or non-moving persons\n\n&#039; - Connected via serial2 to an ESP32 (e.g. M5Stack ATOM matrix ESP32pico with 5x5 neopixel matrix)\n&#039; - Switches the radar unit to engineering mode to report more details.\n&#039; - Selects the data indicating a moving person (= moving target).\n&#039; - Selects the data indicating a non-moving but breathing person (= static target)\n\n&#039; - Creates a Webpage to ..\n&#039; -- Visualize the energy of the moving targets in 9 distance ranges by bar graphs\n&#039; -- Visualize the energy of the static targets in 7 distance ranges by bar graphs\n&#039; -- Visualize the internal detection for a moving target by a LED symbol\n&#039; -- Visualize the internal detection for a static target by a LED symbol\n \nVersion$ = &quot;1.0&quot; &#039; DB9JG 2023\/03\/\n\nRX_pin       = 0   &#039;pin for serial2 input comming from LD2410 TX-pin\nTX_pin       = 1   &#039;pin for serial2 output going to LD2410 RX-pin\ntoggle       = 0\nt$           = &quot;&quot;\nRADAR$       = &quot;&quot;\nRADAR_X$     = &quot;&quot;\nTarget_state$= &quot;&quot;\ncount        = 0\nmoving_LED   = 1 &#039;green\nstatic_LED   = 1 &#039;green\n\nTState       = 0\nMTDis1       = 0\nMTDis2       = 0\nETE_val      = 0\nSTDIS_val1   = 0\nSTDis_val2   = 0\nSTE_val      = 0\nDetDis1      = 0\nDetDis2      = 0\nMMD_gate     = 0\nMSD_gate     = 0\n\nstatic_range0=0  : moving_range0=0\nstatic_range1=0  : moving_range1=0\nstatic_range2=0  : moving_range2=0\nstatic_range3=0  : moving_range3=0\nstatic_range4=0  : moving_range4=0\nstatic_range5=0  : moving_range5=0\nstatic_range6=0  : moving_range6=0\nstatic_range7=0  : moving_range7=0\nstatic_range8=0  : moving_range8=0\n\ngosub        SETUP_LD2410_RADAR\n\ngosub        webpage\nonhtmlreload webpage\nonhtmlchange webpage\n\nonserial2    SER2RX\ntimer0 1000, TICK\n\nwait\nend\n\n&#039;#########################\nSER2RX:\n&#039;#########################\ncount=count+1\ntoggle=1-toggle\n&#039;pause 1\nserial2.read_iobuff(toggle)\nsize = iobuff.len(toggle)\n&#039; use only  each second incomming frame (toggle =0),\n&#039; but only the engineering frames with size=45\nif (toggle=0) and (size = 45) then\n  TState       =iobuff.read(0,8)\n  MT_Dis1      =iobuff.read(0,9)\n  MT_Dis2      =iobuff.read(0,10)\n  ETE_val      =iobuff.read(0,11)\n  STDIS_val1   =iobuff.read(0,12)\n  STDis_val2   =iobuff.read(0,13)\n  STE_val      =iobuff.read(0,14)\n  Det_Dis1     =iobuff.read(0,15)\n  Det_Dis2     =iobuff.read(0,16)\n  MMD_gate     =iobuff.read(0,17)\n  MSD_gate     =iobuff.read(0,18)\n  \n  moving_range0=iobuff.read(0,19)\n  moving_range1=iobuff.read(0,20)\n  moving_range2=iobuff.read(0,21)\n  moving_range3=iobuff.read(0,22)\n  moving_range4=iobuff.read(0,23)\n  moving_range5=iobuff.read(0,24)\n  moving_range6=iobuff.read(0,25)\n  moving_range7=iobuff.read(0,26)\n  moving_range8=iobuff.read(0,27)\n  \n  static_range0=iobuff.read(0,28)\n  static_range1=iobuff.read(0,29)\n  static_range2=iobuff.read(0,30)\n  static_range3=iobuff.read(0,31)\n  static_range4=iobuff.read(0,32)\n  static_range5=iobuff.read(0,33)\n  static_range6=iobuff.read(0,34)\n  static_range7=iobuff.read(0,35)\n  static_range8=iobuff.read(0,36)\n  \n  &#039;Tstate regards the actual (default?) energy limits, \n  &#039; for each distance gate and for the maned time\n  SELECT CASE TState \n    CASE 0\n      Target_state$ = &quot;No target detected&quot;\n      moving_LED = 1 &#039;green\n      static_LED = 1 &#039;green\n    CASE 1\n      Target_state$ = &quot;Moving target detected&quot;\n      moving_LED = 0 &#039;red\n      static_LED = 1 &#039;green\n    CASE 2\n      Target_state$ = &quot;Static target detected&quot;\n      moving_LED = 1 &#039;green\n      static_LED = 0 &#039;red\n    CASE 3\n      Target_state$ = &quot;Moving+static target detected&quot;\n      moving_LED = 0 &#039;red\n      static_LED = 0 &#039;red\n  END SELECT\nendif\nreturn\n\n&#039;#########################\nWEBPAGE:\n&#039;#########################\nA$ = &quot;&quot;\nA$ = A$ + &quot;&amp;lt;H3&gt;LD2410 radar-sensor visualizer v&quot; + Version$ +&quot;&amp;lt;\/H3&gt;&quot;\nA$ = A$ + textbox$(T$) + &quot;&amp;lt;br&gt;&quot; \nA$ = A$ + textbox$(Target_state$) + &quot; m:&quot; + LED$(moving_LED) + &quot; s:&quot; + LED$(static_LED)+ &quot;&amp;lt;br&gt;&amp;lt;br&gt;&quot;\nA$ = A$ + &quot;Targets energy in distance ranges: &amp;lt;br&gt;&quot;\nA$ = A$ + &quot;_________________&amp;lt;u&gt;moving&amp;lt;\/u&gt;_____&amp;lt;u&gt;static+breathing&amp;lt;\/u&gt;&amp;lt;br&gt;&quot;\n&#039;A$ = A$ + &quot; 0: 0.00m - 0.75m _ &quot;+ meter$(moving_range0,0,100)+ &quot; _ &quot; + meter$(static_range0,0,100)+&quot;&amp;lt;br&gt;&quot;\n&#039;A$ = A$ + &quot; 1: 0.75m - 1.50m _ &quot;+ meter$(moving_range1,0,100)+ &quot; _ &quot; + meter$(static_range1,0,100)+&quot;&amp;lt;br&gt;&quot;\nA$ = A$ + &quot; 0: 0.00m - 0.75m _ &quot;+ meter$(moving_range0,0,100)+ &quot;&amp;lt;br&gt;&quot;\nA$ = A$ + &quot; 1: 0.75m - 1.50m _ &quot;+ meter$(moving_range1,0,100)+ &quot;&amp;lt;br&gt;&quot;\nA$ = A$ + &quot; 2: 1.50m - 2.25m _ &quot;+ meter$(moving_range2,0,100)+ &quot; _ &quot; + meter$(static_range2,0,100)+&quot;&amp;lt;br&gt;&quot;\nA$ = A$ + &quot; 3: 2.25m - 3.00m _ &quot;+ meter$(moving_range3,0,100)+ &quot; _ &quot; + meter$(static_range3,0,100)+&quot;&amp;lt;br&gt;&quot;\nA$ = A$ + &quot; 4: 3.00m - 3.75m _ &quot;+ meter$(moving_range4,0,100)+ &quot; _ &quot; + meter$(static_range4,0,100)+&quot;&amp;lt;br&gt;&quot;\nA$ = A$ + &quot; 5: 3.75m - 4.50m _ &quot;+ meter$(moving_range5,0,100)+ &quot; _ &quot; + meter$(static_range5,0,100)+&quot;&amp;lt;br&gt;&quot;\nA$ = A$ + &quot; 6: 4.50m - 5.25m _ &quot;+ meter$(moving_range6,0,100)+ &quot; _ &quot; + meter$(static_range6,0,100)+&quot;&amp;lt;br&gt;&quot;\nA$ = A$ + &quot; 7: 5.25m - 6.00m _ &quot;+ meter$(moving_range7,0,100)+ &quot; _ &quot; + meter$(static_range7,0,100)+&quot;&amp;lt;br&gt;&quot;\nA$ = A$ + &quot; 7: 6.00m - 6.75m _ &quot;+ meter$(moving_range8,0,100)+ &quot; _ &quot; + meter$(static_range8,0,100)+&quot;&amp;lt;br&gt;&quot;\n\ncls\nautorefresh 250\nhtml A$\nreturn\n\n&#039;#########################\nTICK:\n&#039;#########################\nt$=time$\nRADAR$=IObuff.ToHex$(0)\n&#039;wlog t$, count ,RADAR$\nwlog t$, count, Tstate\ncount=0\nreturn\n\n\n&#039;#########################\nSETUP_LD2410_RADAR:\n&#039;#########################\nserial2.mode 256000,RX_pin,TX_pin\n\nEnable_config$           =&quot;fdfcfbfa0400ff00010004030201&quot;\nEnable_engineering_mode$ =&quot;fdfcfbfa0200620004030201&quot;\nEnd_config$              =&quot;fdfcfbfa0200fe0004030201&quot;\n&#039;movement: 8 gates; static: 8 gates; unmaned duration: 5s\nDefault1$                =&quot;fdfcfbfa1400600000000800000001000800000002000500000004030201&quot;\n\nIObuff.FromHex(1, Enable_config$)\nSERIAL2.WRITE_IOBUFF(1)\npause 100\nIObuff.FromHex(1, Enable_engineering_mode$)\nSERIAL2.WRITE_IOBUFF(1)\npause 100\nIObuff.FromHex(1, Default1$)\nSERIAL2.WRITE_IOBUFF(1)\npause 100\nIObuff.FromHex(1, End_config$)\nSERIAL2.WRITE_IOBUFF(1)\npause 100\nreturn\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Met behulp van Peter alles toch werkend gekregen! Om Serial2 te gebruiken moest ik blijkbaar GPIO0 (Tx) en GPIO1 (Rx) gebruiken. En toen werkte alles naar behoren. Zie hieronder de webpagina op de ESP.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.rommelkist.nl\/elec\/wp-content\/uploads\/2025\/08\/image-43.png\"><img loading=\"lazy\" decoding=\"async\" width=\"802\" height=\"637\" src=\"https:\/\/www.rommelkist.nl\/elec\/wp-content\/uploads\/2025\/08\/image-43.png\" alt=\"\" class=\"wp-image-5123\" style=\"width:500px\" srcset=\"https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/08\/image-43.png 802w, https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/08\/image-43-300x238.png 300w, https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/08\/image-43-768x610.png 768w, https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/08\/image-43-425x338.png 425w\" sizes=\"auto, (max-width: 802px) 100vw, 802px\" \/><\/a><figcaption class=\"wp-element-caption\">Dit is het resultaat<\/figcaption><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Via een artikel in Elektor magazine over het verbeteren van de WiFi-connectie van de ESP32-C3 door een aanpassing aan de antenne (hier) kwam ik op de website van de auteur Peter Neufeld terecht. Zeer interessante artikelen o.a. dus ook over Annex32. Dat van de antenneaanpassing wil ik nog een keer gaan uitproberen.Op zijn site kwam ik o.a. een interessant artikel tegen over het inzetten van een LD2410L-radarsensor. Ik had zo een module al een tijdje in huis, maar had er nog niet iets mee gedaan. Op mijn werk hebben we namelijk een proef lopen met de inzet van dit soort modules<span class=\"more-link\"><a href=\"https:\/\/www.rommelkist.nl\/elec\/elektronica\/annex32-basic-aanwezigheidssensor\/\">Read More &rarr;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":5112,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","footnotes":""},"categories":[3,206],"tags":[205,207,131,211],"class_list":["entry","author-admin","post-5106","post","type-post","status-publish","format-standard","has-post-thumbnail","category-elektronica","category-programmeren","tag-annex32-rds","tag-basic","tag-esp32-c3","tag-ld2410l"],"_links":{"self":[{"href":"https:\/\/www.rommelkist.nl\/elec\/wp-json\/wp\/v2\/posts\/5106","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rommelkist.nl\/elec\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rommelkist.nl\/elec\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rommelkist.nl\/elec\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rommelkist.nl\/elec\/wp-json\/wp\/v2\/comments?post=5106"}],"version-history":[{"count":12,"href":"https:\/\/www.rommelkist.nl\/elec\/wp-json\/wp\/v2\/posts\/5106\/revisions"}],"predecessor-version":[{"id":5127,"href":"https:\/\/www.rommelkist.nl\/elec\/wp-json\/wp\/v2\/posts\/5106\/revisions\/5127"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.rommelkist.nl\/elec\/wp-json\/wp\/v2\/media\/5112"}],"wp:attachment":[{"href":"https:\/\/www.rommelkist.nl\/elec\/wp-json\/wp\/v2\/media?parent=5106"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rommelkist.nl\/elec\/wp-json\/wp\/v2\/categories?post=5106"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rommelkist.nl\/elec\/wp-json\/wp\/v2\/tags?post=5106"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}