HC-SR501 — это инфракрасный датчик движения (PIR-сенсор), который реагирует на изменения теплового излучения в зоне чувствительности.
Он часто используется в системах охраны, автоматическом управлении светом, бытовой электронике.
Особенности:
Для начального теста Arduino не нужен.
При обнаружении движения светодиод загорается.
На плате HC-SR501 есть два потенциометра:
Также есть джампер или перемычка режима выходного сигнала:
Теперь подключим к Arduino для ведения лога.
// === HC-SR501 Motion Sensor Logging ===
// Подключение: OUT -> D2
const int PIR_PIN = 2; // пин датчика
volatile unsigned long detectCount = 0;
bool motionState = false;
void setup() {
Serial.begin(9600);
pinMode(PIR_PIN, INPUT);
Serial.println(F("=== HC-SR501 Motion Log Started ==="));
}
void loop() {
int val = digitalRead(PIR_PIN);
if (val == HIGH && !motionState) {
motionState = true;
detectCount++;
Serial.print(F("Motion detect register: "));
printTime();
Serial.print(F("Total detect: "));
Serial.println(detectCount);
}
if (val == LOW && motionState) {
motionState = false;
Serial.print(F("Motion stop: "));
printTime();
}
}
void printTime() {
// Имитация текущего времени (берём из millis /1000)
unsigned long seconds = millis() / 1000;
unsigned long h = (seconds / 3600) % 24;
unsigned long m = (seconds / 60) % 60;
unsigned long s = seconds % 60;
if (h < 10) Serial.print("0");
Serial.print(h); Serial.print(":");
if (m < 10) Serial.print("0");
Serial.print(m); Serial.print(":");
if (s < 10) Serial.print("0");
Serial.println(s);
}
Загрузите скетч на плату, и откройте Serial Monitor скорость порта должна быть выбрана 9600 бод в соответствии с нашей программой. В выводе порта вы должны видеть регистрации движения при их наличии.
📋 Пример вывода в Serial Monitor:
=== HC-SR501 Motion Log Started ===
Motion detect register: 00:00:07
Total detect: 1
Motion stop: 00:00:08
Motion detect register: 00:00:38
Total detect: 2
Motion stop: 00:00:40
Motion detect register: 00:00:44
Total detect: 3
Motion stop: 00:00:47
Для работы данного урока дополнительные библиотеки не требуются — весь функционал доступен в стандартной Arduino IDE.