V tomto návode sa zoznámime s modulom PIR HC-SR501. Jedná sa o pohybový senzor snímajúci infračervené svetlo (z toho označenie PIR – passive infrared) s nastaviteľným časovaním a citlivosťou. V našom katalógu môžete nájsť okrem samotného senzor aj akrylátový držiak.
-
Akrylický držiak pre HC-SR5010.70€ (bez DPH 0.58€ )
-
HC-SR501 PIR infračervený senzor pohybu modrý1.50€ (bez DPH 1.25€ )
Obsah článku
Princíp funkčnosti
Pomerne veľkú časť modulu zaberá tzv. fresnelova šošovka, ktorá sústreďuje svetelnú energiu do senzora, ktorý ju sníma. Nejedná sa však o viditeľné svetlo ale o jeho infračervenú časť, ktorú vylučujú všetky objekty. My ako ľudia vnímame infračervené žiarenie ako teplo, to znamená, že všetko teplejšie ako okolie (napríklad človek alebo aj zviera) vie tento senzor zachytiť.
Hardvér
Na doske HC-SR501 sa na vrchnej strane nachádza šošovka so senzorom, zatiaľ čo na spodnej sú potenciometre pre ladenie a výstupné piny. Modul umožňuje pomocou potenciometrov jemné ladenie citlivosti a doby zopnutia. Okrem toho je na doske aj jumper nastavujúci pracovný mód.
Jumper L – ak modul detegoval pohyb tak na výstupe je logická 1 po nastavenú dobu. V prípade, že v tejto dobe opäť nastal pohyb, modul ho ignoruje a na výstupe bude logická 0 po uplynutí času
Jumper H – ak modul detegoval pohyb tak na výstupe je logická 1 po nastavenú dobu. V prípade, že v tejto dobe zopnutia opäť nastal pohyb, tak modul resetuje uplynutý čas a opäť čaká nastavenú dobu. Na výstupe bude logická 0 až po uplynutí nového času
Pre viac informácií odporúčame preštudovať datasheet.
Program a zapojenie
Používanie modulu je veľmi jednoduché a intuitívne a dokonca ani nemusíme používať žiadnu knižnicu. Napájanie je možné od 3.3V – 20V, pričom výstupný signál je ustálený na 3.3V (Arduino a väčšina iných mikrokontrolérov je kompatibilná s touto napäťovou úrovňou).
Ak modul zaznamená pohyb, na výstupnom pine OUT bude logická 1 (3.3V) a ak modul pohyb nezaznamená, na výstupe je logická 0 (0V). V kóde nám teda stačí sledovať, či na vstupnom pine máme logickú 1.
// tento kód zabezpečí, že ak detegujeme pohyb, LED dióda na pine 13 sa rozsvieti a na seriálový monitor vypíšeme // správu o detekcií pohybu // definujeme použité piny #define pirPin 2 #define ledPin 13 // pomocné premenné int vstup_zo_senzora = 0; bool motionState = false; // inicializujeme na false, žiadny pohyb detegovaný void setup() { // konfigurácia pinov ako výstup a vstup pinMode(ledPin, OUTPUT); pinMode(pirPin, INPUT); Serial.begin(9600); //inicializácia komunikácie s PC } void loop() { vstup_zo_senzora = digitalRead(pirPin); // prečítame vstup zo senzora if (vstup_zo_senzora == HIGH) { //ak sme detegovali pohyb.... digitalWrite(ledPin, HIGH); // zapneme LED if (motionState == false) { //zmenime nastavenie premennej na true, ak predtým bola false a vypíšeme správu Serial.println("Pozor, pohyb!"); motionState = true; } } else { //ak nie je detegovaný pohyb... digitalWrite(ledPin, LOW); // vypneme LED if (motionState == true) { //zmeníme nastavenie premmennej na false a vypíšeme správu Serial.println("Pohyb prestal."); motionState = false; } } }
Ďalšie čítanie a zdroje
- https://www.makerguides.com/hc-sr501-arduino-tutorial/
- https://sk.wikipedia.org/wiki/Fresnelova_%C5%A1o%C5%A1ovka