Автономная охранная система на arduino + gsm

Arduino Sample Code For Sim800L

In the section below, I have shared some sample codes for SIM800L, using these codes you will be able to send and receive SMS. 

Troubleshooting Guide 

If you use the following code, then your module should work, but it is not working then there may be the following reasons: 

 1 Out of Coverage Area: 

  In this case, you can run the AT + COPS command to check if it is connected to the network.   There can be another reason and that is the issue of power. To make sure you can run AT + CSQ and AT + CBC.   AT + CSQ will tell you the signal strength and AT + CBC will tell you the percentage of the battery. 

  2 Functionality is Enabled 

  If all the above works are working and you have followed this blog from the beginning and still it is not sending SMS then the issue may be here.   To overcome this problem you can run the following command   AT + CFUN = 1   This command enables the functionality of the module. 

Топ 6 самых популярных модулей

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

Под модулем понимается изделие, состоящие из платы и элементов на ней (включая компонент, состоящий из чипсета и приемопередатчика). Компонент находятся под крышкой в едином форм-факторе (напоминает процессор для материнской платы компьютера). Распайка на плате расширения происходит через торцевые контактные ножки. Такая полноценная плата и называется модулем. Если на ней есть множество других элементов, ее иногда именуют шилд.

Ниже будут приведены модули, такие как Neoway M590, A6 и A7, и прочие, представлены их характеристики.

SIM900

Разработанный компанией SIMCom Wireless Solution модуль SIM900 подключается и обменивается данными через распространенный физический протокол передачи данных UART. Подключение к ПК осуществляется через USB-UART преобразователь.

Плата позволяет в двухстороннем режиме работать с сообщениями и звонками адресата.

Спецификация:

  1. Диапазон частот EGSM900, DCS1800, GSM850, PCS1900.
  2. Напряжение 3,2-4,8 В.
  3. Сила тока в режиме простоя – 450 мА.
  4. Максимальный ток – 2 А.
  5. Канал связи до 14.4 кбит/с.
  6. Диапазон температур от -30 °C до +80 °C без искажения, и от -40 °C до +85 °C, с незначительным отклонением радиочастотных характеристик, с сохранением работоспособности.
  7. Вес 6,2 г.
  8. Размеры 24 x 24 x 3 мм.

У компонента есть модификации: 900B, 900D, 900TE-C, 900R 900X. У каждой модификации своя специфика. SIM900D дополнен блоком заряда аккумулятора, а в SIM900X введены новые режимы энергосбережения, что позволяет использовать модули в современных системах трекинга автомобилей, охранной и промышленной автоматики. Все модификации компонентов можно найти в едином форм-факторе SMT, с торцевыми контактами под пайку. Но, не исключены варианты нахождения в других форм факторах.

SIM800L

Основа модуля – компонент SIM800L с реализацией обмена данными по каналам GSM и GPRS с помощью дуплексного режима. В модуль устанавливается SIM-карта, есть встроенная антенна и выход под еще одну антенну. Питание на плату подается через преобразователь напряжения DC-DC. Еще, есть возможность подключиться к другому источнику питания. Интерфейс подключения – UART.

Спецификация:

  1. Четырехдиапазонный сотовый терминал.
  2. Напряжение 3,8-4,2В.
  3. Ток в режиме ожидания – 0,7 мА. Предельный ток – 500 мА.
  4. Слот
  5. Поддержка 2G сети.
  6. Диапазон температур от -30 °C до +75 °C.

https://youtube.com/watch?v=XmYvbGkCrrQ

A6

Шилд A6 работает в сетях мобильной связи и позволяет принимать и передавать сигналы с помощью GSM и GPRS. Модуль, созданный компанией AI-THINKER несколько лет назад, успешно показал себя и пользуется популярностью в системах автоматики.

ТТХ А6:

  1. Четырехдиапазонный сотовый терминал.
  2. Напряжение питания 5 В.
  3. Ток в спящем режиме – 3 мА.
  4. Ток режима ожидания – 100 мА.
  5. Ток режима соединения – 500 мА.
  6. Ток пиковой нагрузки – 2А.
  7. Разъем
  8. Скорость GPRS во время передачи сигнала 42,8 Кбит/сек.
  9. Температура от -30 °C до +80 °C.

https://youtube.com/watch?v=alq7UJxiDQo

A7

Новый модуль А7 отличается от предшественника тем, что в него встроен GPS. Это решение позволило упростить конструкцию платы.

Основные параметры:

  1. Четырехдиапазонный сотовый терминал.
  2. Напряжение 3,3-4,6 В.
  3. Напряжение питания 5В.
  4. 10 Класс GPRS: канал передачи данных 85,6 кбит/с.
  5. Jammer эха и шумов.

https://youtube.com/watch?v=Wd1pijcGM-4

Neoway M590

Модуль на основе компонента Neoway M590 позволяет принимать звонки, обмениваться данными и сообщениями. Имеет интерфейс подключения UART.

Характеристики:

  1. Диапазон частот EGSM900, DCS1800.
  2. 10 Класс
  3. Напряжение 3,3-5 В.
  4. Пиковый ток 2 А.
  5. Рабочий ток 210 мА.
  6. Коммуникационный сигнал 3,3 В.
  7. Температура от -40 °C до +80 °C.

Подключая модуль к контроллеру, потребуется преобразователь 3,3 В -> 5 В.

GSM GPRS модуль SIM900

На базе модуля SIM900 разработали и успешно используют SIM900 GSM GPRS Shield, в качестве модуля для подключения к Arduino UNO. По сравнению с остальными платами, стоимость этой на порядок дороже, и она укомплектована множеством разъемов и контактов. Среди основных параметров:

  1. Подключается плата к Arduino Mega и UNO.
  2. Четыре рабочих частоты, как и в остальных платах.
  3. Низкое энергопотребление 1.5 А в спящем режиме.
  4. GPRS мульти-слот класса 10/8.
  5. Рабочие температуры от -40°C до +85 °C.

https://youtube.com/watch?v=hLYWNjLDKds

Протокол TCP/IP в М2М

Рис. 1. Обобщенная схема системы сбора данных посредством сети GSM

Обобщенная схема любой системы сбора данных построена на принципах клиент-серверного подключения (рис. 1). То есть где-то в сети есть сервер, который ждет подключения М2М-устройств и принимает от них полезные данные (расход топлива, координаты перемещения объекта, температура, тревожный сигнал, количество потребленной электроэнергии и т. п.) в зависимости от приложения и задач, выполняемых системой. В качестве клиентов в такой схеме выступают устройства на базе GSM/GPRS-модуля и управляющий контроллер (хост): модуль предоставляет доступ в Интернет, а хост управляет этим процессом. Такие клиент-серверные соединения для передачи данных, как правило, используют протокол TCP/IP.

Опытные разработчики знают, что посредством GSM/GPRS-модуля можно выйти в Интернет и подключиться к серверу двумя способами при помощи протокола канального уровня PPP или встроенного протокола TCP/IP. Оба варианта доступны в GSM/GPRS-модулях серии SIM800.

Когда в распоряжении клиентской части имеются продвинутые аппаратные ресурсы хоста и ОС типа Linux или Android, для выхода в Интернет часто применяют протокол PPP. Протоколы до уровня приложений при этом реализованы в самой ОС хоста. Но это относится к небольшому числу случаев. В подавляющем большинстве М2М-приложений ставятся жесткие требования к стоимости проекта, который подразумевает недорогой хост с небольшой памятью и простейшей ОС (без особых изысков). Реализация собственного стека протоколов (надстройка над PPP) в таком случае часто выводит проект за временные рамки сдачи работ и рамки бюджета единицы изделия.

Рис. 2. Граф процессов и состояний стека протоколов TCP/IP

В таких случаях более оправданным является применение встроенного стека TCP/IP-модуля, т. к. значительно упрощается процесс отладки и удешевляется стоимость конечного изделия. Разработчику не нужно знать/помнить принципы сетевых протоколов, тайминги, инкапсуляцию и т. д. (рис. 2), не нужно обрабатывать кадры, пакеты и сегменты данных. При работе со встроенным TCP/IP-стеком модуля хост имеет дело лишь с потоком полезных данных (рис. 3), обмениваясь ими с сервером на прикладном уровне стека протоколов.

Рис. 3. Стек протоколов TCP/IP

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

Кстати, надо сказать, что протокол TCP/IP, наряду с другими протоколами, к примеру UDP/IP, очень удобен для систем, требующих надежности передачи данных, т. к. в его основе заложены принципы подтверждения и повтора посылок в случае потери пакетов. Прикладному уровню не нужно заботиться об организации повторного запроса данных.

Работа с AT-командами

Данный раздел рассказывает о том, как работать с GPRS Shield на более низком уровне, без дополнительных библиотек. Если вам достаточно тех методов, которые предоставляет штатная библиотека, можете пропустить этот раздел.

Введение

С внешним миром модуль общается посредством AT-команд. Все команды делятся на базовые, так называемые S-команды, и расширенные, добавленные в стандартах GSM07.05–07.07. Практически все команды работают в 3 режимах — тестовом, чтения и записи.

  • В тестовом режиме возвращается , если команда поддерживается или возможные значения данных в параметре команды. Тестовый режим определяется окончанием команды в виде

  • В режиме чтения возвращаются текущие значения параметра, отличается от тестового наличием в конце просто символа

  • В режиме записи после идут новые значения параметров.

Настройки порта

По умолчанию модуль настроен на 9600 8N1:

  • 9600 – скорость;
  • 8 – бит в посылки;
  • N – нет контроля чётности;
  • 1 – стоп бит.

Для проверки поддерживаются AT-команды:

Команда Ответ Описание
AT+IPR? +IPR: 0
OK
Скорость порта:
0 – автоматически
1200
2400
4800
9600
19200
38400
57600
115200
AT+ICF? +ICF: 3,3
OK
Настройки передачи.
Первый параметр:
Бит в посылке
чётность/стоп бит
1 – 8/0/2
2 – 8/1/1
3 – 8/0/1
4 – 7/0/2
5 – 7/1/1
6 – 7/0/1
Второй параметр – чётность:
0 – нечётный
1 – чётный
3 – нет
AT+IFC? +IFC: 0,0
OK
Контроль передачи данных.
Первый параметр – терминалом от модуля
Второй параметр – модулем от терминала
0 – нет контроля
1 – программный
2 – аппаратный

Если вы хотите изменить их, введите AT-команду, замените знак на и введите нужные вам параметры из таблицы.
Все настройки этих команд сохраняются в энергонезависимой памяти.

Информация о модуле и состояние

Команда Ответ Описание
AT+GCAP +GCAP: +CGSM
OK
Возможности модуля
AT+GMM SIMCOM_SIM800C
OK
Идентификатор модуля
AT+GMR Revision:1418B08SIM800C32_BT_EAT
OK
Ревизия
AT+GSN 8683450321ХХХХХ
OK
IMEI

В документе с перечнем AT-команд можно найти документацию на все поддерживаемые команды.

Пример скетча для работы с использованием AT-команд

GPRSATСommands.ino
// библиотека для работы с GPRS устройством
#include <GPRS_Shield_Arduino.h>
 
// создаём объект класса GPRS и передаём в него объект Serial1 
GPRS gprs(Serial1);
// можно указать дополнительные параметры — пины PK и ST
// по умолчанию: PK = 2, ST = 3
// GPRS gprs(Serial1, 2, 3);
 
void setup()
{ 
  // открываем последовательный порт для мониторинга действий в программе
  Serial.begin(9600);
  // ждём, пока не откроется монитор последовательного порта
  // для того, чтобы отследить все события в программе
  while (!Serial) {
  }
  Serial.print("Serial init OK\r\n");
  // открываем Serial-соединение с GPRS Shield
  Serial1.begin(9600);
  // включаем GPRS шилд
  gprs.powerOn();
  // проверяем есть ли связь с GPRS устройством
  while (!gprs.init()) {
    // если связи нет, ждём 1 секунду
    // и выводим сообщение об ошибке
    // процесс повторяется в цикле
    // пока не появится ответ от GPRS устройства
    Serial.print("GPRS Init error\r\n");
    delay(3000);
  }
  // выводим сообщение об удачной инициализации GPRS Shield
  Serial.println("GPRS init success");
}
 
void loop()
{
  // считываем данные с компьютера и записываем их в GPRS Shield
  serialPCread();
  // считываем данные с GPRS Shield и выводим их в Serial-порт
  serialGPRSread();
}
 
void serialPCread()
{
  if (Serial.available() > ) {
    // если приходят данные по USB
    while (Serial.available() > ) {
      // записываем их в GPRS Shield
      Serial1.write(Serial.read());
    }
  }
}
 
void serialGPRSread()
{
    if (Serial1.available() > ) {
      // если приходят данные с GPRS Shield
      while (Serial1.available() > ) {
        // передаём их в USB
        Serial.write(Serial1.read());
    }
  }
}

What is SIM800L?

      This is the GSM module similar to the one which is on your phone. And I can assume that every one of you knows the application of GSM module. Speaking of SIM800L module, it is a small chip that uses serial-communication to communicate with any microcontroller or microprocessor. It has an in-built onboard antenna and an onboard SIM slot for SIM insertion purposes. The SIM800L module has 12 total pins that are used to establish connections with the microcontroller. For your simplicity, here I have shared a detailed pinout of the SIM800L and a function of each pin. 

Sim800L PinOut:

 Ring

DTR

We can call this pin an enable pin. This pin plays an important role in saving electricity. If you make this pin high, the module enters sleep mode by disabling serial communication and if you make it low, the module turns on. In the case, if SIM800L is not working, it may be the reason that you are accidentally making this pin high. 

Mic+, Mic-, SPK+ & SPK- 

These are the pins where you can connect the microphone and speaker.

NET

Here you can attach that helical shape antenna. 

RST 

This pin is used to reset the sim800l module. If your module is not responding to the AT command, possibly due to a baud rate problem, you can make this pin high for 100ms to reset the SIM800L. 

VCC and GND  

You can power SIM800l using these pins but the voltage should not be more than 3.3V and Current should not be less than 1A. 

RX and TX

These pins are used for Serial communication Rx for receiving commands from the controller and Tx for sending out the data. This was the introduction part of Sim800L Module if you want to know more about this you can mail us at . Next, we are going to learn about setting the baud rate, Network Scan, Sending and receiving SMS and Answering and Dialling the call. 

Примеры

Примеры для GSM-модуля можно поделить на две группы. Первая – это скетчи-примеры, иллюстрирующие возможности модуля (вроде отправки SMS или подключения к интернету). Вторая – это «обслуживающие» скетчи-примеры, то есть программные инструменты для проверки функционала библиотеки и компонентов модуля, которые она использует.

Скетчи-примеры для демонстрации функций

  • GSM Web Client – Загрузка содержимого вебсайта на Arduino через GPRS
  • GSM Web Server – Создание беспроводного веб-сервера через GPRS
  • Make Voice Call – Звонок по телефону через монитор порта
  • Send SMS – Отправка SMS на разные телефонные номера через монитор порта
  • Receive Voice Call – Проверка статуса модема во время входящего телефонного звонка
  • Receive SMS – Получение SMS и их отображение на мониторе порта

Скетчи-примеры для проверки и отладки

  • Band Management – Настройка диапазона частот, к которому будет подключаться GSM-модуль
  • GSM Scan Networks – Проверка доступных сетей
  • Pin Management – Управление PIN-кодом SIM-карты
  • Test GPRS – Проверка функциональности GPRS-сети при помощи SIM-карты
  • Test Modem – Получение IMEI-номера модема
  • Test Web Server – Создание веб-сервера при помощи GSM-модуля

Подключение платы расширения SIM900 GSM/GPRS Shield к Arduino UNO

Теперь, когда мы знаем всё о плате расширения, мы можем подключить её к нашей плате Arduino!

Для начала подключите контакты D7 (Tx) и D8 (Rx) на плате расширения к цифровым выводам 7 и 8 на Arduino. Поскольку для связи с платой расширения мы будем использовать программный последовательный порт, убедитесь, что перемычки установлены на выбор программного последовательного порта.

Рисунок 11 – Подключение платы расширения SIM900 GSM/GPRS Shield к Arduino UNO

Подключите плату расширения к внешнему источнику питания 5В 2A. Не поддавайтесь искушению подключить ее к источнику питания 5В на Arduino, так как плата расширения может не работать из-за недостатка тока источника питания. Также убедитесь, что вы выбрали внешний источник питания с помощью ползункового переключателя рядом с разъемом питания.

Теперь подключите все земли в схеме.

Наконец, подключите антенну, вставьте полностью активированную SIM карту в держатель.

Плюсы и минусы самодельной сигнализации на Arduino

Универсальность Arduino, и зачастую не самое лучшее качество неофициально выпускаемых плат микроконтроллера, приводят к некоторым проблемам в их использовании. Кроме того, GSM модуль, по сути сам такой же по структуре, как и управляющий аппарат, не отличается избыточной надежностью. Основная причина, конечно же, заключена в перебоях электропитания, почему и стоит для снабжения энергией сигнализации использовать контроль состояния и отдельные батареи. Известность ресурса последних окажет неоспоримую помощь в процессе эксплуатации системы безопасности.

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

Еще одной проблемой зачастую становятся неверные показания датчиков при температуре окружающей среды ниже 5 °С. К сожалению, этой неприятности в основном подвержен сам модуль, определяющий нагрев окружающей среды и сенсор движения. Что в настоящем случае может помочь — это подборка качественных комплектующих доверенных производителей и нахождение Arduino, со всеми дополнительными компонентами в тепле.

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

Using At Commands to Test the SIM800L Module

To test the module, connect the SIM800l module to your system with the help of Arduino ==> Open Arduino IDE after this select the com port ==> Open the serial monitor ==> Enter the following AT commands. AT:  If the Sim800l module is functioning properly then Sim800l will reply OK after receiving this module. AT+CBC-  This command is used to check the battery Voltage.AT+ CSQ— Sim800l module tells the strength of the signal after receiving this AT command AT+CREG— You can use this AT command to register the network if your SIM800l module is abruptly losing network and taking a long time to scan the network. AT+COPS?— If you put this command, SIM800l will tell you about its network status.AT+COPS=? — Sim800l tell us the networks available after receiving this AT command. 

CSD 2G или 3G

Корректное завершение жизненного цикла изделий на основе модулей SIM900R и его продолжение с использованием модулей 800-й серии требует учесть множество факторов, но прежде всего это достаточно широкое применение технологии CSD(Circuit Switched Data), которая позволяет реализовывать беспроводное соединение по прямому голосовому каналу передачи данных с ограниченной скоростью обмена (на практике она не превышает 14,4 кбит/с).

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

Возможно, вам также будет интересно

Вниманию читателей предлагается информация о новых модулях IP-Link компании Helicomm, поддерживающих недавно появившуюся, но уже завоевавшую популярность технологию ZigBee. Данная технология разработана для реализации низкоскоростных беспроводных соединений с малым трафиком и позволяет в сжатые сроки и с минимальными затратами развернуть беспроводную сеть разнообразных устройств в масштабах пре…

Очень часто перед разработчиком GSM системы передачи данных возникает задача, когда рабочий вариант системы нужно иметь… «вчера». Сжатые сроки диктуют определенный алгоритм действия в такой ситуации. Прежде всего, нужно выбирать ту комплектацию, которая есть на складе поставщика в России. Второй аспект — наличие доступных (финансово и физически) средств разработки. И, наконец, выбор такого конс…

Компактные GPS-приемники в настоящее время находят широкое применение на транспорте, в системах безопасности и телеметрии. Выходной цифровой сигнал приемника представляет собой последовательность пакетов специального формата, размер и информационная насыщенность которых может регулироваться. Компания Locosys выпускает встраиваемые GPS-приемники, построенные практически на всех популярных чипсет…

Характеристики

Общие

  • Чипы: ATSAMD21G18 и U-blox SARA-U201
  • Пинов ввода-вывода всего: 22
  • Напряжение логических уровней: 3,3 В
  • Максимальный ток с пина или на пин: 7 мА
  • Максимальный выходной ток пина 3V3: 600 мА
  • Входное напряжение через пин Vin: 5–6 В
  • Входное напряжение через разъём для аккумулятора: 3,7–4,2 В
  • Габариты: 68×25 мм

Микроконтроллер

  • Чип: ATSAMD21G18
  • Ядро: 32-битный ARM Cortex M0+
  • Тактовая частота: 48 МГц
  • Flash-память: 256 КБ
  • SRAM-память: 32 КБ
  • Контактов с АЦП: 7
  • Разрядность АЦП: 8/10/12 бит (по умолчанию 10 бит)
  • Контактов с ЦАП: 1
  • Разрядность ЦАП: 10 бит
  • Контактов с ШИМ: 12
  • Разрядность ШИМ: 8/10/12 бит (по умолчанию 8 бит)
  • Пинов с прерываниями: 12
  • Аппаратных интерфейсов SPI: 1
  • Аппаратных интерфейсов I²C / TWI: 1
  • Аппаратных интерфейсов UART / Serial: 1

Модуль сотовой связи U-blox SARA-U201

  • Размер SIM-карты: Micro-SIM
  • Стандарты связи: 3G UMTS/HSPA и 2G GSM/GPRS
  • Несущие частоты: 850/900/1800/1900/2100 МГц
  • Максимальная входящая скорость: 7,2 Мбит/с
  • Максимальная исходящая скорость: 5,76 Мбит/с

Расширение размера буфера SoftwareSerial на Arduino

Если ваше сообщение достаточно длинное, как и наше, вы, вероятно, получите его с пропущенными символами. Это не из-за неисправного кода. Ваш буфер приема заполняется и отбрасывает символы. А вы не читаете из буфера достаточно быстро.

Самое простое решение – увеличить размер буфера со стандартного размера с 64 до 256 байт (или меньше, в зависимости от того, что у вас заработает).

На компьютере с Windows перейдите в C:\Program Files (x86) → Arduino → hardware → Arduino → avr → libraries → SoftwareSerial (→ src для более новой версии Arduino IDE). Откройте SoftwareSerial.h и измените строку:

на

Сохраните файл и попробуйте скомпилировать скетч еще раз.

Рисунок 22 – Расширение размера буфера на Arduino

Совмещение плат

Позже пришлось делать ещё одно отверстие, в моём случае на букве «I», где написано «Мade In China», с краю платы.
Получилось так, что добавленный контакт, который по сути является GND, стал находится рядом c GND платы Pro Mini, и тем самым появилась возможность объединить землю GSM-модуля и Pro Mini каплей припоя (длинный вывод посередине и справа от него вывод Pro Mini) — стрелочками их отметил. Кривовато конечно вышло, зато надёжно теперь держится:

Между платами осталось некоторое пространство — в него я поместил плату контроля заряда разряда лития с предварительно выпаянным microUSB-разъёмом и припаянными проводами.

Платка входит туда очень плотно, при этом свечение светодиодов сбоку будет хорошо заметно через небольшое отверстие в корпусе.

Таблица подключения к Arduino UNO R3 элементов схемы

Сведем все соединения между Ардуино и внешними устройствами в единую таблицу, которая поможет в деле сборки готовой схемы.

Куда Пин Arduino UNO R3 Пин устройства/контакт
Модуль на 4 реле D0 общее освещение, D1 отопление, D2 свет в кладовке, D3 на улице. D0 D0
D1 D1
D2 D2
D3 D3
Кнопка постановки на сигнализацию/снятия D4
Клавиша включения режима экономии/люди дома D5
D6
Коммуникация с модемом D7 RX
D8 TX
Светодиод охрана отключена(кр) D9
Охрана активирована (зел) D10
Хозяева дома (кр) D11
Режим экономии (зел) D12
Включение модема D13 D9
Геркон кладовка A1
Геркон дверь/калитка A2
Термометр A3
Определение наличия сети 220 В A4

Планируемая система полностью не заняла все пины микроконтроллера. Еще есть место для добавления аналогового датчика и одной линии управления. Вариант — использовать свободные контакты для сенсора дыма и сигнализатора. Если планируется расширять конструкцию дальше, — придется брать микроконтроллер Arduino Mega. В нем больше портов ввода/вывода и памяти, при полной программной совместимости.

Работа схемы

Схема устройства представлена на следующем рисунке.

Как вы можете видеть, мы подали питание на GSM модуль с помощью адаптера на 12V 1A, а на плату Arduino мы подали питание с помощью батарейки 9V, голосовой модуль ISD 1820 запитывается от платы Arduino. Записанный голос с данного модуля (с его контактов динамика) мы можем непосредственно передавать на контакты микрофона GSM модуля.

Плата Arduino и GSM модуль соединены по последовательному каналу связи, контакт Tx модуля подсоединен к контакту 9 платы Arduino, а контакт Rx модуля — к контакту 10 платы Arduino. Это позволит плате Arduino «прослушивать» GSM модуль. Когда на GSM модуль будет поступать входящий звонок плата Arduino будет обнаруживать это. Когда плата Arduino удостоверится в том, что звонок активен, она будет воспроизводить голосовое сообщение с голосового модуля при помощи подачи сигнала высокого уровня на свой контакт 8 в течение 200 мс – таким образом имитируется нажатие кнопки PlayE.

Включение/выключение чипа SIM900

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

В соответствии с техническим описанием, установив на выводе PWRKEY чипа низкий логический уровень (лог. 0) в течение как минимум 1 секунды, можно включить/выключить чип. У нашей платы расширения есть два способа сделать это.

Аппаратный запуск

Рисунок 13 – Кнопка включения/выключения чипа SIM900

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

Программный запуск

Вместо того, чтобы каждый раз вручную нажимать PWRKEY, вы можете программно включать/выключать SIM900.

Во-первых, вам нужно запаять SMD перемычку, обозначенную как R13 на плате расширения, как показано на рисунке ниже.

Рисунок 14 – Запаиваемая перемычка R13 на SIM900 GSM Shield для программного управления

Затем вам нужно подключить вывод D9 на плате расширения к выводу D9 на Arduino.

Рисунок 15 – Подключение SIM900 GSM Shield к Arduino для программного управления

Наконец, вам нужно добавить следующую функцию в вашу программу.

Шаг 1. В чем идея?

Фактически, спасти GSM-модуль от телефона очень сложно и потребуется много времени и навыков, поэтому в этом проекте мы будем придерживаться немного другого подхода.

Всякий раз, когда телефон получает SMS или телефонный звонок, он либо загорается, либо гудит/вибрирует, либо издает звук. Зная это, мы сможем воспользоваться этими функциями с помощью Arduino. Мы сделаем это, используя двигатель, который нужен для того, чтобы заставить телефон вибрировать.  Arduino прочитает данные и посмотрит, когда двигатель работает, что именно получает телефон — SMS или телефонный звонок.

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

Задачи GSM модуля:

  • Отправлять данные о времени работы насоса полива;
  • Отправлять температуру насоса и воды;
  • Принимать данные с веб-сервера о статусе вкл/выкл насоса.

Первым делом в корневом каталоге сервера создаем файл index.php.

На Листинге 2 показан начальный код разметки HTML страницы.

Листинг 2. Начальный код разметки HTML страницы.

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

Результат открытого в браузере файла index.php показан на Рисунке 7.

Рисунок 7. Результат открытого в
браузере файла index.php.

Добавим пару кнопок на включение насоса и создадим txt файл на сервере для сохранения данных о статусе работы насоса. Кнопки выполним в виде картинок, а их обработку сделаем с помощью AJAX (технология взаимодействия с сервером без полной перезагрузки html-страницы, использует JavaScript). Для этого перед тегом вставляем код, показанный в Листинге 3.

Листинг 3. AJAX обработчик.

Определение картинок кнопок включим в форму. При нажатии на картинку будет записываться значение статуса в файл pomidor.txt. Код обработки кнопок показан в Листинге 4.

Листинг 4. HTML код обработки кнопок.

В коневом каталоге создаем папку transfer и файл pomidor.php, код из которого приведен в Листинге 5.

Листинг 5. PHP скрипт записи статуса кнопки.

Рисунок 8. Основной интерфейс управления.

Для полученных значений создаем еще одну папку txt и файл pomidor.txt. Добавляем картинку насоса и получаем минимальный интерфейс управления, который показан на Рисунке 8. На Рисунке 9 показан результат нажатия на кнопку «Выкл». Соответственно, если нажмем на кнопку «Вкл», то будет результат «ON».

Рисунок 9. Запись данных на сервер в результате
нажатия на кнопку «Выкл».

Сделаем так, чтобы при переключении статуса, менялась картинка насоса. Для этого в поле расположения картинки насоса добавим код (Листинг 6).

Листинг 6. PHP скрипт изменения картинки статуса работы насоса.

Создаем функцию «Nasos», которая каждую секунду читает и сравнивает значение с файла pomidor.txt. В зависимости от результата меняется картинка визуализации насоса. На Рисунке 10 показан пример визуализации насоса при нажатии на кнопку «Вкл».

Рисунок 10. Визуализация статуса включенного насоса.

По аналогии добавим вывод температур и времени полива (Рисунок 11).

Рисунок 11. Законченный интерфейс управления.

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

Возможно, вам также будет интересно

Данная статья адресована разработчикам встраиваемых решений, а именно — программистам, решающим задачу передачи данных на удаленный сервер по сети сотовой связи при помощи GSM/GPRS-модуля серии SIM800 производства SIMCom Wireless Solutions. В статье дан обзор возможностей встроенного TCP/IP-стека модулей серии SIM800, описан порядок правильной работы с ним, рассмотрены различные внештатные ситу…

Среди промышленных модулей сотовой связи самыми распространенными решениями являются GSM-модули. Однако есть ряд применений, где поддержка сетей 3G и LTE является обязательным требованием: это может быть связано как с необходимостью обеспечить высокие скорости обмена данными, так и для предоставления гарантированного канала связи в случае отсутствия покрытия сетей GSM. Основным препятствием для…

Инжиниринговая компания «ЕвроМобайл» представляет универсальную NB-IoT-кнопку AnyKey — пользовательское устройство, которое применяется для широкого спектра решений в IoT и M2M.
Основное преимущество кнопки AnyKey — ее универсальность, она может решать самые разные задачи: от заказа воды до вызова экстренных служб.
AnyKey работает на базе стандарта NB-IoT (Narrowband Internet of Things). Это …

Принципы работы проекта

В рассматриваемом нами проекте плата Arduino Uno управляет всеми процессами. Буквенно-цифровая клавишная панель 4×4 используется в качестве универсального устройства ввода: для ввода номера мобильного абонента, набора сообщений, осуществления вызова, приема вызова, передачи SMS, приема SMS и т.д. GSM модуль используется для взаимодействия с сетью GSM. Микрофон и динамик используются для передачи и приема голоса. ЖК дисплей 16×2 используется для отображения различных сообщений. Структурная схема рассматриваемого устройства приведена на следующем рисунке.

С помощью буквенно-цифровой клавишной панели можно осуществлять ввод как букв, так и цифр. Более подробно о работе с ней вы можете прочитать в статье про подключение клавишной панели к Arduino.

Все команды в рассматриваемом нами проекте вводятся с буквенно-цифровой клавишной панели. Более подробно все аспекты функционирования проекта можно посмотреть в видео в конце статьи.

AT-команды взаимодействия с модулем GSM

Для начала работы с GSM модулями нужно установить библиотеку GPRS_Shield_Arduino

AT-команды – это специальные команды для модема, которые состоят из коротких текстовых строк. Для того чтобы модем распознал отправленную ему команду, строка обязательно должна начинаться с символов at.  Восприниматься строка будет только тогда, когда GSM модем , будет пребывать в командном режиме.

Отправку AT-команд можно осуществлять с помощью коммуникационного программного обеспечения или же вручную с клавиатуры.

Большинство команд можно разделить на 3 режима:

  • тестовый, в котором модуль отвечает, поддерживает ли команду;
  • чтение – выдача текущих параметров команды;
  • запись – произойдет записывание новых значений.

Список наиболее используемых AT-команд:

  • AT – проверка правильности подключения GSM модуля. Если все исправно, то возвращается OK;
  • A/ – повтор предыдущей команды;
  • AT+IPR? – получение информации о скорости порта. Ответом будет +IPR: 0 OK (0 в данном случае – автоматически);
  • AT+ICF? – настройка передачи. В ответ придет +ICF: бит, четность;
  • AT+IFC? – контроль передачи. Ответом будет +IFC: терминал от модуля, модуль от терминала (0 – отсутствует контроль, 1 – программный контроль, 2 – аппаратный);
  • AT+GCAP – показывает возможности модуля. Пример ответа – +GCAP:+FCLASS,+CGSM;
  • AT+GSN – получение IMEI модуля. Пример ответа 01322600XXXXXXX;
  • AT+COPS? – показывает доступные операторы;
  • AT+CPAS – состояние модуля. Ответ +CPAS: 0. 0 – готовность к работе, 3 – входящий звонок, 4 – голосовое соединение, 2 – неизвестно;
  • AT+CCLK? – информация о текущем времени и дате;
  • AT+CLIP=1 – включение/выключение АОН. 1 – включен, 0 – выключен;
  • AT+CSCB=0 – прием специальных смс-сообщений. 0 – разрешено, 1 – запрещено;
  • AT+CSCS= “GSM” – кодирование смс-сообщения. Можно выбрать одну из следующих кодировок: IRA, GSM, UCS2, HEX, PCCP, PCDN, 8859-1;
  • AT+CMEE=0 – получение информации об ошибке;
  • AT+CPIN=XXXX – ввод пин-кода сим-карты;
  • AT&F – сброс до заводских настроек;
  • AT+CPOWD=1 – срочное(0) или нормальное(1) выключение модуля;
  • ATD+790XXXXXXXX – звонок на номер +790XXXXXXXX;
  • ATA – ответ на вызов;
  • AT+CMGS=»”+790XXXXXXXX”» Test sms – отправка смс-сообщения на номер +790XXXXXXXX;

В данном случае представлены основные команды для модуля SIM900. У других модулей команды незначительно отличаются.

Данные в модуль отправляются через специальную программу «терминал», которая устанавливается на ПК. Подавать команды модулю можно также через мониторинг порта в Arduino IDE.