Arduino. Обнаружение движения с использованием Arduino UNO и PIR-датчика HC-SR50

Большинство людей и даже организаций уделяют большое внимание физической безопасности своих помещений или имущества. В современном мире существует множество способов как защитить свое имущество от незваных гостей. Сюда входят сложные замки, сейфы, камеры видеонаблюдения и датчики.

В этой статье я хотел бы рассказать о самом простом и экономичном способ обнаружения физического вторжения, который может любой начинающий радиолюбитель. Он включает в себя микроконтроллер Arduino UNO, датчик обычный PIR со всем уже известного интернет-магазина Алиэкспресс.

Датчик движения hc-sr501

Вы спросите, почему датчик движения, а не система видеонаблюдения? Пироэлектрические инфракрасные датчики были идеальным выбором для обнаружения движения в домашних, офисных и производственных системах наблюдения. Это потому, что они маленькие, недорогие и эффективные даже в темноте. Они также являются ненавязчивой формой безопасности, поскольку сами датчики ничего не излучают, даже инфракрасного света и также они легко обнаруживают движение животных или людей.

Чтобы иметь возможность регулировать чувствительность датчика на программном уровне, мы будем использовать аналоговые выходы вместо цифровых выходов датчика движения, которые обычно используются для активации тревоги, светодиода и т. д. Почему так? Датчики имеют достаточно много ложных срабатываний и нам придется в будущем с этим бороться, измеряя длительность и уровень сигнала.

Схема подключения датчика движения к Arduino UNO

Схема

Соберите схему в соответствии с схемой выше, добавьте светодиод, чтобы сначала визуализировать обнаружение и проверить, работает ли ваша схема. Для отладки отлично подойдет Arduino Uno, три соединительных кабеля, пассивный инфракрасный датчик (PIR) HC-SR501 и один светодиод (LED).

Подключаем свой светодиод к контакту 13 на Arduino (обратите внимание, что более длинный контакт светодиода - +, следовательно, на контакте 13, более короткий контакт на GND, поскольку он отрицательный), перемычку выхода датчика PIR подключаем к аналоговому контакту A3 платы Arduino Uno.

Скетч для датчика движения

Для загрузки скетча в плату микроконтроллера используем как всегда IDE Arduino.

int led = 13;
int sensor = A3;
int alarmLevel = 225; // Уровень при котором будет срабатывать тревога. Подбирается индивидуально в зависимости от местоположения и характеристик датчика

void setup() {
  pinMode(led, OUTPUT);
  pinMode(sensor, INPUT);
  Serial.begin(9600);
}

void loop() {
  int sensorval = analogRead(sensor);
  Serial.println(sensorval); // Передаем уровень сигнала для точной настройки датчика 
  
  if (sensorval > alarmLevel) {
    digitalWrite(led, HIGH); // тревога
  } else {
    digitalWrite(led, LOW);
  }
}

Как видите скетч довольно простой и все что вам надо это просто подобрать значение alarmLevel, что бы не было ложных срабатываний. Это начальный скетч для того что бы вы быстро начали работать с датчиками движения. В дальнейшем можно усовершенствовать алгоритм срабатывания тревоги, учитывая уровень сигнала и его длительность.