Układ z czujnikiem PIR i Arduino to prosty sposób na wykrywanie ruchu w lampie, alarmie albo projekcie edukacyjnym. W praktyce najwięcej zyskuje się wtedy, gdy od razu rozumie się trzy rzeczy: co sensor naprawdę wykrywa, jak go poprawnie podłączyć i jak odróżnić normalne działanie od błędu. Poniżej prowadzę przez to krok po kroku, bez zbędnej teorii, ale z konkretnymi ustawieniami i pułapkami.
Najważniejsze fakty, które warto zapamiętać przed uruchomieniem układu
- Czujnik PIR nie mierzy temperatury, tylko reaguje na zmiany promieniowania podczerwonego w swoim polu widzenia.
- Popularny moduł HC-SR501 zwykle działa z zasilaniem 5 V, daje sygnał cyfrowy HIGH/LOW i ma typowy zasięg regulacji około 3-7 m.
- Po włączeniu potrzebuje najczęściej 30-60 sekund na stabilizację, więc pierwsze impulsy nie zawsze oznaczają awarię.
- Dwa potencjometry i jumper pozwalają ustawić czułość, czas podtrzymania oraz tryb wyzwalania.
- To bardzo dobry wybór do prostego wykrywania ruchu, ale nie do precyzyjnego pomiaru odległości ani niezawodnej detekcji nieruchomej osoby.
Jak działa czujnik PIR i co faktycznie wykrywa
PIR, czyli Passive Infrared Sensor, to pasywny czujnik podczerwieni. Pasywny dlatego, że niczego nie emituje, tylko obserwuje zmiany promieniowania IR w swoim otoczeniu. To ważne rozróżnienie: taki moduł nie mierzy „temperatury pokoju”, lecz reaguje na ruch ciepłych obiektów, najczęściej człowieka lub zwierzęcia, które przesuwają się przez kolejne strefy widzenia soczewki Fresnela.
W popularnym module HC-SR501 zasięg regulacji wynosi zwykle około 3-7 m, a kąt obserwacji jest mniejszy niż 120°. Na wyjściu pojawia się stan cyfrowy, więc Arduino nie potrzebuje żadnego przetwornika ADC; wystarcza zwykły pin wejściowy i `digitalRead()`. W praktyce to właśnie upraszcza cały projekt: na mikrokontrolerze dostajemy prosty sygnał „jest ruch” albo „nie ma ruchu”, bez dodatkowej obróbki danych.
| Co obserwuje PIR | Jak to interpretować w projekcie |
|---|---|
| Przejście osoby przed sensorem | Zwykle wywołuje impuls HIGH i jest idealne do testów ruchu. |
| Stojąca nieruchomo osoba | Po chwili może przestać być widoczna, bo sensor reaguje na zmianę, a nie na samą obecność. |
| Grzejnik, słońce, nawiew, szybkie zmiany temperatury | Mogą powodować fałszywe wyzwolenia, jeśli czujnik jest źle zamontowany. |
| Przesunięcie ręki lub sylwetki przez pole widzenia | Daje czytelny sygnał testowy, ale nie zawsze odwzorowuje zachowanie w realnym pomieszczeniu. |
Gdy rozumie się tę zasadę, reszta staje się dużo prostsza. Zamiast szukać „magii” w kodzie, zaczyna się od poprawnego montażu, bo właśnie tu najczęściej pojawiają się pomyłki.

Jak podłączyć moduł do Arduino bez pomyłek
Najwygodniej zacząć od Arduino UNO, Nano albo MEGA. W module HC-SR501 wystarczą trzy przewody: zasilanie, masa i wyjście. Ja zwykle ustawiam wszystko na stole roboczym, zanim zamknę układ w obudowie, bo przy PIR-ze źle ustawiona orientacja robi większą różnicę niż sama długość przewodów.
| Pin modułu | Gdzie podłączyć w Arduino | Uwagi praktyczne |
|---|---|---|
| VCC | 5 V | Na start trzymaj się klasycznego zasilania 5 V, bo tak pracuje większość modułów HC-SR501. |
| OUT | Dowolny pin cyfrowy, np. D2 | Do samego odczytu wystarcza wejście cyfrowe. |
| GND | GND | Wspólna masa jest obowiązkowa, inaczej sygnał będzie losowy albo wcale nie zadziała. |
Na wyjściu takiego modułu pojawia się zwykle poziom logiczny około 3,3 V, więc Arduino UNO odczyta go bez problemu jako HIGH. Nie potrzeba tu rezystora podciągającego do zwykłego testu, bo moduł sam wystawia cyfrowy sygnał. Jeśli testujesz pierwszy raz, ustaw potencjometry mniej więcej w środku, wgraj prosty szkic i odczekaj chwilę po podaniu zasilania.
- Odczekaj 30-60 sekund po włączeniu zasilania.
- Nie testuj czujnika od razu przy grzejniku, oknie ani wentylatorze.
- Przed montażem sprawdź, czy LED na module lub na płytce reaguje na ruch.
Gdy przewody są już poprawne, największą robotę robi kod. I wbrew pozorom nie potrzeba tu żadnej biblioteki ani skomplikowanej logiki.
Jak napisać prosty szkic, który od razu pokaże ruch
Najprostszy wariant to odczyt stanu cyfrowego i wypisanie informacji na monitorze szeregowym. Ja zaczynam od takiej wersji, bo pozwala od razu odróżnić problem z kodem od problemu z okablowaniem. Dioda LED na pinie 13 daje szybki sygnał wizualny, a Serial Monitor pokazuje, czy Arduino rzeczywiście widzi zmianę stanu.
const byte pirPin = 2;
const byte ledPin = 13;
int lastMotion = LOW;
void setup() {
pinMode(pirPin, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
delay(30000); // czas na stabilizację czujnika po włączeniu
Serial.println("Czujnik gotowy");
}
void loop() {
int motion = digitalRead(pirPin);
if (motion != lastMotion) {
lastMotion = motion;
digitalWrite(ledPin, motion);
if (motion == HIGH) {
Serial.println("Ruch wykryty");
} else {
Serial.println("Brak ruchu");
}
}
delay(50);
}
W tym szkicu celowo zostawiam 30 sekund na start, bo podczas pierwszych chwil po zasileniu czujnik potrafi zgłaszać przypadkowe impulsy. Jeśli chcesz, możesz ten czas skrócić w projekcie docelowym, ale do testów lepiej go nie usuwać. Właśnie dzięki temu widzisz, czy układ działa stabilnie, a nie tylko „czasem działa”.
Jeśli później będziesz sterować przekaźnikiem, buzzerem albo diodami 12 V, ten sam odczyt z PIR-a zostaje bez zmian. Zmienia się tylko to, co robisz po wykryciu ruchu, a to otwiera drogę do strojenia parametrów sensora.
Jak ustawić czułość, czas podtrzymania i tryb wyzwalania
Na module HC-SR501 zwykle masz dwa potencjometry i jeden jumper. Jeden odpowiada za zasięg/czułość, drugi za czas podtrzymania stanu wysokiego, a jumper przełącza tryb pracy. To nie są ozdobniki. Te trzy elementy decydują o tym, czy układ będzie użyteczny w korytarzu, na schodach czy w prostym alarmie.
| Element regulacji | Co zmienia | Jak zacząć |
|---|---|---|
| Czułość | Reguluje zasięg detekcji, zwykle w okolicach 3-7 m. | Ustaw środek zakresu, a potem koryguj w górę lub w dół. |
| Czas podtrzymania | Określa, jak długo wyjście pozostaje HIGH po wykryciu ruchu. | Na start wybierz najkrótszy sensowny czas, żeby łatwiej obserwować reakcję. |
| Tryb H | Tryb powtarzalny, w którym kolejny ruch może wydłużać sygnał HIGH. | Dobry do oświetlenia i prostych automatyzacji, gdzie ruch ma podtrzymywać działanie. |
| Tryb L | Tryb pojedynczy, w którym po wyzwoleniu moduł odlicza czas i wraca do LOW. | Przydatny, gdy chcesz jedno wyraźne zdarzenie, np. impuls alarmowy. |
W praktyce większość modułów daje czas podtrzymania od około 5 s do 300 s, czyli do mniej więcej 5 minut, choć konkretna wersja może się trochę różnić. Po zakończeniu odliczania bywa jeszcze krótka blokada reakcji trwająca około 2,5-3 s. To nie jest błąd kodu, tylko sposób działania samego układu. Dla początkujących najlepszy punkt startowy to średnia czułość, krótki czas podtrzymania i test w trybie H, bo wtedy łatwiej zauważyć, jak sensor reaguje na realny ruch.
Kiedy ustawienia są już sensowne, problemem nie jest zazwyczaj sam czujnik, tylko coś w otoczeniu albo w montażu. I właśnie to najłatwiej pomylić z awarią.
Najczęstsze problemy, które wyglądają jak awaria sensora
Najbardziej mylący scenariusz wygląda tak: układ działa na biurku, a po zamontowaniu zaczyna wariować. W mojej praktyce najczęściej winne są przeciągi, słońce, ruch zasłon albo źle ustawiony kąt sensora. PIR najlepiej widzi ruch przecinający jego pole widzenia, więc powolne zbliżanie się dokładnie na wprost potrafi dać słabszy efekt niż przejście bokiem.
| Objaw | Najbardziej prawdopodobna przyczyna | Co zrobić |
|---|---|---|
| Brak reakcji zaraz po włączeniu | Trwa stabilizacja sensora | Odczekaj 30-60 sekund i powtórz test. |
| Losowe impulsy bez ruchu | Za blisko źródła ciepła, ruch powietrza albo zbyt szybkie testy po starcie | Przenieś sensor, zmniejsz zakłócenia i sprawdź wynik ponownie. |
| LED świeci zbyt długo | Za długi czas podtrzymania | Przekręć potencjometr czasu w stronę krótszego opóźnienia. |
| Sensor wykrywa tylko bardzo bliski ruch | Za mała czułość albo zły kąt ustawienia | Zwiększ czułość i ustaw czujnik tak, by „patrzył” wzdłuż strefy przejścia. |
| Układ działa odwrotnie niż oczekiwano | Inna logika wyjścia albo błędny typ odczytu | Sprawdź, czy pracujesz na zwykłym wyjściu cyfrowym, a nie na module z odwróconą logiką. |
Jeśli coś działa „na krótko”, ale nie działa w realnym miejscu, zwykle nie chodzi o sam Arduino. Bardzo często wystarczy odsunąć czujnik od grzejnika, okna albo nawiewu i zmienić jego wysokość montażu. Właśnie dlatego PIR trzeba traktować bardziej jak prosty detektor zdarzenia niż jak precyzyjny instrument pomiarowy.
To prowadzi do ważniejszego pytania: kiedy taki czujnik rzeczywiście jest najlepszym wyborem, a kiedy lepiej od razu sięgnąć po inne rozwiązanie?
Kiedy PIR ma sens, a kiedy lepiej wybrać inny czujnik
PIR ma jedną ogromną zaletę: jest prosty. Na mikrokontrolerze dostajesz gotowy sygnał cyfrowy, więc do startu nie potrzebujesz ani skomplikowanych bibliotek, ani systemu operacyjnego jak w minikomputerze. Jeśli chcesz szybko uruchomić światło korytarzowe, prosty alarm albo licznik wejść oparty o sam ruch, taki moduł jest po prostu rozsądny.
| Czujnik | Co wykrywa | Mocne strony | Ograniczenia |
|---|---|---|---|
| PIR | Ruch ciepłych obiektów | Tani, prosty, mało obciąża mikrokontroler, dobry do automatyki światła i alarmów | Nie mierzy odległości i gorzej radzi sobie z nieruchomą osobą |
| Ultradźwiękowy | Odległość od przeszkody | Przydatny do pomiaru dystansu i omijania przeszkód | Nie jest idealny do czystej detekcji obecności człowieka |
| Radar mmWave | Ruch i często także subtelną obecność | Lepszy do wykrywania ludzi nawet przy małym ruchu | Zwykle droższy i trudniejszy w uruchomieniu niż PIR |
Jeśli projekt ma reagować na wejście do pomieszczenia, PIR wygrywa prostotą. Jeśli zależy ci na wykrywaniu samej obecności, nawet przy niewielkim ruchu, lepiej spojrzeć w stronę radaru mmWave. Ja zwykle zaczynam jednak od PIR-a, bo pozwala szybko potwierdzić logikę całego układu, zanim dorzuci się bardziej złożony sprzęt.
Co jeszcze warto dopilnować, zanim zamkniesz projekt w obudowie
Najlepszy plan wdrożenia jest prosty: najpierw odczyt na monitorze szeregowym, potem LED, dopiero później przekaźnik, buzzer albo pełna automatyka. Gdy układ zacznie działać stabilnie, dopiero wtedy warto go zamknąć w obudowie i testować w docelowym miejscu. To oszczędza sporo czasu, bo każdy dodatkowy element od razu komplikuje diagnozę.
Jeśli chcesz z tego zrobić coś więcej niż szkolny test, trzymaj się jednej zasady: PIR ma dawać sygnał wejściowy, a nie bezpośrednio sterować ciężkim obciążeniem. Do lampy 230 V użyj przekaźnika lub odpowiedniego modułu wykonawczego, do taśm LED 12 V lepiej sprawdzi się MOSFET, a do prostych eksperymentów wystarczy sama dioda i Serial Monitor. Właśnie tak buduje się stabilne projekty z czujnikiem ruchu: najpierw pewny odczyt, potem dopiero reakcja. Jeśli zostawisz sensor z dala od grzejnika, okna i nawiewu, a po włączeniu dasz mu chwilę na stabilizację, dostajesz tani i zaskakująco solidny fundament pod automatykę światła, alarmu albo układ edukacyjny.