Главная » Статьи » Мои проекты и мысли

Простая реализация сигнализации с помощью Arduino и лазера
 
Идея создания сигнализации возникла еще давно, когда мне было лет 13-14. Мы тогда, с моим младшим братом, любили допоздна играть в компьютер. И конечно же, родители нас постоянно за это ругали. И вот чтобы такого не происходило, мы решили сделать какую-нибудь "штучку". Идея была проста: когда кто-нибудь приближался к нашей комнате, эта самая "штучка" нам "сообщала" об этом, и мы спокойно притворялись спящими. Все это было реализовано очень просто: обычная схема подключения лампочки через ключ. Сам ключ был сделан из небольшой картонки, сложенной пополам. На краях картонки были приклеены 2 куска фольги. И уже к фольгам были прикреплены провода. Вся эта конструкция подкладывалась под ковер, и когда кто-то наступал, картонка складывалась, и провода (ключ) замыкался. И в это время в нашей комнате загоралась лампочка. После этого, насмотревшись фильмов про агентов и прочее, были попытки использовать лазер и солнечную батарею. Но это все не увенчалось успехом..    

Прошло немало времени. Многое изменилось, а вот детское желание, сделать что-то подобное, осталось. Решение использовать в этом деле лазер, после стольких лет, не отпало. Но уже вместо приемника было решено использовать фоторезистор (резистор, сопротивление которого зависит от яркости света, падающего на него). Вся идея была реализована на Arduino. И состояла в следующем: с одной стороны дверного проема располагается лазер, напротив него находится фотоэлемент, который подключен к Arduino. Лазер светит, а значит на фоторезистор попадает свет. Если кто-нибудь пересекает луч, то сопротивление увеличивается. И контроллер это замечает и происходит какое-либо действие. Например загорается светодиод, включается звуковая сигнализация и т.д. 

Процесс реализации:

Для начала был куплен обычный детский лазер и фоторезистор. 

На лазере установлена кнопочка, нажав на которую он начинает светить. Думаю никому не захочется постоянно стоять и держать эту самую кнопку. Поэтому надо сделать что-нибудь удобное, чтобы один раз включил и забыл об этом. Разбираем лазер. откручиваем насадку, крышку. Вытаскиваем батарейки, и выталкиваем из корпуса лазера само устройство. Будьте внимательно, не повредите сам лазер!

И так, когда лазер у нас разобран, отпаиваем кнопку (при желании можно ее оставить), продеваем в отверстие на корпусе провода. И припаиваем их к контактам от кнопки. Не перегревайте схему!

Собираем все в обратном порядке. При желании, на конце провода можно поставить тумблер (ключ), я же для проверки использовал обычную перемычку. Вот что получилось:

С лазером мы закончили. Теперь переходим к приемнику. В роли приемника у нас фоторезистор. Луч с лазера будет попадать на него.. Это хорошо если ночь, а если день? То посторонний свет будет мешать работе всей нашей системы. Для этого надо наш датчик поместить в какое нибудь темное пространство. Я использовал крышку от киндера-сюрприза, намотав на нее изоленту.

Далее переходим к подключению всех элементов к Arduino. Подключаем наш фоторезистор к контроллеру по схеме ниже. Эта схема делителя напряжения. Резистор брался на 10кОм.

Подключаем Arduino к компьютеру и заливаем скетч. 

#define foto 0 //Фотоэлемент подключен к пину 0 (аналоговый вход)
void setup()
{
 Serial.begin(9600);
}
void loop()
{ 
 Serial.println(analogRead(foto)); //Выводим на монитор последовательного порта значения с фоторезистора
 delay(20);
}

Закрепляем датчик и лазер друг напротив друга, так, чтобы луч с лазера светил прямо на фоторезистор. 

Далее в Arduino IDE открываем "монитор последовательного порта" (кнопка в виде лупы на верхней панели справа). И смотрим какие значения у нас выводятся. У меня эти значения колебались от 940 до 970 где-то. Самое минимальное было 940. Поэтому в следующем скетче я использовал пороговое значение 930. Теперь надо как-то сигнализировать о том, что кто-то прошел через наш луч, для этого будем использовать светодиод (СД), подключенный к 5 пину. В Arduinо заливаем новый скетч:

#define foto 0 //Фотоэлемент подключен к пину 0 (аналоговый вход)
#define led 5 //светодиод подключен к 5 пину
void setup()
{
 Serial.begin(9600);
 pinMode(led, OUTPUT);
 
}
void loop()
{ 
if (analogRead(foto) < 930) //Если текущее значение меньше порогового
{
 for (int i=0 ; i < 10 ; i++)
 {
digitalWrite(led , HIGH);
delay(500);
digitalWrite(led , LOW);
delay(500);
 }
 }
 else digitalWrite(led , LOW);
}

Получается следующее. Наше значения колеблются от 940 и более. Если вдруг кто-то прерывает наш луч, то значение моментально падает, и контроллер воспринимает это. И так, кто-то прошел, сразу начинает мигать СД. Чтобы мы случайно этот момент не пропустили, светодиод будет моргать 10 раз, не зависимо от того, проходит ли кто-то в данный момент, или же нет. Если никто луч не прерывал - СД будет выключен.  

Видео работы (не обращайте внимание на транзистор, остался с предыдущего эксперимента):

Мысли и идеи по данной теме:

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

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

Еще одна идея заключается в уменьшении количества проводов. Берем план помещения и помещаем датчики в каждом проеме, а само Arduino располагаем в левом нижнем углу. Представляете сколько проводов понадобится, чтобы контролировать все датчики и управлять всеми лазерами? Правильно! Поэтому лучше будет использовать беспроводное подключение датчиков с главным Arduino. Осуществить это можно так: разбиваем датчики на группы. Группа - несколько датчиков, расположенных на небольшом расстоянии друг от друга. И подключенных к промежуточному Arduino, который в свою очередь подключается через Bluetoth с главным, передавая ему все данные. И в итоге мы получаем целую сеть датчиков, через которые очень трудно будет пройти незамеченным. 

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

 

Если Вам понравилась наша статья, поделитесь ею с друзьями.

 

 

Категория: Мои проекты и мысли | Добавил: GM (06.10.2015)
Просмотров: 5752 | Комментарии: 2 | Теги: статьи, сигнализация, Arduino | Рейтинг: 5.0/3
Всего комментариев: 2
avatar
Подскажите как в прошивке указать время задержки светодиода побольше???
avatar
0
2 GM • 19:57, 29.04.2018 [Материал]
Здравствуйте, Дмитрий! Для изменения задержки мигания светодиода необходимо изменить значение функции Delay вот в этих строкахdigitalWrite(led , HIGH);
delay(500);
digitalWrite(led , LOW);
delay(500);
avatar