К платформе Arduino можно найти десятки различных датчиков, каждый из которых будет выполнять свои обязанности, срабатывать на определенные условия.  Одним из таких датчиков является датчик движения HC-SR501.  Датчик питается от 5-12 вольт, при этом в случае определения движения выдает логическую единицу на выходе. Ну а как работать с этой логикой и как воспользоваться этим датчиком в купе с Ардуино, об это как раз в это статье.

Датчик движения  HC-SR501

 Раз уж мы выбрали датчик HC-SR501, то скажем пару слов о нем. У датчика 3 вывода, все они обычно промаркированы на плате. 2 это питание и 1 это логический выход, в случае срабатывания датчика на определенные условия. Сами условия могут задаваться одним из резисторов, которые имеются на плате датчика. Один отвечает за чувствительность, второй за время задержки. Датчик можно использовать как обособленное изделие, то есть без микроконтроллера, так и с Ардуино, который будет обрабатывать его сигналы.

Подключение датчика к Arduino


Собственно подключение очень простое. Оно сродни тому, как к Ардуино подключается кнопка. Логическая единица приходит на один из входов Ардуино и на основании этого сигнала Ардуино начинает свой отчет времени работы какого-либо устройства. Ну и к этому же выводу подключен резистор 10 Ком дабы не было срабатывания от «дребезга контактов» или случайных наводок. На выходе Ардуино стоит транзистор. Транзистор является своего рода усилителем на одном каскаде или ключом, это кому как угодно.

Программная платформа для подключения датчика движения к Arduino

Собственно программа такая же простая как и подключение. Ее может даже отчасти стыдно публиковать здесь, так как публиковать то особое нечего, но что есть, то есть… Смотрим.

  
#define LED  13 // назначаем порт для светодиода
#define PIR  3 // назначаем порт для PIR sensor

void setup()
{
pinMode(LED, OUTPUT);
pinMode(PIR, INPUT);
}

void loop()
{
  // если есть движение включаем светодиод
if (digitalRead(PIR)== HIGH) { digitalWrite(LED, HIGH); delay (330000);}

if (digitalRead(PIR)== LOW) { digitalWrite(LED, LOW); delay (1000); }

 
}

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

Датчик движения  HC-SR501 без Ардуино

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

Прописать более сложные алгоритмы работы будет невозможно. Также невозможно без вмешательства в схемотехнику будет увеличить время задержки более того, что можно выставить максимально через резистор. А так как Ардуино стоит копейки, то я не считаю это большой проблемой использовать микроконтроллер. Можно сделать и мигалку и сложные алгоритмы срабатывания по времени и даже задать такие алгоритмы срабатывания для каждого из выводов Ардуино.

Видео о подключении датчика движения  HC-SR501 к Ардуино