Дом, дизайн, ремонт, декор. Двор и сад. Своими руками

Дом, дизайн, ремонт, декор. Двор и сад. Своими руками

» » Как сделать сигнализацию из ардуино. Домашняя сигнализация или использование датчика движения и LCD монитора с Arduino

Как сделать сигнализацию из ардуино. Домашняя сигнализация или использование датчика движения и LCD монитора с Arduino

Основные модули – GSM модуль SIM800L, Аrduino Nano (можно любой-Uno и т.п.), понижающая плата, аккумулятор от сотового телефона.

Рис. 1. Схема расположения модулей охранной сигнализации на Arduino

Изготовление сигнализации

Монтируем на макетную плату через колодки, что позволит при необходимости заменить модули. Включение сигнализации путем подачи питания 4,2 вольта через выключатель на SIM800L и Аrduino Nano.



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



Если вам не нужно 5 шлейфов соедините контакт 5V Arduino c не нужными входами. GSM сигнализация на 5 шлейфов с аккумулятором, что позволит устройству продолжать работу в течении нескольких дней автономно, при отключении электроэнергии. Можно подключить к ним любые охранные контактные датчики, контакты реле и т.п.В результате получим простой, недорогой компактный охранный прибор для с передачей СМС и дозвоном на 2 номера. Применить его можно для охраны дачи, квартиры, гаража и т.д.

Подробнее в видео

Добрый день! Опять мультиобзор китайских электронных компонентов, как обычно обо всём понемногу, постараюсь покороче, но получится ли? Итак, встречайте, GSM сигнализация стоимостью до 700 ₽. Интересно? Прошу под «cut»!

Приступим! Перед началом рекомендую заглянуть в этот , меньше компонентов и большая автономность. Итак, «техзадание», основные требования к сигнализации:

1) Оповещать при срабатывании датчиков.
2) В случае отключения питания должна быть предусмотрена некоторая автономность.
3) Управление сигнализацией через sms и звонки.

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

Перечень того что понадобится:

Список изменений

GSM_03_12_2016-14-38.hex - исправлена работа устройства с модемом M590.
GSM_05_12_2016-13-45.hex - добавлена консольная команда memtest, оптимизация использования оперативной памяти.
GSM_2016_12_06-15-43.hex - добавлен вывод результатов команд в консоль, оптимизация памяти. Занято: 49% SRAM.
GSM_2016_12_07-10-59.hex - теперь телефонные номера добавляются и удаляются правильно. Занято: 49% SRAM, 74% Flash Memory.
GSM_2016_12_07-15-38.hex - добавлена возможность подключения датчика движения , подключается к пину A0 (в данном случае пин A0 используется как цифровой). Добавлены смс - команды PIROn , PIROff . Занято: 48% SRAM, 76% Flash Memory.
GSM_2016_12_08-13-53.hex - Теперь после успешного выполнения команды, которая в ответ не отправляет смс сообщение, устройство однократно мигает синим светодиодом. Теперь после некорректного выполнения команды, которая в ответ не отправляет смс сообщение, устройство дважды мигает синим светодиодом. Теперь после инициализации параметров устройства, если включен «тихий» режим (SendSms = 0), устройство в течение 2 секунд часто мигает синим светодиодом. Исправлена ошибка из-за которой номер не всегда удалялся из памяти командой DeletePhone. Занято: 48% SRAM, 78% Flash Memory.
GSM_2016_12_11-09-12.hex - Добавлены консольные команды AddPhone и DeletePhone, синтаксис аналогичен смс-командам. Оптимизация памяти. Занято: 43% SRAM, 79% Flash Memory.
GSM_2017_01_03-22-51.hex - Реализована поддержка и ему подобных расширителей портов ввода/вывода на чипе PCF8574, для подключения дополнительных 8 датчиков, в том числе герконов. Автоматический поиск адреса и автоматическая настройка модуля. Стандартные названия датчиков и логический уровень их срабатывания изменяется с помощью команды EditSensor. Изменены содержания тревожных смс для основного датчика (пин D0) «Alarm! Main sensor!» и датчика движения (пин A0) «Alarm! PIR sensor!». Добавлены команды EditSensor и I2CScan. Занято: 66% SRAM, 92% Flash Memory.
GSM_2017_01_15-23-26.hex - Поддержка модема A6_Mini. Контроль наличия внешнего питания (пин D7). Добавлены смс команды WatchPowerOn, WatchPowerOff. Добавлены консольные команды ListConfig, ListSensor. Теперь смс команда EditSensor работает правильно. Незначительно «урезан» вывод отладочной информации в монитор порта. Занято: 66% SRAM, 95% Flash Memory.
GSM_2017_01_16-23-54.hex - Теперь в ответном сообщении на смс команду «Info» так же сообщается состояние датчика движения. Исправлена ошибка из-за которой иногда отправлялись пустые ответные смс сообщения. Теперь устройство оповещает не только об отключении, но и о возобновлении внешнего питания. Все модемы стали «меньше болтать», теперь в мониторе порта стало немного чище. Занято: 66% SRAM, 95% Flash Memory.
GSM_2017_02_04-20-23.hex - Исправлена ошибка «Watch the power on». Теперь после снятия с охраны, выключается «тревожный пин». Теперь после удаления номера в консоль выводится правильная информация. Возможно исправлена ошибка из-за которой иногда отправлялись пустые ответные смс сообщения. Занято: 66% SRAM, 90% Flash Memory.
GSM_2017_02_14-00-03.hex - Теперь по умолчанию отправляются смс сообщения, параметр SendSms снова равен 1. Теперь при замыкании контактов основного герконового датчика (закрытии двери) устройство мигает синим светодиодом в течение 2 секунд, сигнализируя о нормальной работе датчика. Занято: 66% SRAM, 90% Flash Memory.
GSM_2017_03_01-23-37.hex - Команда WatchPowerOn удалена. Добавлена консольная команда WatchPowerOff, идентична смс команде. Добавлены команды WatchPowerOn1, WatchPowerOn2. WatchPowerOn1 - мониторинг внешнего питания включен если сигнализация поставлена на охрану, WatchPowerOn2 - мониторинг внешнего питания включен всегда. Реализована функция постановки на охрану и снятия с охраны внешними устройствами, для этого используются выводы A1(D15) и A2(D16). Сигнализация ставит/снимает охрану при появлении на выводе A1(D15) высокого уровня +5В или на выводе A2(D16) низкого уровня GND. Вывод A1(D15) подтягивается к GND, вывод A2(D16) подтягивается к +5V через резисторы 20 (10) кОм. Добавлены команды GuardButtonOn и GuardButtonOff. Теперь после постановки на охрану мигает красный светодиод, пока не будет проверена целостность контура основного герконового датчика. Если контур целый загорается красный светодиод. Занято: 66% SRAM, 95% Flash Memory.
GSM_2017_03_12-20-04.hex - Теперь в консоли стало ещё чище, но если включен тестовый режим «TestOn», то в консоль выводится дополнительная информация. Исправлен баг «Sent!», теперь в консоль правильно выводится информация об отправке сообщений. Исправлен баг «повторного ложного вызова». Теперь запрос баланса должен работать корректно на всех модемах. Занято: 67% SRAM, 95% Flash Memory.
GSM_2017_04_16-12-00.hex - Исправлен . Теперь команды Info и Money всегда будут присылать ответное смс. Команда GuardButtonOn заменена командами GuardButtonOn1 и GuardButtonOn2. Занято: 67% SRAM, 99% Flash Memory.
GSM_2017_04_21-09-43.hex - не рекомендуется к использованию, только в качестве тестирования, спасибо за выявленные ошибки:) - Теперь параметр sendsms не влияет на отправку смс сообщений мониторинга электросети. Добавлена смс команда DelayBeforeGuard отвечающая за задержку при постановке на охрану, значение не может превышать 255 секунд. Добавлена смс команда DelayBeforeAlarm отвечающая за задержку отправки уведомлений и включение «тревожного пина» при срабатывании датчиков, значение не может превышать 255 секунд. Удалены команды ClearSMS, теперь сообщения удаляются автоматически после получения. Занято: 68% SRAM, 100% Flash Memory.
GSM_2017_04_22-20-42.hex - Исправлены множественные ошибки. Команды ClearSMS снова присутствуют в прошивке. Оптимизация памяти. Занято: 68% SRAM, 98% Flash Memory.
GSM_2017_04_23-17-50.hex - Теперь запрос баланса должен работать корректно на всех модемах. Постановка и снятие с охраны внешними устройствами теперь работает правильно. Ответные сообщения смс команды Info не должны быть пустыми. Оптимизация памяти. Занято: 68% SRAM, 98% Flash Memory.
GSM_2017_04_24-13-22.hex - Теперь передача консольных команд в GSM модуль производится только если включен тестовый режим. Теперь нет разделения на смс команды и консольные команды, все существующие команды можно передавать как через смс, так и через консоль. Возможно исправлен баг с командой Info. Оптимизация памяти. Занято: 68% SRAM, 94% Flash Memory.
GSM_2017_04_25-20-54.hex - Исправлен баг при котором команда ListConfig меняла значение последнего события. Теперь при вводе команд через косоль не отправляются ненужные смс сообщения. Возможно исправлен баг с командой Info. Оптимизация памяти. Занято: 66% SRAM, 94% Flash Memory.
GSM_2017_04_30-12-57.hex - Временно включён вывод дополнительной информации в консоль при отправке смс сообщений и формировании ответа на команду Info. Возможно исправлен баг с командой Info. Оптимизация памяти. Занято: 66% SRAM, 92% Flash Memory.
GSM_2017_05_06-11-52.hex - Исправлен с функцией DelayBeforeAlarm. Занято: 66% SRAM, 93% Flash Memory.
GSM_2017_05_23-21-27.hex - Незначительно изменён вывод информации в консоль. Добавлена поддержка модулей расширения портов на PCF8574A c адресами от 0x38 до 0x3f включительно. Исправлен баг c . Теперь устройство перезагружается автоматически после команд FullReset, ResetConfig, ResetPhone и в случае успешного выполнения команды MemTest. Добавлена команда WatchPowerTime. Теперь возможно установить время, по истечении которого будет отправлено смс сообщение об отключении внешнего источника питания. Занято: 67% SRAM, 94% Flash Memory.
GSM_2017_05_26-20-22.hex - Исправлена инициализация памяти датчиков платы расширения. Изменён синтаксис команды AddPhone. Добавлена команда EditMainPhone. Изменен принцип работы системы уведомлений, при срабатывании датчика сначала будут отправлены sms сообщения, после чего будут совершены голосовые вызовы. Тревожные sms сообщения будут отправлены на телефонные номера с признаком «S» (SMS). Голосовые вызовы будут совершены на номера с признаком «R» (Ring). Сообщения об отключении/включении внешнего источника питания будут отправлены на телефонные номера с признаком «P» (Power). Добавлена команда RingTime. Теперь возможно установить длительность тревожного голосового вызова, параметр может иметь значение от 10 до 255 секунд. Теперь команда RingOn/RingOff глобально включает/отключает оповещение голосовыми вызовами. Добавлена команда ResetSensor. Занято: 68% SRAM, 99% Flash Memory.
GSM_2017_06_02-17-43.hex - Командам AddPhone и EditMainPhone добавлен параметр «I» (Info), отвечающий за sms уведомление о постановке или снятии устройства с охраны. Теперь после добавления основного номера устройство автоматически перезагружается. Теперь можно вносить в память устройства одинаковые номера. При добавлении второго и последующих дублирующихся номеров с них автоматически будут сняты атрибуты «M», «S», «P» и «I». Эти номера будут использованы для повторного голосового вызова при срабатывании датчиков. Исправлен баг кривого вывода в консоль после выполнения команды AddPhone, теперь информация не выводится автоматически после добавления номера. Добавлена команда Reboot. Занято: 69% SRAM, 99% Flash Memory.
GSM_2017_06_11-00-07.hex - Теперь вновь при замыкании контактов основного герконового датчика (закрытии двери) устройство мигает синим светодиодом в течение 2 секунд, сигнализируя о нормальной работе датчика, при этом не учитывается поставлено или снято устройство с охраны. Команды RingOn/RingOff удалены. Теперь устройство можно снять с охраны во время тревожного вызова, теперь они совершаются в фоновом режиме. Занято: 69% SRAM, 99% Flash Memory.
GSM_2017_07_04-21-52.hex - Теперь команда Pause не присылает ответное смс. Удалены команды TestOn и TestOff. У всех номеров удалён признак Management. Занято: 68% SRAM, 96% Flash Memory.
GSM_2017_07_24-12-02.hex - Добавлены команды ReedSwitchOn/ReedSwitchOff для мониторинга основного герконовго датчика, теперь его можно включать/отключать так же как и датчик движения. Исправлен баг команды Info. Команды TestOn и TestOff снова присутствуют в прошивке. Занято: 68% SRAM, 96% Flash Memory.
GSM_2017_07_26-10-03.hex - Добавлена команда ModemID. Автоматическое определение модема осуществляется только если значение этого параметра равно 0. После установки значения параметра равным 0 производится автоматическая перезагрузка устройства. Занято: 68% SRAM, 98% Flash Memory.
GSM_2017_08_03-22-03.hex - Теперь сигнализация может управлять внешними устройствами. Для управления используется аналоговый выход A3 (D17 - используется как цифровой). Логический уровень выхода (+5В или GND) может быть изменен, после изменения уровня через команду настройки устройство автоматически будет перезагружено. Длительность сигнала управления внешним устройством может быть изменена. Добавлены команды ExtDeviceLevelLow, ExtDeviceLevelHigh, ExtDeviceTime, Open. Некоторые изменения в логике работы команд управления. Оптимизация памяти. Занято: 68% SRAM, 99% Flash Memory.
GSM_2017_08_10-12-17.hex - Удалены команды SmsOn/SmsOff, ReedSwitchOn/ReedSwitchOff, PIROn/PIROff и всё что с ними связано. Команда DelayBeforeAlarm заменена расширенными командами. Изменён вывод команды Info. Оптимизирован вывод команды ListConfig в консоль. Теперь к пинам D6 и A0 могут быть подключены любые цифровые датчики с высоким или низким уровнем срабатывания, в том числе герконы. Пины D6 и A0 должны быть притянуты к земле (GND) через сопротивление 10 (20) кОм. Если датчик настроен на низкий уровень срабатывания (включен в режиме геркона), то проверяется целостность цепи. Логический уровень срабатывания по входам D6 и A0 (+5В или GND) может быть изменен, после изменения логического уровня устройство автоматически будет перезагружено. Для каждого из датчиков (main, second, PCF-платы расширения) при срабатывании может быть установлено своё время по истечение которого будет осуществлено уведомление (смс и/или голосовой вызов). «PIR Sensor» переименован в «Second sensor». Исправлена работа платы расширения, ошибка из-за которой устройство всегда уведомляло о срабатывании датчиков, вне зависимости от того поставлено устройство на охрану или нет. Теперь можно выбрать режим работы при котором устройство может мониторить датчики платы расширения как во включенном режиме охраны (GuardOn), так и при выключенном режиме (GuardOff). Добавлены команды PCFForceOn/PCFForceOff, MainSensorLevelHigh/MainSensorLevelLow/MainSensorLevelOff, SecondSensorLevelHigh/SecondSensorLevelLow/SecondSensorLevelOff, MainDelayBeforeAlarm, SecondDelayBeforeAlarm, PCFDelayBeforeAlarm. Занято: 68% SRAM, 99% Flash Memory.

*Последующие версии прошивок включают в себя изменения предыдущих версий.


Используемые порты Arduino Nano v3

D4 - выход «тревожного» пина, при срабатывании датчика на этом пине устанавливается сигнал высокого уровня
D5 - инверсный выход «тревожного» пина, при срабатывании датчика на этом пине устанавливается сигнал низкого уровня

D6 - герконовый датчик. Начиная с версии GSM_2017_08_10-12-17.hex к пину D6 могут быть подключены любые цифровые датчики с высоким или низким уровнем срабатывания, в том числе герконы. Пин D6 должен быть притянут к земле (GND) через сопротивление 10 (20) кОм.
D7 - подключен к делителю напряжения от внешнего источника питания +5В. Верхнее плечо 2,2 кОм, нижнее 3,3 кОм.

Делитель напряжения


D8 - модем TX
D9 - модем RX

D10 - красный светодиод
D11 - синий светодиод
D12 - зеленый светодиод

Подключение периферии:
A0 - датчик движения . Начиная с версии GSM_2017_08_10-12-17.hex к пину A0 могут быть подключены любые цифровые датчики с высоким или низким уровнем срабатывания, в том числе герконы. Пин A0 должен быть притянут к земле (GND) через сопротивление 10 (20) кОм.

A1 - Вход для внешнего управления. Сигнализация ставит/снимает охрану при появлении на входе высокого уровня +5В.
A2 - Инверсный вход для внешнего управления. Сигнализация ставит/снимает охрану при появлении на входе низкого уровня GND.

A3 - Настраиваемый (+5В или GND) выход для управления внешними устройствами. При поступлении команды управления значение на этом выходе изменяется в зависимости от того какое было установлено на установленный промежуток времени.

A4 - SDA I2C
A5 - SLC I2C
, для подключения дополнительных 8 датчиков.


Команды управления для hex - прошивки

Внимание! Команды выделенные жирным шрифтом могут быть выполнены только с основного номера, так как отвечают за конфигурацию устройства. Остальные команды могут быть выполнены с номеров с признаком «Management».

SMS - команды управления не чувствительны к регистру :
AddPhone - Добавить номер телефона. Всего может быть добавлено не более 9 номеров + 1 основной номер который автоматически сохраняется в память при первом звонке на устройство после сброса на заводские установки командами ResetPhone или FullReset . Т.е. кто первый позвонил на устройство после его сброска на заводские установки тот и и «главный», этот номер заносится в первую ячейку памяти и его невозможно изменить или удалить через смс. Возможно добавить два одинаковых номера, но тогда у номера дубликата автоматически остаётся только признак «r» - исключительно для повторного голосового вызова.
Пример команды:



Синтаксис команды:

AddPhone - команда
: - разделитель
5 - записать в пятую ячейку памяти
+71234567890 - номер телефона
До версии GSM_2017_05_26-20-22.hex:
а - Параметр «Alarm» - на номера с этим параметром будут отправляться смс - сообщения о срабатывании сигнализации и сообщения постановке или снятии с охраны.
Начиная с версии GSM_2017_05_26-20-22.hex:
m - Параметр «Management» - разрешено управление сигнализацией
s - Параметр «SMS» - будет отправлено sms сообщение при срабатывании датчиков
r - Параметр «Ring» - будет совершен голосовой вызов при срабатывании датчиков
p - Параметр «Power» - будет отправлено sms сообщение при включении/отключении внешнего питания
i - Параметр «Info» - будет отправлено sms сообщение при постановке или снятии с охраны
При отсутствии параметров «m», «s», «r», «p»,«i» телефон заносится в память, но никак не используется.


DeletePhone - Удалить номер телефона.
Пример команды:

Синтаксис команды:

DeletePhone - команда
: - разделитель
+71234567891 - номер телефона


EditMainPhone - Изменить параметры «s», «r», «p», «i» основного телефона, этот номер занесён в первую ячейку памяти.
Пример команды:

Синтаксис команды:

EditMainPhone - команда
: - разделитель
srpi - параметры


BalanceNum - Изменение номера запроса баланса и обработка длины ответа запроса. Значение по умолчанию для Beeline: #100#L22.
Пример команды:

Синтаксис команды:

BalanceNum - команда
: - разделитель
#103# - номер запроса баланса
L24 - Длина (len) пересылаемого ответа 24 символа, обрезаем спам из запроса баланса.


EditSensor - Изменить название датчика и логический уровень срабатывания. Всего может быть не более 8 дополнительных датчиков. После изменения параметров необходима перезагрузка устройства.
Пример команды:
EditSensor:1+Datchik dvizheniya v koridore#h

Синтаксис команды:

EditSensor - команда
: - разделитель
1 - записать в первую ячейку памяти
+ - разделитель
Datchik dvizheniya v koridore - название датчика, не может превышать 36 символов, включая пробелы.
#h - Признак высокого логического уровня с датчика, при получении которого сработает сигнализация. Если отсутствует "#h", сигнализация будет срабатывать при получении с датчика низкого логического уровня.


SleepTime - Время «засыпания» сигнализации при получении смс - команды «Pause», указывается в минутах. Значение по умолчанию: 15, не может быть менее 1 и более 60.
Пример команды:

Синтаксис команды:

SleepTime - команда
: - разделитель
20 - 20 минут «сна».


AlarmPinTime - Время на которое включается/выключается тревожный/инверсный пин, указывается в секундах. Значение по умолчанию: 60, не может быть менее 1 секунды и более 43200 секунд (12 часов).
Пример команды:

Синтаксис команды:

AlarmPinTime - команда
: - разделитель
30 - 30 секунд включения/выключения тревожного пина.


DelayBeforeGuard - Время до постановки устройства на охрану, после получения соответствующей команды.
Пример команды:

Синтаксис команды:

DelayBeforeGuard - команда
: - разделитель
25 - 25 секунд до постановки на охрану


DelayBeforeAlarm - Время по истечении которого будет отправлено «тревожное» смс уведомление, если за этот период времени сигнализация не была снята с охраны. Заменена расширенными командами начиная с версии GSM_2017_08_10-12-17.hex
Пример команды:

Синтаксис команды:

DelayBeforeAlarm - команда
: - разделитель
40 - 40 секунд до отправки «тревожного» уведомления


WatchPowerTime - Время в минутах по истечении которого будет отправлено смс сообщение об отключении внешнего источника питания. Если внешнее питание будет восстановлено до истечения установленного времени, то сообщение не будет отправлено.
Пример команды:

Синтаксис команды:

WatchPowerTime - команда
: - разделитель
5 - 5 минут до отправки смс сообщения


RingTime - Длительность тревожного голосового вызова, параметр может иметь значение от 10 до 255 секунд.
Пример команды:

Синтаксис команды:

RingTime - команда
: - разделитель
40 - 40 длительность вызова составит 40 секунд, после чего будет вызван следующий абонент.


ModemID - Принудительная установка модели используемого модема. Возможные значения: 0 - автоопределение модема, 1 - M590, 2 - SIM800l, 3 - A6_Mini.
Пример команды:

Синтаксис команды:

ModemID - команда
: - разделитель
2 - ID модема.


ExtDeviceTime - Количество секунд на которое изменится уровень сигнала на выходе управления внешним устройством.
Пример команды:

Синтаксис команды:

ExtDeviceTime- команда
: - разделитель
5 - 5 секунд


ExtDeviceLevelLow - Внешнее устройство подключенное к выходу A3 управляется низким уровнем сигнала (GND). На выходе по умолчанию будет присутствовать высокий уровень +5В, пока не поступит команда управления внешним устройством
ExtDeviceLevelHigh - Внешнее устройство подключенное к выходу A3 управляется высоким уровнем сигнала (+5V). На выходе по умолчанию будет присутствовать низкий уровень GND, пока не поступит команда управления внешним устройством

ResetSensor - сброс параметров датчиков расширителя порта

ResetConfig - сброс настроек на заводские установки

ResetPhone - удаление из памяти всех телефонных номеров

FullReset - сброс настроек, удаление из памяти всех телефонных номеров, восстановление значения по умолчанию команды BalanceNum.

RingOn - включить уведомление звонком на «главный» номер записанный в первую ячейку памяти при срабатывании датчика. Удалена начиная с версии GSM_2017_06_11-00-07.hex
RingOff - выключить уведомление звонком при срабатывании датчика. Удалена начиная с версии GSM_2017_06_11-00-07.hex

SmsOn - включить sms-уведомление при срабатывании датчика. Удалена начиная с версии GSM_2017_08_10-12-17.hex
SmsOff - выключить sms-уведомление при срабатывании датчика. Удалена начиная с версии GSM_2017_08_10-12-17.hex

PIROn - включить обработку датчика движения
PIROff - выключить обработку датчика движения

ReedSwitchOn - включить обработку основного герконового датчика
ReedSwitchOff - выключить обработку основного герконового датчика

WatchPowerOn - включить контроль внешнего питания, смс сообщение об отключении внешнего питания будет отправлено при условии что сигнализация поставлена на охрану. Удалена начиная с версии GSM_2017_03_01-23-37.

WatchPowerOn1 - включить контроль внешнего питания, смс сообщение об отключении внешнего питания будет отправлено при условии что сигнализация поставлена на охрану.
WatchPowerOn2 - включить контроль внешнего питания, смс сообщение об отключении внешнего питания в любом случае будет отправлено

WatchPowerOff - выключить контроль внешнего питания

GuardButtonOn - управление сигнализацией внешними устройствами или кнопкой включено Удалена начиная с версии GSM_2017_04_16-12-00.
GuardButtonOn1 - функция постановки или снятия охраны внешними устройствами или кнопкой включена
GuardButtonOn2 - функция только постановки на охрану внешними устройствами или кнопкой включена, снятие с охраны производится по звонку на устройство или с помощью смс команды.
GuardButtonOff - управление сигнализацией внешними устройствами или кнопкой выключено

PCFForceOn - постоянный мониторинг группы всех датчиков модуля расширения
PCFForceOff - мониторинг группы всех датчиков модуля расширения только при постановке устройства на охрану

MainSensorLevelHigh - тревожное уведомление будет отправлено при появлении сигнала высокого уровня (+5 В) на входе (D6) от датчика
MainSensorLevelLow - тревожное уведомление будет отправлено при появлении сигнала низкого уровня (GND) на входе (D6) от датчика
MainSensorLevelOff - обработка датчика на входе (D6) отключена

SecondSensorLevelHigh - тревожное уведомление будет отправлено при появлении сигнала высокого уровня (+5 В) на входе (A0) от датчика
SecondSensorLevelLow - тревожное уведомление будет отправлено при появлении сигнала низкого уровня (GND) на входе (A0) от датчика
SecondSensorLevelOff - обработка датчика на входе (A0) отключена

MainDelayBeforeAlarm - время по истечении которого будет отправлено «тревожное» смс уведомление при срабатывании основного датчика (D6), если за этот период времени сигнализация не была снята с охраны. Синтаксис аналогичен команде DelayBeforeAlarm.
SecondDelayBeforeAlarm - время по истечении которого будет отправлено «тревожное» смс уведомление при срабатывании дополнительного датчика (A0), если за этот период времени сигнализация не была снята с охраны. Синтаксис аналогичен команде DelayBeforeAlarm.
PCFDelayBeforeAlarm - время по истечении которого будет отправлено «тревожное» смс уведомление при срабатывании датчиков платы расширения (PCF8574), если за этот период времени сигнализация не была снята с охраны. Синтаксис аналогичен команде DelayBeforeAlarm.

GuardOn - поставить на охрану
GuardOff - снять охраны

Open - команда управления внешним устройством

Info - проверить состояние, в ответ на это сообщение будет отправлено sms с информацией о том с какого номера была включена/выключена охрана

Pause - приостанавливает работу системы на время установленное командой sleeptime в минутах, система не реагирует на срабатывания датчика.

TestOn - включается тестовый режим, мигает синим светодиодом.
TestOff - выключается тестовый режим.

LedOff - выключает светодиод режима ожидания.
LedOn - включает светодиод режима ожидания.

Money - запроса баланса.

ClearSms - Удалить из памяти все sms

Консольные команды (до версии GSM_2017_04_24-13-22.hex) - вводятся в мониторе порта Arduino IDE:

AddPhone - аналогична sms-команде AddPhone

DeletePhone - аналогична sms-команде DeletePhone

EditSensor - аналогична sms-команде EditSensor

ListPhone - вывод в монитор порта списка сохранённых в памяти телефонов

ResetConfig - аналогична sms-команде ResetConfig

ResetPhone - аналогична sms-команде ResetPhone

FullReset - аналогична sms-команде FullReset

ClearSms - аналогична sms-команде ClearSms

WatchPowerOn1 - аналогична sms-команде WatchPowerOn1
WatchPowerOn2 - аналогична sms-команде WatchPowerOn2
WatchPowerOff - аналогична sms-команде WatchPowerOff

GuardButtonOn - аналогична sms-команде GuardButtonOn . Удалена начиная с версии GSM_2017_04_16-12-00
GuardButtonOn1 - аналогична sms-команде GuardButtonOn1
GuardButtonOn2 - аналогична sms-команде GuardButtonOn2
GuardButtonOff - аналогична sms-команде GuardButtonOff

Memtest - тест энергонезависимой памяти устройства, все настройки устройства будут сброшены, аналогично команде FullReset.

I2CScan - поиск и инициализация поддерживаемых устройств на шине I2C.

ListConfig - вывод в монитор порта текущей конфигурации устройства.

ListSensor - вывод в монитор порта текущей конфигурации датчиков.

UPD. При использовании датчика движения , для исключения ложных срабатываний при работе модема, необходимо между пинами GND и A0 Arduino поставить сопротивление , спасибо говорим товарищу
AllowPhone = {«70001234501», «70001234502», «70001234503», «70001234504», «70001234505»} - Номера которым разрешено управлять охраной.
AlarmPhone = {«70001234501», «70001234502»} - Номера для отправки sms-уведомлений при срабатывании датчика и уведомления о снятии или постановке на охрану. На первый номер в списке будет осуществляться вызов при срабатывании датчика если выполнена команда RingOn, по-умолчанию эта опция включена. Это сделано потому что sms-сообщения могут прийти с некоторой задержкой, а звонок должен пройти сразу.

Если поступил вызов с разрешенного номера или sms-сообщение с командой GuardOn/GuardOff, то в зависимости от текущего состояния охраны будет отправлено sms-сообщение о постановке или снятии с охраны на номера перечисленные в массиве AlarmPhone, так же будет отправлено sms-сообщение на номер с которого поступил вызов.

При срабатывании датчика отправляются sms-сообщения на все номера из массива (списка) AlarmPhone и осуществится голосовой вызов на первый номер из этого массива.

Световая индикация:
Светодиод светится красным цветом - поставлено на охрану.
Светодиод светится зелёным цветом - снято с охраны, включается/отключается sms-командой LedOn/LedOff.
Светодиод постоянно мигает синим цветом - сигнализирует о том что c Arduino всё в порядке, плата не зависла, используется исключительно для отладки, включается/отключается sms-командой TestOn/TestOff.
* В коде присутствует функция LedTest(), она мигает синим светодиодом, сделана лишь для того чтобы мониторить Arduino, мигает - значит работает, не мигает - зависла. Пока ещё не зависала:)

НЕ Актуально!

Подключение 2 и более датчиков для открытых прошивок (касается только этой прошивки sketch_02_12_2016.ino)
Для подключения дополнительных герконовых датчиков используем свободные цифровые пины D2,D3,D5 или D7. Схема подключения с дополнительным датчиком на D7.

Необходимые изменения в прошивке
... #define DoorPin 6 // Номер входа, подключенный к основному датчику int8_t DoorState = 0; // Переменная для хранения состояния основного датчика int8_t DoorFlag = 1; // Переменная для хранения состояния основного датчика #define BackDoorPin 7 // Номер входа, подключенный к дополнительному датчику int8_t BackDoorState = 0; // Переменная для хранения состояния дополнительного датчика int8_t BackDoorFlag = 1; // Переменная для хранения состояния дополнительного датчика...
void setup() { ... pinMode(DoorPin, INPUT); pinMode(BackDoorPin, INPUT); ...
... void Detect() { // Считываем значения с датчиков DoorState = digitalRead(DoorPin); BackDoorState = digitalRead(BackDoorPin); //Обработка основного датчика if (DoorState == LOW && DoorFlag == 0) { DoorFlag = 1; delay(100); if (LedOn == 1) digitalWrite(GLed, LOW); Alarm(); } if (DoorState == HIGH && DoorFlag == 1){ DoorFlag = 0; delay(100); } //Обработка дополнительного датчика if (BackDoorState == LOW && BackDoorFlag == 0) { BackDoorFlag = 1; delay(100); if (LedOn == 1) digitalWrite(GLed, LOW); Alarm(); } if (BackDoorState == HIGH && BackDoorFlag == 1){ BackDoorFlag = 0; delay(100); } } ...

И ещё кое что :
1. Диоды лучше использовать рассчитанные на ток 2 А, так как модуль заражает током в 1 А и нам ещё нужно чем то питать Arduino и модем. В этом экземпляре используются диоды 1N4007, если выйдут из строя заменю на 2 А.
2. Все резисторы для светодиода использовал на 20 кОм, для того чтобы ночью не освещать весь коридор.
3. На герконовый датчик между пином GND и пином D6 так же повесил резистор на 20 кОм.

На этом пока всё. Спасибо за внимание! :)

Планирую купить +207 Добавить в избранное Обзор понравился +112 +243

Здравствуй, дорогой читатель! Сегодняшняя статья посвящена созданию простой домашней системы безопасности, при помощи доступных компонентов. Это маленькое и дешёвое устройство поможет тебе защитить ваше жилище от проникновения при помощи Arduino, датчика движения, дисплея и динамика. Питаться устройство сможет от батарейки или USB-порта компьютера.

Итак, начнём!

Как оно работает?

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

Для более широкого радиуса действия используют линзы Френеля, которые собирают ИК-излучение с разных направлений и концентрируют его на самом датчике.

На рисунке видно, как линза искажает лучи, которые падают на неё.

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

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

Что нам потребуется?

  1. (или любая другая плата ).
  2. (16 символов по две строки)
  3. Один разъём для подключения кроны к Arduino
  4. (хотя можно использовать и обычный динамик)
  5. USB-кабель - только для программирования (прим. пер.: с нашими Arduino он всегда идёт в комплекте!)
  6. Компьютер (опять же только для того, чтобы написать и загрузить программу).

Кстати, если не хочется покупать все эти детали по отдельности - рекомендуем обратить внимание на наши . К примеру, всё необходимое и даже больше есть в нашем стартовом наборе .

Подключаем!

Подключение датчика движения очень простое:

  1. Пин Vcc подключаем к 5V Ардуино.
  2. Пин Gnd подключаем к GND Ардуино.
  3. Пин OUT подключаем к цифровому пину №7 от Arduino

Теперь присоединим светодиод и спикер. Тут всё так же просто:

  1. Короткую ножку (минус) светодиода подключаем к земле
  2. Длинную ножку (плюс) светодиода подключаем к выходу №13 Arduino
  3. Красный провод спикера к выходу №10
  4. Чёрный провод – к земле

И теперь самое сложное – подключение LCD дисплея 1602 к Arduino. Дисплей у нас без I2C, поэтому потребуется много выходов Arduino, но результат будет того стоить. Схема представлена ниже:

Нам нужна только часть схемы (у нас не будет регулировки контраста потенциометром). Поэтому требуется сделать лишь следующие:

Теперь ты знаешь, как подключить дисплей 1602 к Arduino UNO R3 (ровно как и к любой версии Arduino от Mini до Mega).

Программируем

Пришло время перейти к программированию. Ниже представлен код, который надо лишь залить и, если вы собрали всё верно – устройство готово!

#include int ledPin = 13; // Пин светодиода int inputPin = 7; // Пин, к которому подключен Out датчика движения int pirState = LOW; // Текущее состояние (в начале ничего не обнаружено) int val = 0; // Переменная для чтения состояния цифровых входов int pinSpeaker = 10; // Пин, к которому подключен динамик. Требуется использовать пин с ШИМ (PWM) LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Инициалиация LCD дисплея void setup() { // Определение направления передачи данных на цифровых пинах pinMode(ledPin, OUTPUT); pinMode(inputPin, INPUT); pinMode(pinSpeaker, OUTPUT); // Запуск вывода отладочной информации через последовательный порт Serial.begin(9600); // Запуск вывода на LCD дисплей lcd.begin(16, 2); // Устанавливаем индекс на дисплеи, с которого начнём вывод // (2 символ, 0 строки) lcd.setCursor(2, 0); // Вывод на LCD дисплей lcd.print("P.I.R Motion"); // Снова перемещаем lcd.setCursor(5, 1); // Выводим lcd.print("Sensor"); // Пауза, чтобы успели прочитать, что вывели delay(5000); // Очистка lcd.clear(); // Аналогично lcd.setCursor(0, 0); lcd.print("Processing Data."); delay(3000); lcd.clear(); lcd.setCursor(3, 0); lcd.print("Waiting For"); lcd.setCursor(3, 1); lcd.print("Motion...."); } void loop() { // Считываем показание датчика val = digitalRead(inputPin); if (val == HIGH) { // Если есть движение, то зажигаем светодиод и включаем сирену digitalWrite(ledPin, HIGH); playTone(300, 300); delay(150); // Если движения до данного момента не было, то выводим сообщение // что оно обнаружено // Код ниже нужен для того, чтобы писать лишь смену состояния, а не каждый раз выводить значение if (pirState == LOW) { Serial.println("Motion detected!"); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Motion Detected!"); pirState = HIGH; } } else { // Если движене закончилось digitalWrite(ledPin, LOW); playTone(0, 0); delay(300); if (pirState == HIGH){ // Сообщаем, что движение было, но уже закончилось Serial.println("Motion ended!"); lcd.clear(); lcd.setCursor(3, 0); lcd.print("Waiting For"); lcd.setCursor(3, 1); lcd.print("Motion...."); pirState = LOW; } } } // Функция воспроизведения звука. Duration (длительность)- в миллисекундах, Freq (частота) - в Гц void playTone(long duration, int freq) { duration *= 1000; int period = (1.0 / freq) * 100000; long elapsed_time = 0; while (elapsed_time < duration) { digitalWrite(pinSpeaker,HIGH); delayMicroseconds(period / 2); digitalWrite(pinSpeaker, LOW); delayMicroseconds(period / 2); elapsed_time += (period); } }

Доброе время суток 🙂 Сегодня поговорим о сигнализации. На рынке услуг полно фирм, организацией, которые занимаются установкой и обслуживанием охранных систем. Эти фирмы предлагают покупателю широкий выбор сигнализацией. Однако их стоимость далеко не копеечная. Но что же делать человеку, у которого не так уж и много личных средств, что можно потратить на охранную сигнализацию? Думаю, вывод напрашивается сам собой – сделать сигнализацию своими руками . В этой статье приведён пример того, как можно сделать свою собственную кодовую охранную систему используя плату Arduino uno и несколько магнитных датчиков.

Систему можно дезактивировать вводом пароля с клавиатуры и нажатием кнопки ‘* ‘. Если хотите изменить текущий пароль, можете сделать это нажав на клавишу ‘B ‘, а если хотите пропустить или прервать операцию, можете сделать это нажав на клавишу ‘#’. В системе есть зуммер для воспроизведения различных звуков при выполнении той либо иной операции.

Активируется система нажатием кнопки ‘A’. Система даёт 10 секунд на то, чтобы покинуть помещение. После прошествии 10 секунд сигнализация будет активирована. Количество магнитных датчиков будет зависит от вашего собственного желания. В проекте задействованы 3 датчика (для двух окон и двери). Когда окно открывается система активируется, и включается сигнал тревоги идущий с зуммера. Систему можно дезактивировать путем набора пароля. Когда открывается дверь, сигнализация даёт вошедшему 20 секунд для ввода пароля. Система использует ультразвуковой датчик, что может обнаруживать движение.

Видео работы устройства

Поделка изготовлена в ознакомительных/обучающих целях. Если хотите использовать её у себя дома, будет необходимо её доработать. Заключить управляющий блок в металлический корпус и обезопасить линию питания от возможного повреждения.

Давайте начинать!

Шаг 1: Что нам будет нужно

  • плата Arduino uno;
  • высококонтрастный LCD дисплей 16×2;
  • клавиатура 4×4;
  • 10~20кОм потенциометр;
  • 3 магнитных датчика (они же герконы);
  • 3 2-х пиновых винтовых клеммы;
  • HC-SR04 ультразвуковой датчик;

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

  • DIP разъём для atmega328 + микроконтроллер atmega328;
  • 16MГц кварцевый резонатор;
  • 2 шт. 22pF керамических, 2 шт. 0.22uF электролитических конденсатора;
  • 1 шт. 10кОм резистор;
  • гнездо под питание (DC power jack);
  • макетная плата;
  • 5В блок питания;

И одна коробка, чтобы всё это упаковать!

Инструменты:

  • Что-то, чем можно разрезать пластиковую коробку;
  • Термоклеевой пистолет;
  • Дрель/шуруповерт.

Шаг 2: Схема сигнализации

Схема соединения довольно простая.

Небольшое уточнение:

Высококонтрастный LCD:

  • Pin1 — Vdd к GND;
  • Pin2 — Vss к 5В;
  • Pin3 — Vo (к центральному выводу потенциометра);
  • Pin4 — RS к 8 выводу Arduino;
  • Pin5 — RW к GND;
  • Pin6 — EN к 7 выводу Arduino;
  • Pin11 — D4 к 6 выводу Arduino;
  • Pin12 — D5 к 5 выводу Arduino;
  • Pin13 — D6 к 4 выводу Arduino;
  • Pin14 — D7 к 3 выводу Arduino;
  • Pin15 — Vee (к правому или левому выводу потенциометра) .

Клавиатура 4×4:

От левого к правому:

  • Pin1 к A5 выводу Arduino;
  • Pin2 к A4 выводу Arduino;
  • Pin3 к A3 выводу Arduino;
  • Pin4 к A2 выводу Arduino;
  • Pin5 к 13 выводу Arduino;
  • Pin6 к 12 выводу Arduino;
  • Pin7 к 11 выводу Arduino;
  • Pin8 к 10 выводу Arduino.

Шаг 3: Прошивка

В шаге представлен код, что используется встроенным !

Скачайте плагин codebender. Нажмите на кнопку «Run» в Arduino и прошейте свою плату этой программой. На этом всё. Вы только что запрограммировали Arduino! Если хотите внести изменения в код, нажмите кнопку»Edit».

Примечание: Если вы не будете использовать Codebender IDE для программирования платы Arduino, вам будет нужно установить дополнительные библиотеки в Arduino IDE.

Шаг 4: Изготавливаем собственную управляющую плату

После того, как удачно собрали и протестировали новый проект на базе Arduino uno, можете начать изготовление собственной платы.

Несколько советов, для более успешного завершения затеянного:

  • 10кОм резистор должен монтироваться между 1 (reset) и 7 (Vcc) выводами микроконтроллера Atmega328.
  • 16MГц кварцевый резонатор должен подсоединятся к выводам 9 и 10, отмеченными, как XTAL1 и XTAL2
  • Соедините каждый вывод резонатора с 22pF конденсаторами. Свободные выводы конденсаторов заведите на 8 вывод (GND) микроконтроллера.
  • Не забудьте соединить вторую линию питания ATmega328 с блоком питания, выводы 20-Vcc и 22-GND.
  • Дополнительную информацию по выводам микроконтроллера можете найти на втором изображении.
  • Если планируете использовать блок питания с напряжением выше 6В, необходимо воспользоваться линейный регулятором LM7805 и двумя 0.22uF электролитическими конденсаторами, которые следует смонтировать на входе и выходе регулятора. Это важно! Не подавайте больше, чем 6В на плату!!! В противном случае вы спалите свой микроконтроллер Atmega и LCD дисплей.

Шаг 5: Размещаем схему в корпусе

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

Что собой представляет модуль Arduino?

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

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

Сложно ли работать с Arduino?

Модули Arduino отличаются высокой популярностью среди многих пользователей. Это стало возможным благодаря своей простоте и доступности.

Программы для управления модулями пишутся с использованием обычного C++ и дополнений в виде простых функций управления процессами ввода/вывода на контактах модуля. Кроме этого, для программирования может применяться и бесплатная программная среда Arduino IDE, функционирующая под Windows, Linux или Mac OS.

С модулями Arduino существенно упрощена процедура сборки устройств. GSM сигнализация на Ардуино может создаваться без потребности в паяльнике – сборка происходит с использованием макетной доски, перемычек и проводов.

Как создать сигнализацию с помощью Arduino?

К основным требованиям, которым должна отвечать созданная gsm сигнализация на Ардуино своими руками относятся:

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

Для создания сигнализации потребуется:

  • модуль Arduino;
  • набор функциональных датчиков;
  • или модем;
  • источник автономного питания;
  • внешние исполнительные устройства.

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

Как это работает?

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

Чтобы обеспечить возможность оправки предупредительных сигналов владельцу дома или квартиры, которые охраняются, к модулю Arduino, через плату расширения, подключается специальный модуль GSM. В него устанавливается SIM-карта одного из провайдеров сотовой связи.

При отсутствии специального GSM-адаптера его роль может выполнять и обычный мобильный телефон. Кроме отправки СМС-сообщений с предупреждением о тревоге и дозвона, наличие сотовой связи позволит управлять GSM сигнализацией на Ардуино дистанционно, а также контролировать состояние объекта, отправляя специальные запросы.

«Обратите внимание!

Для связи с владельцем объекта, кроме GSM-модулей могут использоваться и обычные модемы, которые обеспечивают связь через интернет.»

В таком случае, когда срабатывает датчик, обработанный процессором сигнал, передается через модем на специальный портал или сайт. А уже из сайта осуществляется автоматическое генерирование предупредительной СМС или рассылки на привязанный e-mail.

Выводы

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