Проект 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 запрещен)

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

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

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

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

-очень много ошибок сыпится при компиляции скаченного исходника 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)
Автор поста оценил этот комментарий

Добрый день


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)
Автор поста оценил этот комментарий

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

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

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

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

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

раскрыть ветку (12)
Автор поста оценил этот комментарий
- как добавить включение/выключение аналоговых пинов по sms?
Удаленное управление включением/выключением обогрева гаража.

Добавил в файл modem.cpp команду включение/выключение пинов смс.

Управлять можно пинами с 5 по 21.

Например для А0, который на самом деле имеет номер 14, для включения пишем

set pin 14 on

для выключения:

set pin 14 off

Соответственно А1 это 15 пин и так далее до 21.


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


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


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

У них на сайте пишут что можно, поддерживаются следующие модемы:


GSM/3G:
SIMCom SIM800 series (SIM800A, SIM800C, SIM800L, SIM800H, SIM808, SIM868)
SIMCom SIM900 series (SIM900A, SIM900D, SIM908, SIM968)
A6/A7
M590 (beta)
GPRSbee
Microduino GSM
Adafruit FONA (Mini Cellular GSM Breakout)
Adafruit FONA 800/808 Shield

По трафику не знаю, не пробовал. Мне бы пока через вай фай сделать. Потом если руки дойдут, попробую через GSM

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

Что - то с включением пинов траблы. А так же смс не хочет отправлять. Возможно это режим отладки виноват?
http://codepad.org/V4wK6Zfq
Могу ли еще уточнить, в каком файле можно изменить номера пинов rx/tx для модема. При перезалитии прошивки приходится отпаивать питание и землю модема.

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

Да, в режиме отладки смс не уйдёт. Надо отключать. В команде смс надо писать только цифры, A0 не поймёт. Вчера пробовал смс с 6 пином, светодиод включился и выключился.


Питание и земля модема не влияют. Там надо отсоединить пины RX, TX от ардуины.

Можно сделать через джамперы. А лучше модем вообще не припаивать. А впаять посадочные колодки, и сажать в них

https://ru.aliexpress.com/store/product/10PCS-Single-Row-Pin...


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

Могу ли еще уточнить, в каком файле можно изменить номера пинов rx/tx для модема.

rx и tx не меняются, они хардварные. Могут работать на всех скоростях. Чтобы использовать другие пины, надо использовать библиотеку SoftwareSerial.h. Она работает только на скорости 9600. Там можно любые пины задать. Тогда в файле main_type.h надо будет переписать дефайны


#define SERIAL_PRINT mySerial.print

#define SERIAL_PRINTLN mySerial.println


В файле modem.cpp в глобальных переменных добавить

SoftwareSerial mySerial(rxPin, txPin);


где rxPin, txPin - ваши новые пины


после 157 строки дописать

mySerial.begin(9600); // другие скорости не работают

Перевести модем на скорость 9600


Должно скомпилиться

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

Огромное спасибо.  Пока что все собрано на проводах из за отсутствия макетных плат. Позже буду собирать на макетке под пайку. Но с смс-ками все одно беда. С email работает лучше.

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

Про смски я ответил как поправить. Всё можно настроить.

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

Сегодня вечером залью обновлённую прошивку. И sms, и email будут приходить быстрее. Без всяких настроек.

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

Доброго. Сейчас залил обновлённый скетч. Оптимизировал подключение к GPRS. В файле настроек добавил флаг SET_FLAG_ONE(CONNECT_ALWAYS)

# define OTCHET_INIT SET_FLAG_ONE(GPRS_ENABLE);SET_FLAG_ONE(SMS_ENABLE);SET_FLAG_ONE(CONNECT_ALWAYS);

Если он в 1, то GPRS соединение всегда подключено, и отправка мыла проходит быстрее. У меня укладывалось в 20 сек. Если написать SET_FLAG_ZERO(CONNECT_ALWAYS), то соединение будет устанавливаться перед каждой отправкой, а после разрываться. Соответственно это чуть дольше. Но если у вас тариф не безлимитный, а оплата по факту входа в интернет, то это оправдано.

СМС тоже почти сразу приходят. Пробуйте.

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

В рабочем режиме, после запуска с параметрами


define OTCHET_INIT SET_FLAG_ONE(SMS_ENABLE);SET_FLAG_ONE(GPRS_ENABLE);


Приходит email вида:


1,"89200000000",129,"ADMIN"


2,"+79270000000",145,"ADMIN


Пины включает, и выключает.

Задержка email, после включения/выключения пина - 2 минуты

После отправки сообщения вида : 6#

пришел ответ, на email

Svet ON.GUARD=0 TEL=1 GPRS=1 SMS=1 Svet ON.GUARD=0 TEL=1 GPRS=1 SMS=1 Svet ON.GUARD=0 TEL=1 GPRS=1 SMS=1 Svet ON.GUARD=0 TEL=1 GPRS=1 SMS=1 Svet ON.GUARD=0 TEL=1 GPRS=1 SMS=1


Нет температуры, хотя dht подключен, библиотека включена


При запросе баланса, приходит email:

CLIP: "+79270000000",145,"",0,"ADMIN",0

+CUSD: 0, "Balance:236,25r,Limit:0r", 15

После изменения
# define OTCHET_INIT SET_FLAG_ONE(SMS_ENABLE);SET_FLAG_ZERO(GPRS_ENABLE);
email -ы перестали приходить, но с смс-ками работает вообще плохо. задержка отчетов огомная, плюсом сигнализация начинает путаться при возникновении внешнего воздействия. она в одной смс кусками присылает несколько.

AT+CMGS="+79270000000"

ALARM!DHT:t=46C,h=26%

ALL:DHT:t=53C,h=23%

ALARM!DHT:t=51C,h=20%

Svet ON.GUARD=1 TEL=1 GPRS=0 SMS=1 DOOR:0(0) DHT:t=44C,h=17% MOVE:0(0) ALL:DHT:t=45C,h=17%

ALARM!DHT:t=46C,h=19%

ALL:DHT:t=53C,h=19%

ALARM!DHT:t=52C,h=20%

ALL:DHT:t=51C,h=0%

После снятия с охраны, через 6 минут пришло сообщение вида:

AT+CMGS="+79270000000"

GUARD=0 TEL=1 GPRS=0 SMS=1

При снятой охране, баланс возвращает за ~1.5 минуты

AT+CMGS="+79270000000"

+CUSD: 0, "Balance:236,25r,Limit:0r", 15


Я так понимаю, скорость обмена данными atmel с sim800 не будет заметно влиять на скорость работы?

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

СМСок о инициализации при первом включении не приходит, как приходило на email.

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

Да, на емейл идёт всё подряд, т.к. на расходы денег это не влияет. А информация лишней не бывает. По смс отправляется только самое главное, для экономии.

Автор поста оценил этот комментарий
1,"89200000000",129,"ADMIN"
2,"+79270000000",145,"ADMIN

Это при старте он присылает записанные в симкарту номера телефонов.

Два админа быть не должно. Наберите команду 10#

Она сотрёт все номера. Потом позвоните на сигнализацию. Ваш номер сам добавится как Админ.


Задержка email, после включения/выключения пина - 2 минуты

Там выставлена задержка при включении GPRS 50 сек. Для включения GPRS нужно два цикла по 50 сек. Поэтому мыло приходит через 2 мин. С такой задержкой GPRS гарантировано включается. Если покрытие хорошее, время можно уменьшить до 20 сек. Просто иногда этого не хватает, модем висит, пока его не отпустит. На это уходит секунд  45-50. Если время уменьшить, а модем висит, GPRS никогда не включится. Намучился я с ним.

Время задаётся в файле modem.cpp дефайном в 40 строке

#define REGULAR_OPROS_TIME 50000

Попробуйте снизить его до 20 сек. Емейл будет приходить через минуту. Если у вас только смс отправка, поставьте там 10 сек. СМС будут приходить быстро.

Svet ON.GUARD=0 TEL=1 GPRS=1 SMS=1 Svet ON.GUARD=0 TEL=1 GPRS=1 SMS=1 Svet ON.GUARD=0 TEL=1 GPRS=1 SMS=1 Svet ON.GUARD=0 TEL=1 GPRS=1 SMS=1 Svet ON.GUARD=0 TEL=1 GPRS=1 SMS=1

Скорее всего при включении питание прыгало, срабатывало прерывание, которое его мониторит, поэтому столько повторов.

Нет температуры, хотя dht подключен, библиотека включена

Пока вы не включите режим охраны GUARD_ON командой 1#, датчики не буду отображаться.

Сначала 1#, потом уже 6#


При запросе баланса, приходит email:
CLIP: "+79270000000",145,"",0,"ADMIN",0
+CUSD: 0, "Balance:236,25r,Limit:0r", 15

CLIP: "+79270000000",145,"",0,"ADMIN",0 - это сообщение кто звонил

+CUSD: 0, "Balance:236,25r,Limit:0r", 15 - это ответ оператора


AT+CMGS="+79270000000"
ALARM!DHT:t=46C,h=26%
ALL:DHT:t=53C,h=23%
ALARM!DHT:t=51C,h=20%
Svet ON.GUARD=1 TEL=1 GPRS=0 SMS=1 DOOR:0(0) DHT:t=44C,h=17% MOVE:0(0) ALL:DHT:t=45C,h=17%
ALARM!DHT:t=46C,h=19%
ALL:DHT:t=53C,h=19%
ALARM!DHT:t=52C,h=20%
ALL:DHT:t=51C,h=0%

В настройках я выставлял тревогу при 45 градусах, вот у вас и срабатывает ALARM

Sensor(DHT_PIN, DHT11, "DHT", LOW, 10, 45)};

Выставьте свою температуру. Горячо у вас там.

После снятия с охраны, через 6 минут пришло сообщение вида:
AT+CMGS="+79270000000"
GUARD=0 TEL=1 GPRS=0 SMS=1

Очень долго. Должно было через минуту. Если что-то пошло не так. А повтор только через 50 сек. Если время не изменить. Надо уменьшить в дефайне до 10 сек.


Я так понимаю, скорость обмена данными atmel с sim800 не будет заметно влиять на скорость работы?

Вообще никак.

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

Сделал изменения в файле modem.cpp


теперь там два отдельных дефайна для GPRS и SMS

// Выставляем тайминги (мс)
// время между опросами модема на предмет зависания и не отправленных смс/email
#define REGULAR_OPROS_TIME_GPRS 50000
#define REGULAR_OPROS_TIME_SMS 10000

Обновитесь. Если сообщения приходят долго, играйтесь с их настройками. Для начала можете уменьшить REGULAR_OPROS_TIME_GPRS до 20000

#define REGULAR_OPROS_TIME_GPRS 20000

Если ещё уменьшить, GPRS может не успеть включиться.

Играйтесь.

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

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

http://codepad.org/QoiOIgfh

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

У вас скорее всего датчики не правильно прописаны.

Вы лучше пришлите мне свой файл настроек. Личные данные там сотрите. И скажите какие датчики на какие пины у вас фактически присоединены.

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

Загуглив ошибки, на иностранном сайте нашел таки решение:

An easier, though less desirable, workaround is to roll back Arduino AVR Boards to 1.6.21:


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".

С этим компилятором хоть и есть предупреждения, но прога собирается и работает.

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

У меня версия Arduino IDE 1.8.5. Всё собирает.

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

Проверил у себя, этот пакет тоже установлен. Помнится, были какие-то проблемы раньше, так же решил :)

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