392

Охранная сигнализация или система оповещения на Arduino

Привет ардуинщикам!

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


Для тех, кто хочет хлеба и зрелищ - видеоролик, который полностью копирует содержимое статьи:

Ну а для тех, кто больше любит читать, продолжим.. :)

Итак, перед тем как начать созидать нечто подобное, вам необходимо учесть дальность расположения от места управления, внутренний климат и другие характеристики охраняемого вами помещения.


В моей системе необходимо было обеспечить возможность управления сигнализацией удалённо, то есть из дома, поэтому у меня было два пути решения этой проблемы:

1. Организовать беспроводное соединение между двумя Arduino.

2. Либо же обойтись одной Arduino и в гараж вывести лишь длинный провод с датчиками.

(Еще, конечно же, был вариант с GSM-сигнализацией, но из-за близости помещения и отсутствия необходимого модуля эту идею я отмел, как-нибудь в другой раз..)


Я решил идти по второму пути - с проводом и одной Arduino, и вот почему: во-первых расстояние до моего гаража составляет примерно 50 метров, что не так много для ощутимого затухания сигнала в линии и вполне реализуемо по затратам кабеля, а во вторых, из-за неотапливаемости помещения зимой, температура в нем может опускаться до -30-35 градусов, что пагубно скажется на Arduino без дополнительного обогрева. Да и перебои с электричеством у нас частые, поэтому пришлось бы лепить дополнительный аккумулятор, что бы поддерживать обогрев и работоспособность.


В итоге я решил просто проложить витую пару и на ее конце навешать датчики. Ну а аккумулятор для резервного питания добавлю как-нибудь попозже.


В качестве датчика открытия двери я использовал датчик Холла и большой магнит, о принципе работы такой связки я рассказывал в этом видео, когда делал бесконтактный датчик тока. Если в двух словах, то датчик реагирует на подносимый к нему магнит, который расположен на подвижной двери ворот, сам же датчик закреплен на раме. Датчик меняет свои значения в зависимости от интенсивности магнитного поля, то есть расстояния до магнита. Таким образом, можно контролировать положение двери в любой момент времени.


Теперь немного подробнее о получившейся системе, если ее так можно назвать :)


Всю её можно разбить на три части: это та, что стоит дома (пульт управления), та, что стоит в охраняемом помещении (датчик Холла и пр), и та, что связывает эти части (витая пара).


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

Охранная сигнализация или система оповещения на Arduino Arduino, Сигнализация, Охрана, Оповещение, Видео, Длиннопост

Из корпуса выходит витая пара на 8 жил, на обратном конце которой расположены датчик температуры и влажности, датчик Холла и пьезо-пищалка с кнопкой:

Охранная сигнализация или система оповещения на Arduino Arduino, Сигнализация, Охрана, Оповещение, Видео, Длиннопост

Схема подключения всей системы получилась довольно простой и выглядит как-то так:

Охранная сигнализация или система оповещения на Arduino Arduino, Сигнализация, Охрана, Оповещение, Видео, Длиннопост

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

Алгоритм работы сигнализации достаточно прост и представить его можно вот такой упрощенной блок-схемой:

Охранная сигнализация или система оповещения на Arduino Arduino, Сигнализация, Охрана, Оповещение, Видео, Длиннопост

Что касается кода, то объяснять его, я думаю, нет особого смысла, так как там все разбито по функциям и хорошо закомментировано. Скажу лишь только что код, конечно же, можно оптимизировать и внести в него изменения на своё усмотрение, он далек от идеала, но протестирован на живом примере и стабильно работает. Так же, если вам лень разбираться в коде и хочется просто собрать все по схеме, я специально оставил в самом верху листинга две переменные: первая отвечает за временную задержку на включение сигнализации после нажатия кнопки (я поставил 3 минуты), а вторая отвечает за включение оповещения об открытии двери, то есть то время, когда вы открыли дверь и еще не выключили сигнализацию - по умолчанию на это дается 30 секунд:

#define DELAY_CLOSE 180000
#define DELAY_OPEN 30000

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


Программный код и схемы вы найдете здесь: Яндекс.Диск


Собственно, на этом все, посмотреть, как это дело работает, вы можете на видео. Надеюсь, кому-нибудь эта информация будет полезной, всем добра и удачных компиляций!

Arduino & Pi

1.5K поста20.8K подписчика

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте - используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

• Нарушать установленные правила Пикабу

4
Автор поста оценил этот комментарий

Прикольно. Я недавно на кота сигналку делал. Он сволочь спит ночью на кресле моем компьютерном. Так-то не жалко, но его бывает тошнит. Кресло тканевое. Уделал мне короче стульчик мой. Я под стол повесил датчик движения, ардуинку, реле и старый насос от надувного матраца. Очень эффективное средство) Включаю на ночь и когда из дома ухожу.

раскрыть ветку (1)
5
Автор поста оценил этот комментарий

Отличная система!) А почему просто кресло не переворачивали?

показать ответы
0
Автор поста оценил этот комментарий

Защита такой систему не очень - будет достаточно "засветить" датчик холла мощным магнитом- и дверь можно будет смело открыть.

Думаю, правильнее будет применить дверной геркон в стальном корпусе с последовательным резистором, и подключить полученный контакт к аналоговому входу, подтянутому к 5V таким же резистором.
Таким образом у тебя получится аналоговое значение примерно 512. Если разорвать цепь- значение станет 1024, если замкнуть - 0, соответственно линия защищена. И геркон обмануть сложнее чем датчик Холла.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
С герконом, конечно же, было бы лучше, но вы сами, наверное, видели на видео, как сильно гуляет створка ворот при ее закрытии. Зимой может забиться снег, летом в жару все расширяется, и таким образом добиться постоянного плотного прилегания двери к геркону не получится, он больше подходит для обычных дверей, которые хорошо и плотно закрываются. Поэтому я и решил использовать датчик Холла. Его показания, кстати, тоже меняются, если быть точным, в районе от 485 при открытой двери, до 570 при закрытой, поэтому засветить и идеально подобрать мощным магнитом такое значение врядли получится, ну а обрыв или КЗ дают те же 1024 или 0 соответственно - это все отслеживается парой строк кода. Так что думаю система, все таки, имеет достаточную защиту в плане ее обмана или порчи.
0
Автор поста оценил этот комментарий
А какой датчик использовать для окон (я имею введу на их расбивание)
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

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

показать ответы
1
Автор поста оценил этот комментарий
А что кнопки без подтягивающих?)
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

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

показать ответы
0
Автор поста оценил этот комментарий

@vivaos, отзовитесь!!!

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Я здесь, под любым видео есть ссылка на сообщество вк, пишите туда.
0
Автор поста оценил этот комментарий

Залил код с небольшими поправками на GitHub: https://github.com/viktor-osin/alarm

0
Автор поста оценил этот комментарий

человек имел ввиду, если быстро отключить датчик холла и поставить его эмуляцию "всё в порядке"

или выкоротить датчик

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Теперь понятно) Нет, систему так обмануть не получится, если попытаться убрать и поставить - при изъятии тут же уровень в линии поднимется выше нормального и система сработает. Если поставить сперва резистор, а затем убрать датчик, опять же, уровень опустится ниже нормального и алгоритм решит что дверь открыта (показания с датчика всегда фиксированы, в моем случае в интервале от 485 до 570). Да и вообще, как не знающий человек может угадать из пучка проводов где там +5в, а где провод аналогового порта?)
1
Автор поста оценил этот комментарий

1. Делать сигнализацию без watchdog'а это игра в рулетку, а если контроллер зависнет ?

2. Поскольку шлейф длинный, то на него прекрасно будут наводиться всякие атмосферные явления типа молний, а на входах контроллера у Вас нет защиты, а значит при первой хорошей грозе всё перестанет работать. Да и п.1 может от наводки случиться.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

По первому пункту - добавлю в v.2 системы, спасибо) А по второму - писал одному человеку выше:

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

А если не обрывать, а резистор вставить? Не нуля, не 1024 не получится.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Немного не понял о каком резисторе идет речь при порче кабеля..

показать ответы
2
DELETED
Автор поста оценил этот комментарий

Как организована защита от саботажа: обрыва вашей витой пары или ее КЗ?

В вашей блок схеме не нашел

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Да, этого я не учел, т.к. кабель идет с внутренней стороны двора и туда никто не попадет, но это можно исправить парой строк кода. Нормальные показания с датчика Холла находятся в районе 400-600 единиц, а при обрыве кабеля будут равны 1024, либо, при КЗ на землю, нулю. Поэтому сейчас добавлю функцию отслеживающую аналоговый порт, спасибо:)

показать ответы