352

Проект 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

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

Найдены возможные дубликаты

+20

И тут рядом дядя Вася сварочником в железку тюк, или недалеко молния шварк, наводочка на микроконтроллер по длинным проводам прыг и контроллер зависает и так и висит, пока по питанию его не перезапустят :-)

Короче, решение хорошее, но нужна доделка.

1. Включить watchdog

2. Сделать защиту от наводок по шлейфам.

3. Ардуина на 16МГц при напряжении ниже 5 вольт работает нестабильно, нужно поменять кварц на 8МГц и поправить фьюзы, а еще включить BOD, чтобы контроллер не повисал при плохом питании

4. GSM модуль тоже любит виснуть, надо проверять его живость и доступность сотовой сети и перезапускать его если он завис или сеть потерял.

раскрыть ветку 22
+2
А если шлейф короткий,необходима защита от наводок или качественного источника питания хватит?
раскрыть ветку 2
+6

Короткий насколько, у меня по датчикам кухни идут два шлейфа длиной по 4 метра (внешний контур температуры и внутренний), шлейфы экранированы, экраны заземлены на корпус в одной точке вместе с ардуиной и её блоком питания, гальванически отвязаны от управляющего компьютера и все равно несколько раз за зиму (в основном в морозную сухую погоду) время от времени watchdog перезапускает повисший контроллер.

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

раскрыть ветку 1
+2

Ардуина работает от 4 вольт, всё стабильно. GSM модуль проверяется на зависание, если не ответил, перезагружается ресетом. У меня в SIM800L настроены будильники. Утром и вечером приходит письмо в одно и тоже время, для контроля, что ардуина не висит.

раскрыть ветку 18
+10

Как говорят мои коллеги "это ошибка выжившего", пока тепло может работать, станет холодно, может начать грустить, а может и не начнет, зависит от факторов при изготовлении. Я не сторонник вылезать за границы даташита, и если там написано 4.5-5.5 при кварце 16МГц, то мне не интересно проверять как оно там за краем работает, и тем более закладывать такое в железо.

раскрыть ветку 7
+1
Dht 11?делаю свой курсач и пожалел что купил 22,но 11 это наверное вообще ужасный датчик
раскрыть ветку 2
0

вы сами писали библиотеки?

раскрыть ветку 1
0

Не, не работает стабильно. И модуль GSM виснет постоянно. А эта платка обеспечивает нормальный ток для него? Я не долго с эти баловался, хотел теплицу подключить. Но если с СМС оно худо-бедно работает, то с GPRS совсем беда. В итоге к соседскому Вайфаю прицепился. Вот это отлично работает. И протокол UDP. чтоб не висло. Поскольку я еще и 20 лет сигнализацией занимался, то скажу - для нее Ардуино не годится. Из-за проблем, озвученных @p0gank .
А так - понравился подход, качество и все остальное. Жаль, что ненадежно. Все равно плюс.

раскрыть ветку 4
+6

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


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


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

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

раскрыть ветку 40
+5

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

раскрыть ветку 3
+1

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

раскрыть ветку 2
+2

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

раскрыть ветку 12
+2

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

раскрыть ветку 4
+1

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

0

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

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

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

раскрыть ветку 22
+1

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

раскрыть ветку 9
0

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

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

раскрыть ветку 11
+5

Пользуюсь больше месяца симкой МТС тариф посекундный без абонентской платы. Там каждый день бесплатно даётся 20 Мб трафика. Хватает на всё. Ни разу ещё деньги с баланса не списывали.

раскрыть ветку 3
0

МТС набирают клиентов, как будет критическая масса придумают как заработать денег. Они прекрасно знают что к чему.

-2

о, какая ценная инфа!

раскрыть ветку 1
+3

При переходе не тариф нужно убедиться, что подключена опция "Базовая тарификация интернета". Другие отключить. Тогда каждый день не будут списывать деньги за интернет. Даётся пакет 20 Мб в день.

+3
Комментарий удален. Причина: данный аккаунт был удалён
раскрыть ветку 1
+5

Спасибо)

+3
Автор, годная статья. Было бы отлично интегрировать в это решение систему зарядки и поддержания заряда от аккумуляторов например ИБП-шных 12в, 7ач.
Как раз бы хватило датчикам, сирене и другим возможным девайсам.
раскрыть ветку 4
+2

Можно добавить как внешнее устройство. Подключать от него.

раскрыть ветку 2
0
Можно. Извиняюсь, я только начал изучать Ардуинки. Вопрос такой - они же могут друг с другом общаться?
раскрыть ветку 1
0
И солнечную батарею!
+2

На STM32L496 в составе CycloneTCP есть пример с PPP, FTP, TLS. Т.е. можно заставить работать с любой почтой (а сейчас большинство почтовых серверов требуют использования TLS) и любым модулем, и даже с обычным USB-свистком. У STM есть встроенный USB-хост.

+2

у тех же китайцев есть готовые варианты не дороже....

раскрыть ветку 8
+4

Хотелось сделать своё. У моей цена чуть более 1000 руб.

раскрыть ветку 4
+2

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

раскрыть ветку 3
раскрыть ветку 2
0

типа того да

раскрыть ветку 1
+1

Добавлено продолжение статьи https://pikabu.ru/story/proekt_gsmgprs_signalizatsii_na_ardu...

+1
Первый годный пост
+1

А можно через полгода эксплуатации вторую статью  с анализом насколько хорошо получилось?

раскрыть ветку 1
+2

Это моя вторая сигнализация на ардуино. Первая работает 1,5 года без зависаний. Просто там всё на смс. Решил что это не оправдано. Если будут проблемы, проект доработаю и отпишусь. Пока всё ОК.

+1
Впервые захотелось разобраться с ардуинкой. Так можно и бизнес замутить). Подпишусь
раскрыть ветку 1
+1

Спасибо :)

+1
Для разнообразия советую посмотреть в сторону blynk в качестве среды взаимодействия.
+1

Круто. Операторы только российские поддерживаются? Как насчет Украины, Белоруси?

раскрыть ветку 1
+3

Любые операторы любой страны. Если не заработает GPRS на стандартных настройках, в файле modem.cpp есть список настроек login и пароль для подключения GPRS.


ADD_OP(0, "MTS", "mts");


ADD_OP(1, "MEGAFON", "gdata");


ADD_OP(2, "Tele2", "");


ADD_OP(3, "MOTIV", "");


ADD_OP(4, "Beeline", "beeline");


Здесь только основные российские операторы. Меняете один из них на свой. И интернет включится.

+1

>>> При этом затраты на обслуживание должны быть минимальными. А лучше чтобы их вообще не было!

За интернет все равно нужно будет платить. У МТС есть интересный тариф для телеметрии. Остальные операторы по разному, могут по крутому трафик округлять каждый час в большую сторону.

раскрыть ветку 4
+2
раскрыть ветку 3
+1

сколько стоит ваш тариф?

раскрыть ветку 2
0

c SIM900 будет же работать тоже? спасибо

раскрыть ветку 1
0

Я думаю будет. AT команды там одинаковые.

0

      Начал осваивать проект с первой части, но, мож я ошибаюсь, последующая модернизация и развитие проекта что-то нарушила или в библиотеках или в скетче, т.к. он даже без правки settings.h не компилируется...

( Arduino: 1.8.9 (Windows 7), Плата:"Arduino Nano, ATmega328P (Old Bootloader)"lto1.exe: internal compiler error: in lto_output_varpool_node, at lto-cgraph.c:624

Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
lto-wrapper.exe: fatal error: C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-gcc returned 1 exit statuscompilation terminated.
c:/program files (x86)/arduino/hardware/tools/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/bin/ld.exe: error: lto-wrapper failed
collect2.exe: error: ld returned 1 exit status
exit status 1
Ошибка компиляции для платы Arduino Nano.*******  Другие скетчи, в т.ч. из примеров, компилируются и загружаются нормально. Что  делаю не так?

раскрыть ветку 4
0

Добрый день. Нужно изменить версию в менеджере плат


Tools > Board > Boards Manager

Wait for downloads to finish.

Click on "Arduino AVR Boards".

Select 1.6.21 from the dropdown menu.

Click "Install".

Wait for installation to finish.

Click "Close".

раскрыть ветку 3
0

Никак не могу скомпелировать скетч все перепробывал. Инструкцию по установке можно?

0

Здравствуйте! Спасибо за оперативный ответ. У меня

установлена версия 1.6.22. А надо откатиться на 1.6.21, правильно? Пока писал поступило предложение обновиться до .23 ;)

раскрыть ветку 1
0

Приветствую! Очень понравился проект. Отличная вещь, Спасибо. Решил повторить, собрал схемку с датчиком движения pir, поправил файл настроек, залил скетч в arduino nano, но вот есть проблема, не приходят письма на почту. Не могу понять, то ли нет GPRS соединения, то ли проблема с настройкой SMTP, как можно это определить? Как проверить работоспособность GPRS соединение? Какая почта должна быть прописана в настройках, у меня xxxxx@yandex.ru, надо ли как-то дополнительно её настаивать? Прошу помощи. По смс всё работает если выключить с помощью DTMF команды GPRS. Симка билайн.  Спасибо.

раскрыть ветку 2
0

Ещё можно попробовать поменять сервер с com на ru

#define SMTP_SERVER F("\"smtp-devices.yandex.ru\",25")

И проверить что ваша почта правильно написана

login@yandex.ru

Если не поможет, напишите мне на почту mihalex101(собака)gmail.com

Вечером будем разбираться.

0

Приветствую! Спасибо за отзыв.

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

1. Проблема в операторе связи. Он рвёт соединение.

- модем не дружит с этой конкретной симкой, попробовать с другой, желательно другого оператора

- не подходящий тариф

- не достаточно денег на счету.

2. Проблема с вашим ящиком. Создать другую почту на яндексе, и попробовать с ней.

3. Не правильные настройки почты

Проверьте логин и пароль для отправляющей почты.

#define SMTP_SERVER F("\"smtp-devices.yandex.com\",25") // почтовый сервер яндекс и порт
#define SMTP_USER_NAME_AND_PASSWORD F("\"login\",\"password\"") // Логин и пароль от почты
#define SENDER_ADDRESS_AND_NAME F("\"login@yandex.com\",\"SIM800L\"")
#define RCPT_ADDRESS_AND_NAME F("\"login@mail.ru\",\"Ivan\"") // Адрес и имя получателя

Включите в настройках вывод отладочных сообщений DEBUG_MODE 1.

Посмотреть в терминале, присваивается ли ip адрес при настройках GPRS соединения, какой ответ приходит при отправке письма. В конце отправки должна возвращаться строка

+SMTPSEND: 1

Это значит что письмо успешно отправлено.

Если там другая цифра, то это код ошибки.

Попробуйте пока это. Дальше будет понятнее куда копать.


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

0

Собирал ли  кто в Протеусе? Если да, могли бы поделиться?

0

Доброго времени. Собрал схему только с 2 датчиками, геркон и объемник, столкнулся с проблемой -не корректно работает, постоянно срабатывает датчик дыма и газа (смотрю сообщения в порте) где копать, что поправить? В идеале хотелось бы видеть скетч и библиотеки с подробными комментариями, так довольно сложно разобраться новичку. Спасибо.


выдержка из монитора порта

WakeUp: Svet OFF.GUARD=0 TEL=1 GPRS=1 SMS=1 GUARD=1 TEL=1 GPRS=1 SMS=1 ALARM!DOOR:1(0)

ALL:DOOR:1(0) FIRE:1(0)

ALARM!GAS:1009

ALL:GAS:1010

ALARM!GAS:1011

ALL:GAS:1010

ALARM!GAS:1010

ALL:GAS:1009

A


ERROR

..................................................AT+CMGS=""


ERROR

.........

раскрыть ветку 2
0

В качестве анонса, делаю следующую версию сигнализации. Можно будет подключать к домашней Wi-Fi сети, управлять ей с телефона через сервис Blynk https://www.blynk.cc/

Добавлять беспроводные датчики по Wi-Fi. Скетч для датчиков тоже появится.

Сделал платы. Пишу новый софт.

Иллюстрация к комментарию
0

Добрый день. У вас на пинах висит всего 2 датчика, а задано больше. Ардуина считывает с пустых пинов случайные значения. Поэтому такой результат.

Вам надо было изменить файл настроек libraries/main_type/settings.h под свою конфигурацию датчиков. По умолчанию там прописаны все датчики, что показаны на схеме. Если у вас их два, то нужно прописать только два. Остальные убрать. Иначе сигнализация думает, что к ней подключены не существующие датчики, опрашивает их, и получает случайные значения. В результате мы видим сообщения о тревоге.

У вас должно быть как-то так


// Сюда надо вписать свои датчики. Размер массива должен равняться количеству датчиков!
# define SENSORS_INIT Sensor sensors[2]={ \
Sensor(DOOR_PIN, DIGITAL_SENSOR, "DOOR", HIGH, 0), \
Sensor(MOVE_PIN, DIGITAL_SENSOR, "MOVE", LOW)};

Геркон должен быть нормально замкнутого типа, иначе не будет работать.


При этом надо убедиться, что ваши датчики подключены к тем пинам, которые прописаны в настройках. Для геркона это DOOR_PIN, он всегда равен 4. Следующий за ним у вас будет пин датчика движения MOVE_PIN, т.е. 5 пин.


В файле настроек у нас прописаны все используемые пины


// Задание пинов для датчиков
// Можно дописать свои и удалить лишние. Первые 3 пина изменять нельзя. Они зарезервированы.
enum pins {
RING_PIN = 2, //2 отслеживает вызовы с модема
POWER_PIN, //3 отслеживает наличие питания
DOOR_PIN, //4 датчик двери (геркон). Один конец на GND, второй на цифровой пин arduino.
MOVE_PIN, //5 все датчики движения вешаем на один пин
RADAR_PIN, //6 RCWL-0516
FIRE_PIN, //7 датчик огня
DHT_PIN, //8 датчик температуры и влажности DHT11, DHT21 или DHT22
BEEP_PIN, //9 пищалка
RECV_PIN = 11, //11 ИК приёмник
BOOT_PIN //12 перезагрузка модема
};

DOOR_PIN и MOVE_PIN уже соответственно 4 и 5, можно оставить так как есть. Остальные пины просто не будут использоваться, т.к. они не прописаны в массиве датчиков.


Но можно удалить лишнее, оставить так:


enum pins {
RING_PIN = 2, //2 отслеживает вызовы с модема
POWER_PIN, //3 отслеживает наличие питания
DOOR_PIN, //4 датчик двери (геркон). Один конец на GND, второй на цифровой пин arduino.
MOVE_PIN, //5 все датчики движения вешаем на один пин
BOOT_PIN //6 перезагрузка модема
};

Обратите внимание, что BOOT_PIN (используется для рестарта SIM800L) в этом случае будет на 6 пину. Если вам нужен другой номер пина, то надо записать BOOT_PIN = номер.

Например

enum pins {
RING_PIN = 2, //2 отслеживает вызовы с модема
POWER_PIN, //3 отслеживает наличие питания
DOOR_PIN, //4 датчик двери (геркон). Один конец на GND, второй на цифровой пин arduino.
MOVE_PIN, //5 все датчики движения вешаем на один пин
BOOT_PIN = 12 //12 перезагрузка модема
};

Так работает перечисление enum в языке С++. Можно через = присвоить значение, значения остальных элементов перечисления будут увеличиваться на 1.


Если вы не собираетесь переделывать скетч, то вам не обязательно знать как там что работает. Там всё довольно запутанно. Пользователю достаточно правильно прописать файл настроек. И всё. Он у меня подробно комментирован. Но видимо не совсем понятно, раз возникают вопросы.


P.S.

Судя по логам у вас включён режим отладки. Когда исчезнут проблемы, зашейте прошивку без этого режима, т.е. пропишите


#define DEBUG_MODE 0

Иначе на мыло будут приходить урезанные сообщения со словом DOWNLOAD.

Этот режим только для поиска багов.


Так же у вас судя по всему не подключен модем.

0

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

-очень много ошибок сыпится при компиляции скаченного исходника http://codepad.org/INVnDriW

- не до конца понятно

1. #else if 1 // Настройки беспроводного ик датчика

2.- перечисление пинов приводится в коде два раза. Зачем?

            enum pins {

                # define SENSORS_INIT Sensor sensors[3]={

            enum pins {

                # define SENSORS_INIT Sensor sensors[2]={

- как изменить приоритет с e-mail на sms? мыло доходит долго.

- как добавить включение/выключение аналоговых пинов по sms?

раскрыть ветку 20
0
0

Добрый день


1. #else if 1 // Настройки беспроводного ик датчика

У меня общий файл настроек для двух скетчей, сигнализации и беспроводного датчика. Которой по сути является такой же сигнализацией, но отправляет сообщения не в модем (которого у него нет), а через ИК канал на сигнализацию. В этом всё их отличие.


Когда мы прошиваем сигнализацию, то в строке

/*
* Далее идут индивидульные настройки как сигнализации,
* так и беспроводного датчика.
* Для прошивки сигнализации в #if пишем 1.
* Для прошивки беспроводного датчика в #if сигнализации пишем 0.
*/
#if 1 // Настройки сигнализации

Ничего не меняем. Будет компилироваться часть кода от

#if 1 // Настройки сигнализации

до

#else if 1 // Настройки беспроводного ик датчика


Там мы настраиваем сигнализацию.


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


Если мы хотим прошить ИК датчик, то в настройках пишем

#if 0 // Настройки сигнализации

Тогда будет компилироваться код, начиная от

#else if 1 // Настройки беспроводного ик датчика

до

#endif // SIGNALKA


Тут можно запутаться. Поэтому я указал в комментарии выше

* Для прошивки сигнализации в #if пишем 1.
* Для прошивки беспроводного датчика в #if сигнализации пишем 0.

Как сделать проще я не знаю.


2.- перечисление пинов приводится в коде два раза. Зачем?
enum pins {
# define SENSORS_INIT Sensor sensors[3]={
enum pins {
# define SENSORS_INIT Sensor sensors[2]={

Два раза потому что для двух разных скетчей.


- как изменить приоритет с e-mail на sms? мыло доходит долго.

Напишите так.  GPRS не будет использоваться


//****************************************************
// Выбор способа получения отчётов (или GPRS, или SMS)
//****************************************************
# define OTCHET_INIT SET_FLAG_ONE(SMS_ENABLE);
//****************************************************

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

//****************************************************
// Выбор способа получения отчётов (или GPRS, или SMS)
//****************************************************
# define OTCHET_INIT SET_FLAG_ZERO(GPRS_ENABLE);SET_FLAG_ONE(SMS_ENABLE);
//****************************************************
- как добавить включение/выключение аналоговых пинов по sms?

Поясните подробнее цель, для которой вы хотите это сделать.


P.S.

Сейчас в исходникая я подправил строку

#else if 1 // Настройки беспроводного ик датчика

Теперь там просто

#else  // Настройки беспроводного ик датчика

Измените у себя, чтобы компилятор не ругался на это место.


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

Если у вас написано # define SENSORS_INIT Sensor sensors[3]={

то дальше должно быть указано ровно 3 датчика. Проверьте.

раскрыть ветку 18
0

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

http://codepad.org/QoiOIgfh

раскрыть ветку 4
0

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

Поясните подробнее цель, для которой вы хотите это сделать.

Удаленное управление включением/выключением обогрева гаража.

управлять ей с телефона через сервис Blynk

А через gprs возможно реализовать тоже самое? Или будет большой объем трафика?

раскрыть ветку 12
0

Модуль sim800l не работает с Теле2 в спб

раскрыть ветку 2
+1

Возможно. Использовал только симки МТС.

раскрыть ветку 1
+1

Билайн работает:)

0
Не совсем понимаю конечное растягивание по дому, вот у меня есть кот. Получается датчики на движение ставить бесполезно? Нужно ставить датчики на открытие окон, двери? Опять же они должны быть беспроводными, ибо тянуть провода (как) по всему дому непонятно как. Датчик дыма и газа то же беспроводной? Как их подружить с самой сигой?
раскрыть ветку 1
+2

У датчиков движения (большинства), можно настроить чувствительность срабатывания. Так же их иногда ставят по 2-3 на комнату. Если сработает только один, считают это ложным срабатыванием. Алгоритм подправить не долго. Тянуть провода конечно проблематично. Либо прицепить беспроводные, либо сделать два отдельных устройства. Эта сигнализация создавалась для небольших помещений, типа гаража, подвала, сарая. Или дачного домика, где нет котов и соседей, и можно использовать микроволновый датчик движения. У меня сигнализация установлена в комнате в общежитии. Этаж не первый, поэтому окно можно не контролировать. Смонтирована непосредственно над входной дверью, к которой приделан геркон.


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

0

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

раскрыть ветку 1
+2

Прикрутить реле дело 5 минут. Задействовать любой свободный пин ардуины. Включать/выключать в режиме тревоги (например сирену), либо в ручном режиме DTMF командой. Буквально несколько строк кода.

0
Прикольная задумка. Все надеюсь сделать самопальную сигналку на авто, только лень мешает.
раскрыть ветку 7
0

сразу прикручивайте к ней GPS и координаты базовых станций, тогда это будет иметь смысл.

раскрыть ветку 6
+1
Да, с но нужно замутить включение только когда спрашивают, угонщики сканят машины на маяки обычно
+1

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

раскрыть ветку 4
0

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

0
В какой ide работаете?
раскрыть ветку 2
+2

Редактор Sublime Text 3 с плагином Stino для Ардуино.

раскрыть ветку 1
0

Спасибо

0

Возьмите STM32, они дешёвые и для ваших нужд не сложные. А по возможностям и стабильности на порядки превосходят. Ардуино это уже совсем для детей, для серьёзных поделок не годится. Из основного нужно ещё: сторожевой таймер(watch dog) что бы не подвисли, проверка gsm модуля на то что он не сдох, проверка что если долго нет сети нужно ресетить всё по питанию.

раскрыть ветку 78
+3

У меня есть проект сигнализации на STM32 c FreeRTOS + ESP8266. Но я его временного забросил. Потом продолжу. Цель как раз была именно в том, чтобы это смог повторить даже ребёнок. Потому что одно название STM32  отпугнёт 80% аудитории. На счёт надёжности ардуины, 1,5 года работает мой первый проект сигнализации, пока без отказов. WTD позже добавлю. Проверка GSM модуля имеется.

раскрыть ветку 6
0

Конечно отпугнет. Лучше тогда сразу Raspbery Pi 3 ставить. На борту своя ОС и можно удаленно настраивать всё. И с 3G модемом не будет проблем, на уровне драйверов подхватит.

раскрыть ветку 5
+3

AtMega 328 промышленный контроллер, не придумывайте ерунду. Отличие только в вычислительной мощности, она тут не нужна.

Ардуина как отладочная плата тоже нормально спроектирована.

раскрыть ветку 70
-3

В оригинале, да, промышленный. И в оригинале он сложен для освоения не специалистом. Но тут то его пользуют как Ардуино. А это несколько другое. Для детских поделок отлично. Как начальная база для освоения МК. По крайней мере за такие деньги. Но если делать что то большее чем игрушка, надо уже брать полноценный МК и тут STM32 самый ходовой и простой. За Ардуино обычно радеют только застрявшие на нём и ленящиеся перескочить на следующий уровень. А автор уже пытается делать сигналку для дома, что выходит за уровень детской поделки. По сути один раз попробовав полноценный МК, назад на Ардуино уже не потянет.

раскрыть ветку 69
-2

А вот мне интересно: а кто по тревоге приедет?) Дешевый китайский ЧОП?

раскрыть ветку 28
+1

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

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

Буквально на прошлой неделе сигналка предупредила об отключении котла и остывании дома (один из датчиков - температурный, настроенный на понижение температуры до плюс 10). Помогла избежать больших потерь от разморозки.

раскрыть ветку 6
0

Я об этом и говорю. А где такие дэбильные ЧОПики растут, что от денег отказываются?

раскрыть ветку 5
+1

Мне проще, сам приеду. Работаю неподалёку. Плюс есть кому позвонить на месте, чтобы проверить. Можно прикрутить сирену. Нужно задействовать всего 1 пин для включения. Если поставить любую покупную сигнализацию в гараж или на дачу, тоже ЧОП не приедет. Зато вы будете знать, что к вам залезли. А не узнаете об этом через несколько месяцев, когда последнее барахло растащат.

раскрыть ветку 5
+1

Я вас понимаю, у вас определенные условия для такой "охраны" есть. Наверно еще пара сотен таких людей найдется, но как профессионал скажу так: Вы или Ваш сосед могут нарваться на серьезные проблемы в виде фомки по голове, или резиновой(не дай бог свинцовой) пули в боку, последствия понятны. Я пытаюсь просто убедить народ в том, что и так понятно - профессиональная охрана, да еще и с такими примочками как у Вас - это лучше чем "хозяин с дубинкой", конечно если он не Рэмбо, хотя тот тоже огребал)

раскрыть ветку 4
+1