Проект GSM/GPRS сигнализации на Arduino

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

Для вожделенной халявы пришлось отказаться от традиционных смс оповещений, и освоить отправку писем на электронную почту. При правильно подобранном тарифе, сигнализация не тратит денег с баланса. При этом мы получаем по e-mail всю информацию о работе сигнализации, сработавших датчиках, действиях пользователей. Такой роскоши не добиться с помощью платных смс. Управление сигнализацией реализовано на основе DTMF команд. Если у вас один оператор связи на основном телефоне и на сигнализации, с бесплатными звонками внутри сети, или имеется пакет бесплатных минут, то управление сигнализацией тоже будет бесплатным. В противном случае всегда можно отправить команду в течении первых 3-х секунд. И так же не платить. Заинтриговал? Тогда прошу под кат.

Первым делом составим техническое задание:

1) Оповещение звонком Админа при срабатывании датчика.

2) Отправка e-mail с подробностями.

3) Отправка e-mail о действиях пользователей.

3) Наличие резервного питания на случай отключения основного.

4) Управление сигнализацией при помощи DTMF команд и смс.


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

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

В данном реализации были применены следующие сенсоры и модули:

1. Геркон NC типа, как датчик открытия двери.

2. Пироэлектрический инфракрасный датчик движения HC-SR501.

3. Датчик газа и дыма MQ-2.

4. Микроволновый датчик движения RCWL-0516. Видит сквозь препятствия и стены. Хорош для охраны дачи или частного дома. В квартире будут частые ложные срабатывания на соседей за стенкой или бегающих собачек и котиков.

5. Датчик пламени.

6. Датчик температуры и влажности DHT11.

7. Для подачи звуковых сигналов при выполнении команд использована пищалка (зуммер). В готовом изделии не обязателен.

8. Плата контроля заряда-разряда лития на основе микросхемы TP4056 с защитой от перезаряда и разряда.

9. Ардуино Nano V3. Можно заменить 5 вольтовой Ардуино pro mini.

10. В качестве GPRS GSM модема выбран недорогой, но хороший модуль SIM800L. Он имеет небольшие размеры. Умеет работать с DTMF командами, звонить, отправлять смс и e-mail. Смс дороги, а вот электронные письма можно слать практически бесплатно. Чем мы в дальнейшем и воспользуемся!


Датчиком открытия двери (окна) у нас служит нормально закрытый (NC тип) геркон. В случае отсутствия электричества наша ардуина будет отправлена в сон, и разбудить её смогут три вещи: сработавший геркон, появление внешнего питания (сеть), или сигнал RING с модема в случае звонка. Но это мы уже забежали вперёд.


Схема соединения.

Проект GSM/GPRS сигнализации на Arduino Сигнализация, Arduino, Sim800l, Gsm, Gprs, Длиннопост
Проект GSM/GPRS сигнализации на Arduino Сигнализация, Arduino, Sim800l, Gsm, Gprs, Длиннопост
Проект GSM/GPRS сигнализации на Arduino Сигнализация, Arduino, Sim800l, Gsm, Gprs, Длиннопост

Допустим мы всё собрали как надо. Чтобы сигнализация заработала, первым делом надо заполнить файл настроек, находящийся по следующему пути libraries/main_type/settings.h


В строке

Проект GSM/GPRS сигнализации на Arduino Сигнализация, Arduino, Sim800l, Gsm, Gprs, Длиннопост

за место 115200 необходимо указать скорость, на которой работает ваш модем. Как определить скорость работы модема, можно найти в интернете. Не буду на этом заострять внимание.


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

Проект GSM/GPRS сигнализации на Arduino Сигнализация, Arduino, Sim800l, Gsm, Gprs, Длиннопост

Можно оставить всё как есть. Не подключенные датчики на работу не повлияют.

Далее перечисляются пины, на которых висят наши модули. Первым у нас будет пин RING модема. Он соответствует пину 2 ардуино. Т.к. это обычное перечисление, номер следующего пина будет на один больше предыдущего, т. е. 2, 3, 4 и т. д. Если вы закомментировали какие-то модули выше, то их пины не будут учитываться в перечислении.

Проект GSM/GPRS сигнализации на Arduino Сигнализация, Arduino, Sim800l, Gsm, Gprs, Длиннопост

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

Далее нам надо настроить отправку e-mail.

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

Для яндекса у нас такие параметры сервера и порта:

Проект GSM/GPRS сигнализации на Arduino Сигнализация, Arduino, Sim800l, Gsm, Gprs, Длиннопост

Далее за место слов login и password впишите логин и пароль от вашей почты

Проект GSM/GPRS сигнализации на Arduino Сигнализация, Arduino, Sim800l, Gsm, Gprs, Длиннопост

Затем укажите полное название вашей почты и имя отправителя. В данном случае у нас указан отправитель SIM800L. Можете написать что-то своё.

Проект GSM/GPRS сигнализации на Arduino Сигнализация, Arduino, Sim800l, Gsm, Gprs, Длиннопост

Теперь впишите название почты получателя и его имя. На этот ящик будут приходить письма. Для отправки и получения можно указать один и тот же ящик. Тоже будет работать.

Проект GSM/GPRS сигнализации на Arduino Сигнализация, Arduino, Sim800l, Gsm, Gprs, Длиннопост

Если вы хотите отправлять письма сразу на два или три ящика , раскомментируйте вот эти дефайны, и впишите имя почты

Проект GSM/GPRS сигнализации на Arduino Сигнализация, Arduino, Sim800l, Gsm, Gprs, Длиннопост

Поздравляю! На этом настройки закончены. Можно прошивать ардуину.


Как работает сигнализация.

Внимание! Сигнализация управляется только с номеров, записанных в телефонную книгу симкарты.

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

Администратор — единственный пользователь, который может отправлять DTMF и смс команды.

Для удалённого добавления пользователя в телефонную книгу Администратор должен отправить смс вида

AT+CPBW=,"+xxxxxxxxxxx",145,"USER"
где +xxxxxxxxxxx - номер телефона
USER - имя абонента

Модем настроен на поднятие трубки при звонке с номера Админа. Это сделано для возможности использовать DTMF команды. Звонки с других номеров будут сбрасываться.

Администратор может отправлять DTMF команды из списка ниже. Если команда принята, сигнализация сбросит звонок. Отчёт о выполнении команды придёт на почту. Любая команда представляет собой цифру и знак #, который означает завершение ввода. После этого модем завершит звонок и выполнит полученную команду.

Проект GSM/GPRS сигнализации на Arduino Сигнализация, Arduino, Sim800l, Gsm, Gprs, Длиннопост

Команды, не вошедшие в список, считаются USSD запросами. Например, мы хотим узнать баланс телефона. USSD запрос баланса нашего оператора *xxx#

где xxx — цифры.

Отправляем DTMF команду xxx#. Она будет подставлена в USSD запрос. Ответ оператора будет переслан на почту.


Порядок включения.

Подать питание на сигнализацию.

Дождаться прихода e-mail. Сигнализация загрузилась.

По умолчанию режим охраны выключен. При звонке любого зарегистрированного номера (кроме админа) сигнализация будет ставить/снимать с охраны и отправлять отчёт на почту. Звонок будет сброшен. При звонке с номера Администратора модем поднимает трубку и ждёт DTMF команду. Админ может поставить/снять с охраны сигнализацию командой 1# и 2# соответственно. После ввода команды звонок завершится сам.


Режимы работы:

Тревога.

При срабатывании одного из датчиков включится режим тревоги. На телефон Админа поступит звонок. Его надо сбросить. На почту будут отправлены показания сработавшего датчика. Продолжительность режима тревоги задана в файле настроек дефайном ALARM_MAX_TIME. По умолчанию 60 секунд. В течение этого времени идёт сбор статистики о сработавших датчиках. Когда время истечёт, информация будет отправлена на почту, а счётчики срабатываний обнулятся. Если датчики снова сработают, всё повторится.


Выключение сетевого питания. Режим низкого энергопотребления.

При пропадании электричества на 3 пине ардуины появится низкий уровень. Сигнализация переключится на питание от батареи. На почту придёт сообщение, что свет пропал Svet OFF. После этого, для экономии энергии батареи, ардуина уйдёт в сон, модем будет переведён в режим низкого энергопотребления.

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

При появлении электричества ардуина проснётся, переведёт модем в обычный режим работы, и отправит сообщение на почту Svet ON.


Поддерживаемые операторы.

Прошивка поддерживает основных российских операторов:

МТС, Билайн, Мегафон, Теле2. Если у вас другой оператор, и не отправляется e-mail, пишите в комментариях. Будем добавлять.


На этом всё. Скачать прошивку можно здесь https://github.com/wisenheimer/Arduino

Вопросы пишите в комментариях :)

Arduino & Pi

1.4K постов20.6K подписчика

Добавить пост

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

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

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

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

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

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

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

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

Датчик газа, который вы выбрали, имеет ну очень хреновую особенность, обусловленную принципом его работы: он принимает всё и вся: от спиртов от одеколонов, следов метана, даже если вы в него дыхнёте, то он сработает с вероятностью в 80%. А после попадания на него газов или того же спирта от канифоли, его надо прожаривать сутки. Почитайте даташит.
Перейдите на другой.


И тут всё верно расписали: #comment_127676610


датчик DHT11 - вещь хреновая, уже если хотите и влажность, то берите DHT22

А лучше si7021
Можете и CO2 прикрутить: MH-Z19b (именно B - в нём нет заморочек с калибровкой).

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

Лучше BME280 хоть и дороже, но практически не врет, а если влажность не нужна, то копеечный DS18B20 самый замечательный.

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

а BME280 разве не давление?..
я как-то их использовал

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

BMP280 - давление и температура, BME280 - давление, температура и влажность.

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

а, точно! BMP :) - я так запоминал  :)

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

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

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

Кстати о бесхозности, литий очень не любит морозы, и ниже -5 безвозвратно деградирует, так что держи аккумуляторы там где теплее или лучше переходи на свинец, ему не нужна CC-CV зарядка да и к морозам он куда терпимее. LiFePo кстати не панацея, у него рабочее напряжение 3.0-3.5В

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

Сигнализация установлена в отапливаемом помещении. А так замечание верное. Спасибо)

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

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

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

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

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

Они еще не горят при деформации.

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

наше дело предупредить )

Автор поста оценил этот комментарий
Mq-2 от батареек долго не протянет потребление у него дикое, внутри датчика нагревательный элемент закрытый сеткой металлической от воспламенения
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

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

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

подскажите какой вы использовали конденсатор и какие резисторы?
также интересует возможно ли использовать замыкающий геркон (нормально разомкнутый)? быть может поделитесь где брали разомкнутый, в Спб найти не могу

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

Добрый вечер. Электролитический конденсатор 1000 мкФ или больше по питанию на выходе с аккумулятора, нужен для нормальной работы модема. Чем ближе он будет к ножкам модема, тем лучше. Ещё можно добавить керамический конденсатор 0,1мкФ между ножками 5В и землёй Ардуины для минимизации помех. Резисторы у меня по 10 кОм, можно использовать любые от 2,2 кОм и выше. Нормально замкнутый геркон можно купить у китайцев https://ru.aliexpress.com/item/MC-38-1pair-Wired-Door-Window...


Если использовать нормально разомкнутый геркон, один его конец нужно подключить к +4,2В батареи через резистор в несколько сот Ом, чтобы ограничить протекающий ток. Второй конец на пин 4 Ардуины. И этот же пин соединить с землёй через резистор 10 кОм (или близкого номинала). Тогда при замыкании геркона на пине будет +4,2В, при размыкании 0. Как и с герконом NC типа.

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

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

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

На ютубе полно уроков. У Алекса Гайвера есть цикл уроков, и интересный канал. Посмотрите https://alexgyver.ru/arduino_lessons/

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

Датчик СО2 стоит под 20 тыс. рублей и не нужен и даром, только голову забивать себе.

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

вы путаете крутые сертифицированные. Мы же говорим о любительских конструкциях на NDIR

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

Я смотрел все конструкции. Датчики оптические, очень сложная конструкция, любой вариант очень дорогой.

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

датчик CO2 - 1 343,51 руб

https://www.aliexpress.com/item/1pcs-MH-Z19-NDIR-CO2-Sensor-...


датчик твёрдых частиц - 960,63 руб

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

Подешевел, если он еще и работает по нормальному вообще хорошо!

Вот статьи по нему

https://habr.com/post/391157/

https://mysku.ru/blog/aliexpress/40219.html


Но все равно в быту СО2 не нужен. Люди начинают пугаться показания типа 1000 ppm ужас-ужас, хотя это безвредно, начинают проветривать, получают сквозняки, сухой воздух и только больше болеют. Не имеет значения сколько СО2 в воздухе, если в легких 50 000 ppm на выдохе.

Формальдегиды, пыль, положительные ионы вот это важнее. Ну и влажность, зимой везде очень сухой воздух.

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

я с ними (еще версии без буквы b) уже 2 года, партия устройств для дома. Писать как бы не могу - ограничен условиями договора, но там всё просто: МК + данные по UART
В головном офисе возили в калибровочную камеру - показания в заявленных пределах
а, Вы наверное, фирменные от Шведов видели? те да, цена- писец по-полной! тоже, только в баксах :)

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

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

Надо попробовать.

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

Мне они интересны как датчики работы или неработы вентиляции. СО2 до лампочки, безвреден по сути. Но где резко растет уровень СО2 там и более опасные вещества могут быть, всё что угодно, формальдегиды от мебели, пыль, плесень, споры, ионизация ненужная. Нужно же чтобы хоть немного это всё вентиляция убирала. А есть помещения где вентиляции нет вообще.

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

у меня проблемы с лёгкими (думаю, и пайка повлияла), стал кумекать над вентиляцией.
А реально в уже построенном доме и не сделать по уму. Даже примерно - трудно. Ну не прокладывать же трубы вентиляции по стенам...
Пока оптимальным кажется Тион. Но монтировать придётся самому: в мою глушь они вряд-ли поедут :)

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

У меня тоже дом построенный. Пока вентиляции нет, дом под 200 метров и так сквозит даже слишком. Но можно и сделать, в некоторых комнатах трубу на чердак вывести, в некоторых в подвал. И приток воздуха через фильтр, а идеале канальный кондиционер...

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

сложно, дорого и ненадёжное как-то...

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

интересно, как вы думаете, могли бы эти китайские датчики определить повышенный уровень СО, и запищать, тем самым спасти кучу народа?

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

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

Речь о СО2 датчиках, а вы о СО датчиках.

Задержите дыхание на 10 секунд, организм мигом определит повышенное содержание СО2 и дасти сигнал жжением в легких и тонизацией дыхательного центра. СО2 полезных газ, без него дыхательный центр не работает. Аквалангистам в некоторые смеси (где гелий и подобное) добавляют СО2 чтобы дышать не "забывали".

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

просто я слышал(и выше писали) что такие датчики реагируют на все газы, от со2, СО, до метана. так какая разница если он на все подряд реагирует? среагировал - значит что то не так - иди разбирайся

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

CO2 инертный газ, сомневаюсь что на него сенсор сработает. СО2 детектируют оптическими датчиками, лазер в зеркальной камере, по ослаблению луча определяют концентрацию...

Обычные газы химическими простыми датчиками определяют.

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

понял. тогда вычеркиваем СО2.

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

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

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

просто на ардуине(а если есть принтер, то и на атТине) такое можно за 200рэ сделать, а сколько историй про то как целыми семьями погибали... 

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

взять каталитический, к нему стабилизированный БП 6в 1а и пищалку на транзисторе. Выйдет рублей 600.
Массово продаётся на том же Али. Я с них и начинал.
https://www.aliexpress.com/item/Home-Security-85dB-Warning-u...

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

300рэ. мдее, городить свой колхоз не имеет смысла))

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

вот )

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

А не про них ли говорили, что там простой датчик газа, который не СО определяет, а наличие просто постороннего газа в воздухе?

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

нет
вообще, датчиков море. Есть такие, что пофига на что реагировать, а бы хим.реакция была, плёнка поменяла параметры. См. описания, я в химии не ахти как...

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку