{"id":1946,"date":"2018-12-28T18:23:08","date_gmt":"2018-12-28T17:23:08","guid":{"rendered":"http:\/\/yarogniew.net\/arduino\/?p=1946"},"modified":"2024-07-24T21:35:48","modified_gmt":"2024-07-24T19:35:48","slug":"rcwl-0516-mikrofalowy-sensor-ruchu","status":"publish","type":"post","link":"https:\/\/arduino.net.pl\/index.php\/rcwl-0516-mikrofalowy-sensor-ruchu\/","title":{"rendered":"RCWL-0516. Mikrofalowy sensor ruchu cz\u0142owieka (Arduino i MicroPython)"},"content":{"rendered":"\n<p>RCWL-0516 to alternatywa dla czujnika PIR. Sprawdz\u0119 jak silna.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><a href=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2019\/01\/RCWL-0516_A.jpeg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2019\/01\/RCWL-0516_A-1024x576.jpeg\" alt=\"\" class=\"wp-image-2304\" srcset=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2019\/01\/RCWL-0516_A-1024x576.jpeg 1024w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2019\/01\/RCWL-0516_A-300x169.jpeg 300w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2019\/01\/RCWL-0516_A-768x432.jpeg 768w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2019\/01\/RCWL-0516_A-440x248.jpeg 440w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2019\/01\/RCWL-0516_A-533x300.jpeg 533w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2019\/01\/RCWL-0516_A.jpeg 1180w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><a href=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2019\/01\/RCWL-0516_B.jpeg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2019\/01\/RCWL-0516_B-1024x576.jpeg\" alt=\"\" class=\"wp-image-2305\" srcset=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2019\/01\/RCWL-0516_B-1024x576.jpeg 1024w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2019\/01\/RCWL-0516_B-300x169.jpeg 300w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2019\/01\/RCWL-0516_B-768x432.jpeg 768w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2019\/01\/RCWL-0516_B-440x247.jpeg 440w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2019\/01\/RCWL-0516_B-533x300.jpeg 533w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2019\/01\/RCWL-0516_B.jpeg 1193w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">SPECYFIKACJA<\/h2>\n\n\n\n<p>RCWL-0516 microwave radar sensor module Human body induction switch module Intelligent sensor<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Napi\u0119cie robocze: 4-28V<\/li>\n\n\n\n<li>Pr\u0105d operacyjny: 2,8 mA (typowy); 3 mA (maks.)<\/li>\n\n\n\n<li>Odleg\u0142o\u015b\u0107 wykrywania: 5-9 m<\/li>\n\n\n\n<li>Moc transmisyjna: 20 mW (typowa); 30 mW (maks.)<\/li>\n\n\n\n<li>Napi\u0119cie wej\u015bciowe: 3,2-3,4V<\/li>\n\n\n\n<li>Pr\u0105d zasilania: 100 mA<\/li>\n\n\n\n<li>Kontrola wst\u0119pna poziom niski: 0V<\/li>\n\n\n\n<li>Kontrola wst\u0119pna wysoki poziom: 3.3V. <\/li>\n\n\n\n<li>Temperatura pracy: -20 ~ 80 stopni Celsjusza<\/li>\n<\/ul>\n\n\n\n<p class=\"has-sitebg-color has-accent-1-background-color has-text-color has-background\" style=\"font-style:normal;font-weight:500\">Stan logiczny HIGH wysy\u0142a napi\u0119cie 3.3V przy zasilaniu 5V. Jest zatem bezpieczny dla wej\u015b\u0107 ESP8266. Natomiast przy zasilaniu z NodeMCU 3.3V nie pracuje (pr\u0105d zasilania 100 mA)<\/p>\n\n\n\n<p>Czujnik dzia\u0142a r\u00f3wnie\u017c przy napi\u0119ciu 9V. R\u00f3wnie\u017c wtedy OUT wysy\u0142a napi\u0119cie 3.3V. Przy napi\u0119ciu 12V sensor nie dzia\u0142a\u0142, ca\u0142y czas trzyma\u0142 poziom HIGH (3.3V). Nie wiem dlaczego, skoro w nocie katalogowej jest zakres 4-28V.<\/p>\n\n\n\n<p class=\"has-sitebg-color has-accent-1-background-color has-text-color has-background has-normal-font-size\">Czujnik RCWL-0516 potrzebuje mocnego zasilania z osobnego \u017ar\u00f3d\u0142a. Zwykle zasilam urz\u0105dzenie stabilnym zasilaczem 5V\/2A. Zamykam czujnik w plastikowej obudowie w odleg\u0142o\u015bci co najmniej 10 cm od p\u0142ytki z mikrokontrolerem. Wtedy uk\u0142ad dzia\u0142a praktycznie bezawaryjnie.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0141\u0104CZENIE<\/h2>\n\n\n\n<p>\u0141\u0105czenie jest banalnie proste.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"934\" height=\"641\" src=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2019\/01\/Zrzut-ekranu-2019-01-6-o-22.16.46.png\" alt=\"\" class=\"wp-image-2191\" srcset=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2019\/01\/Zrzut-ekranu-2019-01-6-o-22.16.46.png 934w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2019\/01\/Zrzut-ekranu-2019-01-6-o-22.16.46-300x206.png 300w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2019\/01\/Zrzut-ekranu-2019-01-6-o-22.16.46-768x527.png 768w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2019\/01\/Zrzut-ekranu-2019-01-6-o-22.16.46-437x300.png 437w\" sizes=\"auto, (max-width: 934px) 100vw, 934px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity is-style-wide\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">KODY:<\/h4>\n\n\n\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-very-light-gray-color has-accent-2-background-color has-text-color has-background wp-element-button\" href=\"https:\/\/github.com\/yarogniew\/RCWL-0516_czujnik_ruchu\/blob\/master\/RCWL-0516_czujnik_ruchu.ino\">Kod wykorzystuj\u0105cy bibliotek\u0119 &#8222;millisDelay.h&#8221; \/\/ 30.12.2019<\/a><\/div>\n\n\n\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-very-light-gray-color has-cyan-bluish-gray-background-color has-text-color has-background wp-element-button\" href=\"https:\/\/gist.github.com\/yarogniew\/91738022adf26c800129576bf809715b\">prosty kod nr 1<\/a><\/div>\n\n\n\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-cyan-bluish-gray-background-color has-background wp-element-button\" href=\"https:\/\/gist.github.com\/yarogniew\/f3dd80f3c93ce32b6752c8b6b4f9d84d\">Prosty czujnik ruchu wykorzystuj\u0105cy bibliotek\u0119 Timer.h<\/a><\/div>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; light: false; title: Kod:; toolbar: true; notranslate\" title=\"Kod:\">\n\/*\n    RCWL-0516 czujnik ruchu pin 2 \/\/arduino nano\n    Po ustaniu ruchu program odlicza czas ustawiony w zmiennej &quot;zwloka&quot;\n    i miga diod\u0105 na pinie 6\n\n    Written by Jarogniew Milewski for &quot;Arduino dla strasznych lamer\u00f3w&quot;\n    http:\/\/arduino.net.pl\n    Licensed under the MIT license.\n    All text above must be included in any redistribution.\n\n*\/\n\n\n#include &quot;millisDelay.h&quot;\nmillisDelay outMillisDelay, flashingMillisDelay;\n\n#define motionSensor 2 \/\/D2 nano\n#define outLed 5\n#define flashingLed 6\n\nlong sensorDelay = 15000; \/\/ zw\u0142oka po ustaniu ruchu\nint flashingSpeed = 500;  \/\/ tempo migania diody\n\nbool isDark = true;\nbool moveStatus = false;  \/\/ blokada p\u0119tli\nbool ledOn = false;\n\n\nvoid setup() {\n  Serial.begin(9600);\n  pinMode(outLed, OUTPUT);\n  digitalWrite(outLed, LOW);\n  pinMode(flashingLed, OUTPUT);\n  digitalWrite(flashingLed, LOW);\n\n  outMillisDelay.start(sensorDelay); \/\/ inicjowanie akcji biblioteki millisDelay\n}\n\nvoid loop() {\n\n  if (isDark) {\n\n    if (outMillisDelay.isFinished()) {  \/\/ je\u015bli zako\u0144czone odliczanie\n      digitalWrite(outLed, LOW);\n      Serial.println(&quot;Wy\u0142\u0105czam \u015bwiat\u0142o&quot;);\n      flashingMillisDelay.stop(); \/\/ zako\u0144cz miganie diody i wy\u015bwietlanie czasu\n      digitalWrite(flashingLed, LOW); \/\/ dioda migaj\u0105ca zgaszona\n      ledOn = false;\n    }\n\n\n    \/\/ ================ dioda migaj\u0105ca ========================\n\n    if (!moveStatus)  \/\/ je\u015bli brak ruchu wy\u015bwietl pozostaj\u0105cy czas i migaj diod\u0105\n    {\n      if (flashingMillisDelay.isFinished())\n      {\n        flashingMillisDelay.repeat(); \/\/ powtarzaj z ustawion\u0105 wcze\u015bniej zw\u0142ok\u0105\n        Serial.println(outMillisDelay.remaining());\n\n        if (outMillisDelay.remaining() &lt;= 10000) \/\/ migaj diod\u0105 w ostatnich 10 sekundach \n        {\n\n          ledOn = !ledOn;   \/\/ toggle led\n          if (ledOn) {\n            digitalWrite(flashingLed, HIGH);\n          } else {\n            digitalWrite(flashingLed, LOW);\n          }\n        }\n      }\n    }\n\n    czujnik_ruchu();\n  }\n}\n\n\n\/\/ ==================   FUNKCJE   ========================\n\nvoid czujnik_ruchu()\n{\n  bool IsMove = digitalRead(motionSensor); \/\/ stan sensora ruchu\n\n  switch (moveStatus)\n  {\n    case 0:\n      if (IsMove) \/\/ wykryto ruch\n      {\n        Serial.println(&quot;Wykryto ruch&quot;);\n        \/\/analogWrite(outLed, data2);  \/\/ sterowanie jasno\u015bci\u0105 paska led\n        digitalWrite(outLed, HIGH); \/\/ zapalenie diody\n        Serial.println(&quot;W\u0142\u0105czam \u015bwiat\u0142o&quot;);\n        outMillisDelay.stop();\n        digitalWrite(flashingLed, LOW); \/\/ zgaszenie ledy odliczaj\u0105cej przy wykryciu ruchu\n        moveStatus = true;\n      }\n      break;\n\n    case 1:\n      if (!IsMove) \/\/ ruch usta\u0142\n      {\n        outMillisDelay.start(sensorDelay);  \/\/ inicjowanie akcji biblioteki millisDelay\n        flashingMillisDelay.start(flashingSpeed); \/\/ w\u0142\u0105czenie diody migaj\u0105cej z ustawion\u0105 cz\u0119stotliwo\u015bci\u0105\n        Serial.print(&quot;Brak ruchu, zaczynam odliczanie ustalonej zw\u0142oki - &quot;);\n        Serial.print(outMillisDelay.delay() \/ 1000);\n        Serial.println(&quot; sekund:&quot;);\n        moveStatus = false;\n      }\n      break;\n  }\n\n}\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-css-opacity is-style-wide\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">MicroPython i RCWL-0516<\/h1>\n\n\n\n<p><strong>Uwaga!<\/strong> Pami\u0119ta\u0107 nale\u017cy, \u017ce w przypadku u\u017cycia ESP-8266 czy ESP-32 czujnik RCWL-0516 <mark><strong>nie zadzia\u0142a na 3,3V<\/strong><\/mark>. Aby oszcz\u0119dzi\u0107 sobie stresu szukania w kodzie dlaczego program nie dzia\u0142a w\u0142a\u015bciwie, <mark><strong>nale\u017cy zasili\u0107 go co najmniej 5V.<\/strong><\/mark> I nie wystarczy zasili\u0107 go na przyk\u0142ad z pinu 5V p\u0142ytki ESP8266 D1 mini, je\u015bli pod\u0142\u0105czone s\u0105 inne czujniki. <mark><strong>Do stabilnej pracy RCWL-0516 dobrym rozwi\u0105zaniem jest osobny zasilacz.<\/strong><\/mark> <br>Oto prosty program obs\u0142uguj\u0105cy czujnik.<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/yarogniew\/9efcfd41c066e9d8dc0b51dfa463d154.js\"><\/script>\n\n\n\n<p><strong>Bardziej skomplikowany program, kt\u00f3ry sprawdza ruch i je\u015bli nast\u0105pi\u0142 po czasie d\u0142u\u017cszym ni\u017c MIN_ELAPSED_SINCE_STOP, wysy\u0142a info na serwer flask o intruzie.<\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/gist.github.com\/yarogniew\/28d0f7450b08e57f3248aaee71975ecd\">https:\/\/gist.github.com\/yarogniew\/28d0f7450b08e57f3248aaee71975ecd<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity is-style-wide\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">LINKI<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ESP8266-RCWL0516\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/jxmot\/ESP8266-RCWL0516\">https:\/\/github.com\/jxmot\/ESP8266-RCWL0516<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><a href=\"https:\/\/www.14core.com\/wiring-the-rcwl0516-auto-induction-doppler-microwave-radar-with-esp826632arduino\/\">Wiring the RCWL0516 Auto Induction Doppler Microwave Radar with ESP8266\/32\/Arduino<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/dronebotworkshop.com\/rcwl-0516-experiments\/\">https:\/\/dronebotworkshop.com\/rcwl-0516-experiments\/<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/abc-rc.pl\/product-pol-9463-Mikrofalowy-sensor-ruchu-4-28V-RCWL-0516-Czujnik-Arduino.html\">abc-rc.pl<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/rohling-de.blogspot.com\/2017\/04\/coolest-motion-detection-sensor.html\">rohling-de.blogspot.com<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/jdesbonnet\/RCWL-0516#rcwl-0516-information\">RCWL-0516 information<\/a><\/li>\n\n\n\n<li><a href=\"http:\/\/www.rogerclark.net\/investigating-a-rcwl-9196-rcwl-0516-radar-motion-detector-modules\/\">Investigating a RCWL 9196 \/ RCWL-0516&nbsp;<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=9WiJJgIi3W0\">#135 Radar Sensors \/ Switches: Comparison and Tests &#8211; Andreas Spiess<\/a><\/li>\n<\/ul>\n\n\n","protected":false},"excerpt":{"rendered":"<p>RCWL-0516 to alternatywa dla czujnika PIR. Sprawdz\u0119 jak silna. SPECYFIKACJA RCWL-0516 microwave radar sensor module Human body induction switch module Intelligent sensor Stan logiczny HIGH wysy\u0142a napi\u0119cie 3.3V przy zasilaniu&#8230;<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[2,141],"tags":[118,117],"class_list":["post-1946","post","type-post","status-publish","format-standard","hentry","category-arduino","category-micropython","tag-czujnik-ruchu","tag-rcwl-0516"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/posts\/1946","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/comments?post=1946"}],"version-history":[{"count":65,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/posts\/1946\/revisions"}],"predecessor-version":[{"id":6319,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/posts\/1946\/revisions\/6319"}],"wp:attachment":[{"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/media?parent=1946"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/categories?post=1946"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/tags?post=1946"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}