Создание охранной сигнализации с датчиком движения на базе Arduino и инфракрасных датчиков
Инфракрасные (ИК, IR) датчики обычно используются для измерения расстояний, но их также можно использовать и для обнаружения объектов. Подключив несколько ИК-датчиков к Arduino, мы можете создать охранную сигнализацию.
Обзор
Инфракрасные (ИК, IR) датчики обычно используются для измерения расстояний, но их также можно использовать и для обнаружения объектов. ИК-датчики состоят из инфракрасного передатчика и инфракрасного приемника. Передатчик выдает импульсы инфракрасного излучения в то время, как приемник детектирует любые отражения. Если приемник обнаруживает отражение, это означает, что перед датчиком на некотором расстоянии есть какой-то объект. Если отражения нет, нет и объекта.
IR-датчик, который мы будем использовать в данном проекте, обнаруживает отражение в определенном диапазоне. Эти датчики имеют небольшое линейное устройство с зарядовой связью (CCD), которое детектирует угол, с которым ИК-излучение возвращается к датчику. Как показано на рисунке ниже, датчик передает инфракрасный импульс в пространство, а когда перед датчиком появляется объект, импульс отражается обратно к датчику под углом, пропорциональным расстоянию между объектом и датчиком. Приемник датчика детектирует и выводит угол, и, используя это значение, вы можете рассчитать расстояние.
Подключив пару ИК-датчиков к Arduino, мы можем сделать простую охранную сигнализацию. Мы установим датчики на дверной косяк, и, правильно выровняв датчики, мы сможем обнаружить, когда кто-то проходит через дверь. Когда это произойдет, сигнал на выходе ИК-датчика изменится, а мы обнаружим это изменение, постоянно считывая выходной сигнал датчиков с помощью Arduino. В данном примере мы знаем, что объект проходит через дверь, когда показание на выходе ИК-датчика превышает 400. Когда это произойдет, Arduino включит сигнал тревоги. Чтобы сбросить срабатывание сигнализации, пользователь может нажать на кнопку.
Комплектующие
- 2 x ИК-датчик расстояния;
- 1 x Arduino Mega 2560;
- 1 x зуммер;
- 1 x кнопка;
- 1 x резистор 470 Ом;
- 1 x NPN транзистор;
- перемычки.
Схема соединений
Схема для данного проекта показана на рисунке ниже. Выходы двух ИК-датчиков подключены к выводам A0
и A1
. Два других вывода подключены к выводам 5V и GND. 12-вольтовый зуммер подключен к выводу 3 через транзистор, а кнопка, используемая для отключения сигнализации, подключена к выводу 4.
На приведенной ниже фотографии показано, как мы наклеили датчики на дверной косяк для этого эксперимента. Разумеется, в случае постоянного использования вы установили бы датчики по-другому.
Установка
- Подключите выводы 5V и GND платы Arduino к выводам питания и GND датчиков. Вы также можете подавать на них внешнее питание.
- Подключите выходные выводы датчиков к выводам
A0
иA1
платы Arduino. - Подключите вывод 3 Arduino к базе транзистора через резистор 1 кОм.
- Подайте напряжение 12 В на коллектор транзистора.
- Подключите положительный вывод 12-вольтового зуммера к эмиттеру, а отрицательный – к шине земли.
- Подключите вывод 4 к выводу 5V через кнопку. В целях безопасности, во избежание протекания большого тока это всегда лучше делать через дополнительный небольшой резистор.
- Подключите плату Arduino к компьютеру через USB кабель и загрузите программу в микроконтроллер, используя Arduino IDE.
- Подайте на плату Arduino питание, используя блок питания, аккумулятор или USB кабель/
Код
const int buzzer=3; // вывод 3 – это выход на зуммер
const int pushbutton=4; // вывод 4 – это вход для кнопки
void setup()
{
pinMode(buzzer,OUTPUT); // настроить вывод 3 на выход
pinMode(pushbutton,INPUT); // настроить вывод 4 на вход
}
void loop()
{
// прочитать выходной сигнал обоих датчиков и сравнить результат с пороговым значением
int sensor1_value = analogRead(A0);
int sensor2_value = analogRead(A1);
if (sensor1_value > 400 || sensor2_value > 400)
{
while(true)
{
digitalWrite(buzzer,HIGH); // включить сигнал тревоги
if(digitalRead(pushbutton) == HIGH)
break;
}
}
else
{
digitalWrite(buzzer,LOW); // выключить сигнал тревоги
}
}