🚨

ESP32 z czujnikiem ruchu PIR – alarm Wi-Fi z powiadomieniem

📅 14 maja 2026 ⏱ 10 min czytania 🏷️ Arduino/ESP 👁 31 odsłon
← Arduino/ESP

ESP32 w połączeniu z czujnikiem ruchu PIR (Passive Infrared) może posłużyć jako baza prostego systemu alarmowego z powiadomieniem przez Wi-Fi. Czujnik PIR wykrywa zmiany promieniowania podczerwonego emitowanego przez ciepłe obiekty – m.in. poruszające się osoby. Takie rozwiązanie jest popularnym projektem edukacyjnym wśród hobbystów elektroniki.

Opisane rozwiązanie ma charakter wyłącznie edukacyjny i hobbystyczny. Nie zastąpi profesjonalnego, certyfikowanego systemu alarmowego. Wszelkie prace elektryczne i elektroniczne wykonujesz na własne ryzyko i odpowiedzialność. W razie wątpliwości skonsultuj się z wykwalifikowanym elektrykiem lub elektronikiem.

Potrzebne elementy

ElementIlośćCena orientacyjna
Moduł ESP32 (np. ESP32 DevKit V1)1~25 zł
Czujnik ruchu PIR HC-SR5011~7 zł
Buzzer aktywny 5V1~3 zł
Dioda LED czerwona + rezystor 220 Ω1 kpl.~1 zł
Płytka stykowa (breadboard)1~8 zł
Kable dupont (zestaw)1~5 zł
Kabel USB-A do micro-USB1~5 zł

Schemat połączeń

ElementPin modułuPin ESP32
PIR HC-SR501VCCVIN (5V)
PIR HC-SR501GNDGND
PIR HC-SR501OUTGPIO 13
Buzzer aktywny+ (plus)GPIO 12
Buzzer aktywny– (minus)GND
LED czerwona (+ rezystor 220 Ω)Anoda (+)GPIO 14
LED czerwonaKatoda (–)GND
💡 Czujnik PIR HC-SR501 wymaga zasilania 5V (podłącz do pinu VIN na ESP32), jednak jego wyjście sygnałowe (OUT) generuje napięcie 3,3V, co jest bezpieczne dla pinów ESP32. Nie podłączaj wyjścia OUT PIR bezpośrednio do pinu 5V!

Instalacja Arduino IDE i obsługi ESP32

  1. Pobierz i zainstaluj Arduino IDE ze strony producenta (arduino.cc).
  2. Otwórz ustawienia (File → Preferences) i dodaj URL menedżera płytek:
    https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  3. W Tools → Board → Boards Manager wyszukaj „esp32" i zainstaluj pakiet firmy Espressif.
  4. Wybierz płytkę: Tools → Board → ESP32 Arduino → ESP32 Dev Module.
  5. Wybierz właściwy port COM (Windows) lub /dev/ttyUSB0 (Linux/Mac).

Kod programu

Poniższy szkic wysyła powiadomienie HTTP do serwisu ntfy.sh po wykryciu ruchu. Wbudowany buzzer i LED sygnalizują alarm lokalnie:

#include <WiFi.h>
#include <HTTPClient.h>

const char* ssid       = "TWOJA_SIEC_WIFI";
const char* password   = "TWOJE_HASLO_WIFI";
const char* webhookUrl = "https://ntfy.sh/MojAlarm2025";

const int PIN_PIR    = 13;
const int PIN_BUZZER = 12;
const int PIN_LED    = 14;

bool alarmAktywny         = false;
unsigned long ostatniRuch = 0;
const unsigned long CZAS_ALARMU = 10000UL; // ms

void setup() {
  Serial.begin(115200);
  pinMode(PIN_PIR,    INPUT);
  pinMode(PIN_BUZZER, OUTPUT);
  pinMode(PIN_LED,    OUTPUT);

  WiFi.begin(ssid, password);
  Serial.print("Łączenie z Wi-Fi");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nPołączono. IP: " + WiFi.localIP().toString());
}

void loop() {
  if (digitalRead(PIN_PIR) == HIGH) {
    ostatniRuch = millis();
    if (!alarmAktywny) {
      alarmAktywny = true;
      digitalWrite(PIN_LED,    HIGH);
      digitalWrite(PIN_BUZZER, HIGH);
      wyslijPowiadomienie();
    }
  }
  if (alarmAktywny && millis() - ostatniRuch > CZAS_ALARMU) {
    alarmAktywny = false;
    digitalWrite(PIN_LED,    LOW);
    digitalWrite(PIN_BUZZER, LOW);
  }
  delay(100);
}

void wyslijPowiadomienie() {
  if (WiFi.status() != WL_CONNECTED) return;
  HTTPClient http;
  http.begin(webhookUrl);
  http.addHeader("Title",    "Alarm – wykryto ruch!");
  http.addHeader("Priority", "high");
  http.POST("Ruch wykryty w chronionym obszarze.");
  http.end();
  Serial.println("Powiadomienie wysłane.");
}
⚠️ Nie wpisuj prawdziwego hasła do sieci Wi-Fi w kodzie, który udostępniasz publicznie. Jeśli projekt ma trafić na GitHub, usuń dane logowania lub użyj pliku konfiguracyjnego poza repozytorium.

Konfiguracja powiadomień push – ntfy.sh

Ntfy.sh to bezpłatny serwis (z limitami dla kont darmowych) umożliwiający wysyłanie powiadomień push bez własnego serwera. Sposób uruchomienia:

  1. Zainstaluj aplikację ntfy na telefonie (dostępna na Android i iOS).
  2. Zasubskrybuj kanał o unikalnej nazwie – np. MojAlarm2025xYZ (im bardziej unikalna, tym mniej prawdopodobne, że ktoś inny ją zna).
  3. Wpisz dokładnie tę samą nazwę kanału w zmiennej webhookUrl w kodzie, po https://ntfy.sh/.
  4. Po wgraniu szkicu ESP32 wyślij powiadomienie testowe, dotykając czujnika PIR.
✅ Alternatywnie możesz użyć platformy IFTTT lub własnego skryptu PHP wysyłającego e-mail. Ntfy.sh jest prawdopodobnie najprostszą opcją dla pierwszego projektu.

Regulacja czułości czujnika PIR HC-SR501

Na module HC-SR501 znajdują się dwa potencjometry i jedna zworka:

Częste problemy i rozwiązania

Możliwe rozszerzenia projektu

Podsumowanie

ESP32 z czujnikiem PIR HC-SR501 to jeden z popularniejszych projektów wśród hobbystów elektroniki – koszt kompletnego zestawu to zazwyczaj poniżej 60 złotych. Projekt może być dobrym punktem startowym do nauki programowania mikrokontrolerów i technologii IoT. Pamiętaj, że opisane rozwiązanie to projekt edukacyjny, a nie certyfikowany system bezpieczeństwa.