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

    Друзья, разрешите представить проектик 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

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 33

      0
      Датчик температуры сменить на резистивный ntc10k, перевод сопротивления в температуру по формуле Стейнхарта — Харта (пример использования), датчик дешевле в 6 раз
        0
        Не люблю аналоговые интерфейсы. Пусть лучше зона ответственности с расчетом числового представления температуры будет на плечах производителя датчика.
          0

          Также ATmega содержит встроенный термодатчик, возможно стоит попробовать использовать его?

            0
            Можно было бы, но не радует следующая фраза из ДШ:
            the accuracy of the temperature measurement is ±10°C using manufacturing calibration values
              0

              Надо чуть дальше даташит прочитать:


              To be capable of achieving more accurate results the temperature measurement can be calibrated in the application software. The software calibration requires that a calibration value is measured and stored in a register or EEPROM for each chip, as a part of the production test.

              The software calibration can be done utilizing the formula:
              T = { [(ADCH << 8) | ADCL] — TOS} / k
              where ADCn are the ADC data registers, k is a fixed coefficient and TOS is the temperature sensor offset value determined and stored into EEPROM as a part of the production test.

              Т.е. нужно просто скорректировать на значение смещения, а точность значения k обещает производитель. Цифровой датчик конечно точен из коробки, но я думаю что и такой метод даст приемлемый результат.

                0
                Тут уже дело вкуса. Я просто стараюсь как можно ближе соответствовать «правильно собранное устройство в настройке не нуждается». Особенно при разработке DIY, где нужно минимизировать «порог входа», время и количество инструкций, для тех, кто захочет это повторить. Разбирающиеся товарищи уже смогут сделать модификации на свой вкус, для чего и исходники.
                update: не понял сразу, что калибровочные значения уже записаны в камень и их не нужно самому определять. Посмотрю поближе.
                0
                Обычно производитель по датчику сообщает коэффициент B из уравнения Стейнхарта — Харта, с разбросом в пределах 5%.
                Это если «нет времени разбираться, просто воткнем и работать». Но можно по 3 точкам измеренной температуры откалибровать (вычислить точное значение константы B) при наличии хоть как-то точного термометра.
            0
            За время эксплуатации температура в помещении понизилась с +10°С до -15°С и обнаружилась две проблемы.
            Посмотрел даташит DS3231 диапазон от 0 до +70С, возможно упирается в левую границу.
            У себя использовал DHT-11 (китайское гэ...) при опросе по очереди всех датчиков он значительно просаживал питание, как и зуммер. В вашем случае питание может проседать от низкой температуры. В своем следующем проекте использовал отдельный датчик LM75A, понравился. Проверял в морозильнике, плату повело от холода и некоторые дорожки порвались)))
              0
              У DS3231 есть версия с диапазоном -40°C до +85°C. Если макрировка не врет, у меня такая. Просадка исключена, т.к. считывание некорректного значения появляется в то время, когда все «жирные» нагрузки (модем, зуммер) выключены.
              использовал отдельный датчик LM75A, понравился

              Посмотрю, как рас не хотелось 1-wire добавлять.
              0
              • Пара ампер в импульсе через 1N4148 (D5).
              • Диодный "уменьшитель" может вызывать завышение напряжения питания при уменьшении тока потребления модема.
              • Soft UART? Ну ладно, на любителя.
                0
                По soft UART — у выбранной ардуины только один аппаратный и его было решено использовать для отладки, т.к. у soft UART слишком низкая скорость, что при большом количестве отладочных данных затормаживает программу и увеличивает потребление. Плюс пришлось бы делать отладочные сообщения отключаемыми. С другой стороны, скорость обмена с GSM модулем не сильно важна, т.к. он включается очень редко.
                По диоду — да, решение не претендует на «схемотехника года». В продукте с высокими требованиями надежности и повторяемости нужно поставить управляемый преобразователь.
                0

                Как работает система когда рядом включен подавитель(глушилка)?

                  0
                  В смысле, если нет GSM связи? Вот так:
                  При неудачной отправке SMS, устройство произведет повторную попытку через 2 минуты, затем через 5, 10, 20, дважды через 40 и затем каждые 12 часов.

                    0

                    А не поздно отправлять? Уже вынесут всё. По хорошему нужно 2 канала связи и контроль канала

                      0
                      Поздно, конечно. Но хотя бы будет информация о том, когда. Устройство больше рассчитано на то, что эмм… нарушитель? не ожидает наличия сигнализации и не предпринимает активных мер. Для дополнительной скрытности можно не вешать на дверь, а спрятать где-нибудь и пользоваться датчиком движения.
                  0

                  Как планируется работа при минусовых температурах акб?

                    0
                    Устройство работает от батареек. Планируется, что выбранные элементы питания должны выдерживать предполагаемый диапазон температур эксплуатации. За время тестирования температура на несколько дней опускалась ниже -20°C и в течение 3 месяцев держалась на уровне -10°C — -5°C. «Обычные AA батарейки» популярного бренда продержались без видимых сбоев питания.
                    –3

                    2 автор — не в обиду, но на эти деньги ты бы лучше сменил входную дверь, а то ворам так и захочется вместо взлома подать тебе на улучшение жизни…
                    еще раз сорри… (или выбирай другой антураж)

                      +1
                      Дверь как дверь. Гараж же, а не вход в дом :)
                        +2

                        "Правильно оформленный вход в помещение работает лучше любой сигнализации"

                        0

                        Не заметил, а есть возможно снять с охраны? Или пока возишься в гараже, каждые 20 мину будет оповещение приходить?

                          0
                          Есть возможность задать расписание с помощью правил. Например, правило «в пн-пт с 9:00 до 9:20 ничего не отправлять». Таких правил можно добавить 15 шт.
                          Если правила нет и включен датчик движения, то, да, оповещения будут каждые 20 мин.
                            0

                            А вдруг, датчик зальет/глюканет/отвалится и система будет всегда в аварии. А вы в отпуске, и будет система слать каждые 20 мин отчеты, пока деньги на счете не кончатся.

                              0
                              Так и было, датчик движения глюканул (как описано в статье). Просто истратил все SMS из пакета. Тут можно, кончено, навернуть дополнительную защиту. Например, после 5 срабатываний подряд рапортовать о неисправности датчика. Больше простых решений не вижу.
                                0

                                Проще, чем отправить команду: «отключись нахрен» и не прилумаешь.

                                  0
                                  Нет возможности принимать сообщения надежно: GSM модуль всегда выключен (сохранение энергии) и включается на короткое время для отправки сообщения.
                          0
                          Без камер наружного наблюдения все эти датчики просто спам. Датчики движения будт срабатывать на животных на раз два. Вам приходит смс, что вы будете делать-то? Звонить в полицию? Не зная, что там реально происходит?

                          Без автономного питания (включая все датчики) система бесполезна. Воры давно уже первым делом вырубают электричество. (gsm глушили, думаю, все-таки экзотика)

                          А нормальная система, с камерами, с автономным питанием, с удобным интерфейсом и архивом будет полезна.
                            0
                            Без автономного питания

                            Описанная конструкция работает только от автономного питания — батареек.

                            По остальной части комментария — во всех классах продуктов есть категории функциональности / цены / надежности / сложности. Я не предлагаю универсальное решение для охраны всего, а только для тех случаев, когда человек сочтет данное устройство достаточным.
                            0
                            1. Не понял, с какой целью используются делители и диоды? Если для согласования уровней, то атмега 5в не боится, хоть и питание 3.3в, это же одинаковые атмеги только частота понижена. Кроме того есть usb-uart с 3.3в логикой.
                            2. Почему не используете спящий режим sim800? Много потребляет? Но тогда можно принимать звонки и смс, а это важно. В гараже можно и 12в аккумулятор использовать хоть от ups, хоть автомобильный (если есть гараж значит и есть полуубитые акб), а лучше литий, Sim800, если не ошибаюсь, под него заточен.
                            3. Можно вместо атмеги плату на stm32 использовать, цена та же, аппаратных uart больше. Библиотеки с примерами все есть, программируется в той же arduino ide.
                              0
                              1. Чтобы ток паразитно не утекал в UART-USB переходник.
                              2. Спящий режим потребляет много. Для достижения работы 6 мес. от батареек пришлось прерывать питание. Внешнее питание не рассматривал: была важна компактность и самодостаточность устройства.
                              3. Можно.
                              0
                              Тема очень интересна, но в направлении автономных «фотоловушек», аналогично тем, что сейчас есть в продаже. Я так понимаю, на базе ардуино+камер и gsm модуля, можно сделать коробку с автономностью хотя бы на месяц, работающую в режиме «сплю по таймеру-проснулся-фото-отправил-сплю дальше» или «сплю-движение-фото-отправил-сплю». Не нашел похожих постов на хабре, может кто подсказать где найти?
                                0
                                Если камера + датчик движения / таймер, то месяц продержится, но если с передачей снимков через мобильную сеть, то вряд-ли на долго хватит. К тому же, не видел GSM модуль способный хотя бы на 3G, не говоря уже о 4G. Не заливать же фото через GPRS.
                                  0
                                  просто интересно, как тогда живут по 3-6мес заводские фотоловушки. Конечно многое зависит от настроек, частоты появления там «зверей» и проч.факторов.
                                  По поводу фото через gprs — возможно решением будет разделить фотографии на те которые будут отправляться с низким разрешением 640*480 например, и те что будут оставаться в памяти устройства в исходном кач-ве. Если честно далёк от программирования, но делал подобные штуки на базе старых мобильных с запросом и управлением по телеграмм каналу (есть готовые боты под андроид). Но производительность телефона и побочные процессы избыточны для таких простых задач, отсюда низкая автономность системы.

                              Only users with full accounts can post comments. Log in, please.