Как стать автором
Обновить

Автономная охранная система на Arduino + GSM

Время на прочтение4 мин
Количество просмотров49K

Друзья, разрешите представить проектик GSM сигнализации на Arduino. В сети довольно много проектов по типу «Arduino + модем + датчики», однако я часто вижу в них некоторую незаконченность (в особенности, с программной точки зрения): отсутствие гибкости в настройках и конфигурировании. В представленном решении я попытался сделать устройство максимально готовое к «боевым» условиям, предусмотрев все, что может понадобится среднестатистическому пользователю (на мой взгляд).



TL; DR программно и аппаратно задуманное реализовано, тест в реальных условиях запущен, исходники и бинарники опубликованы, корпус не осилил.


Устройство и характеристики


Устройство отправляет SMS при возникновении следующих событий:


  • открытие двери (герконовый датчик);
  • резкое изменение освещения (фоторезистор);
  • движение (PIR датчик);
  • выход температуры из заданного диапазона;
  • низкое напряжение батареи.


Пример SMS с событием



Также, раз в сутки можно настроить время ежедневного отчета


Питается устройство от 3-х батареек AA. Расчетное время работы ≥6мес.


Настройка устройства, считывание логов событий и построение месячного графика температуры происходит с помощью утилиты (Python 2.7 + Tk + pyserial + matplotli).



Основное окно утилиты настройки



Окно лога событий



Окно лога температуры


Сборка устройства


Себестоимость деталей устройства на момент публикации этой статьи составляет примерно 1000-1200 рублей (без учета заказа платы).


Для удобства сборки и надежности в эксплуатации лучше заказать плату. Китайские друзья с известного сайта предлагают сделать 10 штук с доставкой за ~$7, а иногда и меньше. Но всегда можно собрать и на макетке, как я и поступил с первым прототипом:



Прототип.


Arduino и совместимые модули были заказаны с aliexpress. Понадобятся:


  • Arduino Pro Mini 3.3v 8MHz (5v 16MHz is also acceptable, but requires different firmware);
  • MH-SR602 MINI Motion Sensor;
  • SIM800C(L) GSM Module;
  • CP2102 MICRO USB to UART TTL Module;
  • DS3231 RTC Module For Raspberry Pi;
  • 3 AA battery holder With ON OFF Switch;
  • различная рассыпуха (резисторы, конденсаторы, зуммер и поч.).

В списке специально указаны названия, дающие нужный результат при вводе в поиск.



Схема устройства

Для снижения энергопотребления с платы Arduino нужно обязательно удалить резистор светодиода питания и регулятор напряжения. Проект платы сделан в Ki-CAD.


Использование


  • После сборки и прошивки устройство требует загрузки конфигурации (с помощью утилиты).
  • При подключении к USB нормальная работа устройства приостанавливается, очередь неотправленных сообщений очищается.
  • При неудачной отправке SMS, устройство произведет повторную попытку через 2 минуты, затем через 5, 10, 20, дважды через 40 и затем каждые 12 часов.
  • После принятого звонка, он будет завершен через 3 минуты.
  • Звуковая сигнализация включается на 30 секунд.
  • События «открытие двери», «движение» и «изменения освещения» срабатывают не чаще, чем раз в 20 мин.
  • Если питание устройства отсутствует более 3 часов, то записанная история измерения температуры сбрасывается.

Локализация


Поддержаны два языка для программы конфигурирования и текста SMS: английский, русский. При желании не сложно добавить поддержку других языков: все локализуемые строки вынесены в отдельный файл (принимаю issue с реквестом, если приложите переводы всех строк).


Полевые испытания


Прошу прощения за эстетику монтажа.



Установка на входную дверь. Часть конструкции справа (непосредственно на самой двери) — магнит для срабатывания геркона


На место постоянного использования (гараж) устройство было установлено 4 месяца назад. Для целей усиленного тестирования, функция расписания не используется (по каждому событию отправляется SMS). В среднем получается 5 SMS в день: два при входе в гараж (срабатывает датчик открытия двери и датчик освещения), два при выходе и один «ежедневный отчет». На текущий момент батареи (3x AA) держат напряжение 4.1в при включенном модеме.


Проблемы


За время эксплуатации температура в помещении понизилась с +10°С до -15°С и обнаружилась две проблемы.


  1. Используемый PIR датчик начинает давать ложные срабатывания при низких температурах. При +5°С использование стало совсем невозможным: число ложных срабатываний превысило одно в день. Попытка замены датчика на другой проблему не решило, поэтому сейчас этот датчик временно отключен. Что с этим делать пока не понятно.
  2. Датчик температуры, встроенный в DS3231 при -10°С и ниже начал сходить с ума: периодически выдает случайные значения, например, «-84°С» или «+115°С». Интересно, что RTC работает нормально. На текущий момент не понятно, проблема ли это конкретно моего экземпляра или нет. Жду для проверки второй идентичный модуль, при повторении с ним проблемы в устройство будет добавлен DS18B20.

В остальном полет нормальный.


Что дальше


В планах (когда-нибудь):


  • спроектировать и напечатать корпус;
  • подключить ESP-01 для конфигурации и просмотра логов через браузер с телефона.

Отладка


Отладочные сообщения выводятся в виртуальный COM на 250kbod. Нужно замкнуть на землю D12, чтобы отключить детекцию подключенного USB (чтобы устройство продолжало работу в нормальном режиме). Конфигурирование через утилиту продолжит работать нормально.


Ссылки


Репозиторий проекта: github
Доступны схема и плата в Ki-CAD, прошивка и исходники для Arduino, exe и исходники утилиты конфигурации.


Аналог с aliexpress: RF-V13

Теги:
Хабы:
+21
Комментарии33

Публикации