Скетч для gsm ардуино

Сигнализация / удаленный мониторинг за датчиками по GSM/GPRS

Введение:

В этом уроке мы создадим систему удаленного мониторинга и охраны дома, используя GSM/GPRS Shield.

При выполнении одного из заданных сценариев модуль будет отправлять СМС или звонить Вам на телефон, а в режиме ожидания по запросу сможет отправлять СМС с текущим состоянием системы.

Видео:

Нам понадобится:

  • 1х Arduino / Piranha UNO;
  • 1х GSM/GPRS Shield A6;
  • 1х Battery Shield;
  • 1х Trema Shield;
  • 1х Trema-модуль Цифровой термометр;
  • 1х Цифровой термометр (герметичный);
  • 1х Trema-модуль Датчик газа MQ-2 (широкого спектра);
  • 1х ИК-датчик движения HC-SR501;
  • 1х Магнитный извещатель (геркон);
  • 1х Гарнитура;

Для реализации проекта нам необходимо установить библиотеки:

  • iarduino_GSM — для работы с GSM/GPRS Shield;
  • OneWhire — для работы с датчиками фирмы Dallas;
  • DallasTemperature — для работы с цифровыми термометрами DS18B20;
  • SoftwareSerial — библиотека входит в базовый набор Arduino IDE и не требует установки;

О том, как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki — Установка библиотек в Arduino IDE.

Описание работы системы удалённого управления:

  • После подачи питания дождитесь получения смс с уведомлением о том, что инициализация прошла успешно и модем GSM зарегистрировался в сети. После этого устройство готово к работе.
  • Устройство может принимать сообщения с командой «ОТЧЁТ»;
  • После правильно написанной и отправленной СМС дождитесь обратного сообщения с данными об актуальном состоянии системы;
  • Так же, в устройстве есть несколько сценариев работы с датчиками:
    • При сработке любого из датчиков на телефон абонента отправляется СМС с уведомлением и актуальным значением датчика;
    • При сработке некоторых особо важных датчиков устройство отправляет СМС с уведомлением, а затем совершает звонок на указанный в коде номер, благодаря чему абонент может услышать, что происходит вокруг устройства.

Схема сборки:

Arduino / Piranha UNO:

Batery Shield:

Установите Battery Shield на Arduino / Piranha UNO:
Во время установки Battery Shield должен быть в выключенном состоянии.

GSM/GPRS Shield:

На плате GSM/GPRS Shield A6 имеется слот для SIM-карт и переключатель UART. Установите SIM-карту в слот, выберите положение переключателя RX-7/TX-8.

Trema Shield:

Гарнитура:

Trema-модуль Цифровой термометр:

Trema-модуль Датчик газа:

Цифровой термометр (герметичный):

Обратите внимание, что между информационным проводом (жёлтый) и проводом питания 5В (красный) установлен резистор 10кОм.

ИК-датчик движения HC-SR501

Магнитный извещатель (геркон):

Обратите внимание, что от информационного провода (жёлтый) через резистор 10кОм подключается провод GND (чёрный).

Код программы (скетч):

Алгоритм работы скетча:

Обратите внимание на то, что при многократной отправке СМС с одинаковым текстом, возможно блокирование сообщений вашим оператором и внесение номера в «спам».

До кода void setup() определяются номера выводов, объявляются переменные и функции, подключаются библиотеки, и создаются объекты для работы с ними.

Перед загрузкой скетча не забудьте задать в переменной number[] номер телефона, куда будет приходить смс-уведомление о пройденной идентификации!

В коде void setup() конфигурируются выбранные выводы, инициируется работа GSM/GPRS Shield, выполняется цикл ожидания готовности GSM/GPRS Shield к работе (регистрация в сети оператора). И, после выполнения всех указанных действий, выполняется оповещение о готовности к работе, путем отправки смс на указанный номер.

Код void loop() выполняется в цикле. При получении СМС или при наступлении события, указанного в сценарии кода, устройство отправляет сообщение абоненту или совершает тревожный звонок. Чтобы после наступления события модуль не начал непрерывно отправлять сообщения или совершать звонки, в код была добавлена временная задержка delta_time , в течении которой модуль игнорирует повторные сработки. По истечении этого времени, если ничего не изменилось, модуль повторно отправит СМС или совершит тревожный звонок.

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

Сам код можно разделить на блоки:

Датчик газа:

Задав граничное значение в переменной MAX_GAS_VOLUME в самом начале скетча, тем самым мы устанавливаем правила отправки СМС от модуля пользователю.

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

Если же концентрация в норме, то данные будут внесены в строку Text , которая при запросе пользователя будет выслана ему по СМС вместе с показателями других модулей.

Датчик температуры внутренний:

Указав в переменных MIN_TEMP_IN и MAX_TEMP_IN границы допустимых температур, настроим модуль на работу с цифровым термометром, расположенным внутри помещения.

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

Если температура внутри помещения в норме, то данные будут внесены в строку Text , которая при запросе пользователя будет выслана ему по СМС вместе с показателями других модулей.

Датчик температуры внешний:

Указав в переменных MIN_TEMP_OUT и MAX_TEMP_OUT границы допустимых температур, настроим модуль на работу с цифровым термометром, расположенным снаружи помещения.

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

Если температура снаружи помещения в норме, то данные будут внесены в строку Text , которая при запросе пользователя будет выслана ему по СМС вместе с показателями других модулей.

Датчик движения:

Проверяем, нет ли движения в радиусе действия датчика:

  • Если движение замечено, то модуль отправляет СМС абоненту на номер, указанный в переменной number , далее ждёт время waiting_time и после этого совершает тревожный звонок на тот же номер.
  • В переменной gsm.SOUNDdevice указан параметр GSM_HEADSET , что означает, что на стороне модуля установлена гарнитура.
  • Тревожный звонок можно настроить:
    • Модуль совершает тревожный звонок «до победного», пока абонент не снимет трубку или не начнёт работать автоответчик;
    • Модуль совершает тревожный звонок, а после того, как трубка будет снята, ограничит разговор на время, указанное в переменной diall_waiting ;
  • Если движение не замечено, то данные будут внесены в строку Text , которая при запросе пользователя будет выслана ему по СМС вместе с показателями других модулей.

Датчик состояния(геркон):

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

  • Если датчик разомкнут, то модуль отправляет СМС абоненту на номер, указанный в переменной number , далее ждёт время waiting_time и после этого совершает тревожный звонок на тот же номер.
  • В переменной gsm.SOUNDdevice указан параметр GSM_HEADSET , что означает, что на стороне модуля установлена гарнитура.
  • Тревожный звонок можно настроить:
    • Модуль совершает тревожный звонок «до победного», пока абонент не снимет трубку или не начнёт работать автоответчик;
    • Модуль совершает тревожный звонок, а после того, как трубка будет снята, ограничит разговор на время, указанное в переменной diall_waiting ;
  • Если датчик замкнут, то данные будут внесены в строку Text , которая при запросе пользователя будет выслана ему по СМС вместе с показателями других модулей.

Запрос отчёта:

Модуль проверяет раз в секунду, нет ли входящего сообщения. Если сообщение есть, то модуль проверяет, совпадает ли номер, с которого пришло сообщение, с номером, указанным ранее в переменной number :

  • Если номер совпадает, то модуль проверяет текст сообщения:
    • Если в тексте сообщения указана команда из переменной Func , то модуль отправляет ответное СМС с полным отчётом по всем датчикам;
    • Если в тексте СМС ошибка, то модуль в ответном СМС уведомит об этом;
  • Если номер не совпадает, то модуль будет игнорировать текст СМС;

Ответ на входящий звонок:

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

В переменной gsm.SOUNDdevice указан параметр GSM_HEADSET , что означает, что на стороне модуля установлена гарнитура.

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

Источник

Удаленное управление домом по GSM/GPRS

Введение:

В этом уроке мы создадим систему удаленного управления домом по смс, используя GSM/GPRS Shield.

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

Видео:

Нам понадобится:

  • 1х Piranha UNO
  • 1х GSM/GPRS Shield;
  • 1х Battery Shield;
  • 2х Реле;
  • 2х Силовой ключ;
  • 1х Линейный привод 12В;
  • 1х Светодиодная лента 12В;
  • 1х Источник питания 12В;
  • 1х Вентилятор(кулер) 12В;
  • 2х Лампочка;

Для реализации проекта нам необходимо установить библиотеки:

  • iarduino_GSM- для работы с GSM/GPRS Shield;
  • Библиотеки SoftwareSerial входит в базовый набор Arduino IDE и не требует установки;

О том, как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki — Установка библиотек в Arduino IDE.

Описание работы системы удалённого управления:

  • После подачи питания дождитесь получения смс с уведомлением о том, что инициализация прошла успешно и модем GSM зарегистрировался в сети. После этого устройство готово к работе.
  • Устройство может принимать сообщения, содержащие параметры «Действие», «Устройство», «Яркость».
  • Для управления устройством вам необходимо сформировать смс по следующему алгоритму:
    • Основные функции:
      • [ДЕЙСТВИЕ] [УСТРОЙСТВО];
    • Дополнительные функции:
      • [ЗНАЧЕНИЕ%]; — задаём значение ШИМ-сигнала для яркости/скорости;
  • После правильно написанной и отправленной информации дождитесь обратного сообщения с уведомлением о том, что ваша команда прошла.

Схема сборки:

Arduino / Piranha UNO:

Batery Shield:

Установите Battery Shield на Arduino / Piranha UNO:
Во время установки Battery Shield должен быть в выключенном состоянии.

GSM/GPRS Shield:

На плате GSM/GPRS Shield A6 имеется слот для SIM-карт и переключатель UART. Установите SIM-карту в слот, выберите положение переключателя RX-7/TX-8.

Trema Shield:

Линейный привод:

Подключим линейный привод к Trema Shield. Для этого необходимо 2 электромеханических реле подключить к выводу 4.

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

Далее подключить к реле линейный привод и подвести внешнее питание 12В.

Лампочки:

Далее согласно схеме подключите к реле лампочки и питание 220В.

Будьте предельно внимательны и осторожны!

Светодиодная лента:

Подключите к 6 выводу Trema Shield Trema-модуль Силовой ключ, а к нему подключите светодиодную ленту, пустив провод питания ленты (красный) напрямую к источнику питания 12В, а провод GND ленты (чёрный) в разрыв через Trema-модуль Силовой ключ.

Вентилятор(кулер):

Подключите к 5 выводу Trema Shield Trema-модуль Силовой ключ, а к нему подключите вентилятор (кулер), пустив провод питания вентилятора (красный) напрямую к источнику питания 12В, а провод GND вентилятора (чёрный) в разрыв через Trema-модуль Силовой ключ.

Код программы (скетч):

В скетче используются библиотеки iarduino_GSM и SoftwareSerial.

Алгоритм работы скетча:

До кода void setup() определяются номера выводов, объявляются переменные и функции, подключаются библиотеки, и создаются объекты для работы с ними.

Перед загрузкой скетча не забудьте задать в переменной SMSnum номер телефона, куда будет приходить смс-уведомление о пройденной идентификации!

В коде void setup() конфигурируются выбранные выводы, инициируется работа GSM/GPRS Shield, выполняется цикл ожидания готовности GSM/GPRS Shield к работе (регистрация в сети оператора). И после выполнения всех указанных действий выполняется оповещение о готовности к работе, путем отправки смс на указанный номер.

Код void loop() выполняется только при получении смс сообщения. Сам блок разделён на две основные части: приём входящих сообщений и выполнение указанных в сообщении действий.

Приём входящих сообщений состоит из следующих действий:

  • Считывание сообщения из памяти SIM-карты, после чего функция автоматически их оттуда удаляет.
  • После считывания сообщения запускается цикл, в котором текст сообщения проверяется на наличие в нём управляющих команд;
  • Если команда найдена, то внутри него запускается второй цикл, в котором текст так же проверяется, но уже на наличие в нём имени устройства;
  • Если имя устройства найдено, то выполняется проверка на наличие дополнительного параметра, указанного с символом » % » — процент (от 0 до 100) яркости/скорости, с которым будет работать указанное устройство.
  • Если дополнительный параметр был указан, то ставится флаг о его наличии в полученном смс.

Выполнение указанных в сообщении действий:

  • После того, как все флаги были выставлены, происходит проверка наличия флага дополнительного параметра. Если он присутствует, тогда выполняется вычисление значения числа, указанного перед символом % :
    • Для этого мы находим количество символов в строке, расположенных слева от символа % ;
    • Полученное число покажет нам порядковый номер символа % в массиве strSMStxt ;
    • Для того, чтобы узнать, какое значение было указано, проверим 3 ближайшие ячейки массива, расположенные слева от символа % :
      • Если 1 ячейка, расположенная ближе всего к символу %, содержит число от 0 до 9, то тогда мы заносим её значение в переменную Sum . Это будет разряд «единицы»;
      • После этого внутри первой проверки выполняется вторая проверка 2 ячейки на наличие числа от 0 до 9. Если число найдено, то оно умножается на 10 и прибавляется к переменной Sum . Это будет разряд «десятки»;
      • После этого внутри второй проверки производится третья проверка 3 ячейки. Если в ней найдена 1, то она умножается на 100 и прибавляется к переменной Sum . Это будет разряд «сотни».
      • Если же в третьей проверке окажется, что в «сотнях» указано больше 1, то флаг flgPWM будет сброшен;
  • Выполняется проверка наличия флага flgFunc :
    • Если флаг flgFunc был установлен, тогда выполняется проверка наличия флага flgDev :
      • Если флаг flgDev был установлен, тогда выполняется проверка наличия флага flgPWM :
        • Если флаг flgPWM установлен, тогда выполняется подача ШИМ-сигнала на вывод с указанным в сообщении устройством и отправка смс с уведомлением об успешном выполнении;
        • Если флаг flgPWM не установлен, тогда выполняется подача сигнала HIGH на вывод с указанным устройством и отправка смс с уведомлением об успешном выполнении;
      • Если флаг flgDev не установлен, тогда производится отправка смс уведомления о том, что в сообщении не указано устройство;
    • Если флаг flgFunc не установлен, тогда производится отправка смс уведомления о том, что пришло ошибочное сообщение.

Источник

Adblock
detector