Подключение модуля sim900 к ардуино. Бюджетная GSM сигнализация с мозгами из Arduino. Описание модуля A7

Добрый день! Опять мультиобзор китайских электронных компонентов, как обычно обо всём понемногу, постараюсь покороче, но получится ли? Итак, встречайте, GSM сигнализация стоимостью до 700 ₽. Интересно? Прошу под «cut»!

Приступим! Перед началом рекомендую заглянуть в этот , меньше компонентов и большая автономность. Итак, «техзадание», основные требования к сигнализации:

1) Оповещать при срабатывании датчиков.
2) В случае отключения питания должна быть предусмотрена некоторая автономность.
3) Управление сигнализацией через sms и звонки.

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

Перечень того что понадобится:

Список изменений

GSM_03_12_2016-14-38.hex - исправлена работа устройства с модемом M590.
GSM_05_12_2016-13-45.hex - добавлена консольная команда memtest, оптимизация использования оперативной памяти.
GSM_2016_12_06-15-43.hex - добавлен вывод результатов команд в консоль, оптимизация памяти. Занято: 49% SRAM.
GSM_2016_12_07-10-59.hex - теперь телефонные номера добавляются и удаляются правильно. Занято: 49% SRAM, 74% Flash Memory.
GSM_2016_12_07-15-38.hex - добавлена возможность подключения датчика движения , подключается к пину A0 (в данном случае пин A0 используется как цифровой). Добавлены смс - команды PIROn , PIROff . Занято: 48% SRAM, 76% Flash Memory.
GSM_2016_12_08-13-53.hex - Теперь после успешного выполнения команды, которая в ответ не отправляет смс сообщение, устройство однократно мигает синим светодиодом. Теперь после некорректного выполнения команды, которая в ответ не отправляет смс сообщение, устройство дважды мигает синим светодиодом. Теперь после инициализации параметров устройства, если включен «тихий» режим (SendSms = 0), устройство в течение 2 секунд часто мигает синим светодиодом. Исправлена ошибка из-за которой номер не всегда удалялся из памяти командой DeletePhone. Занято: 48% SRAM, 78% Flash Memory.
GSM_2016_12_11-09-12.hex - Добавлены консольные команды AddPhone и DeletePhone, синтаксис аналогичен смс-командам. Оптимизация памяти. Занято: 43% SRAM, 79% Flash Memory.
GSM_2017_01_03-22-51.hex - Реализована поддержка и ему подобных расширителей портов ввода/вывода на чипе PCF8574, для подключения дополнительных 8 датчиков, в том числе герконов. Автоматический поиск адреса и автоматическая настройка модуля. Стандартные названия датчиков и логический уровень их срабатывания изменяется с помощью команды EditSensor. Изменены содержания тревожных смс для основного датчика (пин D0) «Alarm! Main sensor!» и датчика движения (пин A0) «Alarm! PIR sensor!». Добавлены команды EditSensor и I2CScan. Занято: 66% SRAM, 92% Flash Memory.
GSM_2017_01_15-23-26.hex - Поддержка модема A6_Mini. Контроль наличия внешнего питания (пин D7). Добавлены смс команды WatchPowerOn, WatchPowerOff. Добавлены консольные команды ListConfig, ListSensor. Теперь смс команда EditSensor работает правильно. Незначительно «урезан» вывод отладочной информации в монитор порта. Занято: 66% SRAM, 95% Flash Memory.
GSM_2017_01_16-23-54.hex - Теперь в ответном сообщении на смс команду «Info» так же сообщается состояние датчика движения. Исправлена ошибка из-за которой иногда отправлялись пустые ответные смс сообщения. Теперь устройство оповещает не только об отключении, но и о возобновлении внешнего питания. Все модемы стали «меньше болтать», теперь в мониторе порта стало немного чище. Занято: 66% SRAM, 95% Flash Memory.
GSM_2017_02_04-20-23.hex - Исправлена ошибка «Watch the power on». Теперь после снятия с охраны, выключается «тревожный пин». Теперь после удаления номера в консоль выводится правильная информация. Возможно исправлена ошибка из-за которой иногда отправлялись пустые ответные смс сообщения. Занято: 66% SRAM, 90% Flash Memory.
GSM_2017_02_14-00-03.hex - Теперь по умолчанию отправляются смс сообщения, параметр SendSms снова равен 1. Теперь при замыкании контактов основного герконового датчика (закрытии двери) устройство мигает синим светодиодом в течение 2 секунд, сигнализируя о нормальной работе датчика. Занято: 66% SRAM, 90% Flash Memory.
GSM_2017_03_01-23-37.hex - Команда WatchPowerOn удалена. Добавлена консольная команда WatchPowerOff, идентична смс команде. Добавлены команды WatchPowerOn1, WatchPowerOn2. WatchPowerOn1 - мониторинг внешнего питания включен если сигнализация поставлена на охрану, WatchPowerOn2 - мониторинг внешнего питания включен всегда. Реализована функция постановки на охрану и снятия с охраны внешними устройствами, для этого используются выводы A1(D15) и A2(D16). Сигнализация ставит/снимает охрану при появлении на выводе A1(D15) высокого уровня +5В или на выводе A2(D16) низкого уровня GND. Вывод A1(D15) подтягивается к GND, вывод A2(D16) подтягивается к +5V через резисторы 20 (10) кОм. Добавлены команды GuardButtonOn и GuardButtonOff. Теперь после постановки на охрану мигает красный светодиод, пока не будет проверена целостность контура основного герконового датчика. Если контур целый загорается красный светодиод. Занято: 66% SRAM, 95% Flash Memory.
GSM_2017_03_12-20-04.hex - Теперь в консоли стало ещё чище, но если включен тестовый режим «TestOn», то в консоль выводится дополнительная информация. Исправлен баг «Sent!», теперь в консоль правильно выводится информация об отправке сообщений. Исправлен баг «повторного ложного вызова». Теперь запрос баланса должен работать корректно на всех модемах. Занято: 67% SRAM, 95% Flash Memory.
GSM_2017_04_16-12-00.hex - Исправлен . Теперь команды Info и Money всегда будут присылать ответное смс. Команда GuardButtonOn заменена командами GuardButtonOn1 и GuardButtonOn2. Занято: 67% SRAM, 99% Flash Memory.
GSM_2017_04_21-09-43.hex - не рекомендуется к использованию, только в качестве тестирования, спасибо за выявленные ошибки:) - Теперь параметр sendsms не влияет на отправку смс сообщений мониторинга электросети. Добавлена смс команда DelayBeforeGuard отвечающая за задержку при постановке на охрану, значение не может превышать 255 секунд. Добавлена смс команда DelayBeforeAlarm отвечающая за задержку отправки уведомлений и включение «тревожного пина» при срабатывании датчиков, значение не может превышать 255 секунд. Удалены команды ClearSMS, теперь сообщения удаляются автоматически после получения. Занято: 68% SRAM, 100% Flash Memory.
GSM_2017_04_22-20-42.hex - Исправлены множественные ошибки. Команды ClearSMS снова присутствуют в прошивке. Оптимизация памяти. Занято: 68% SRAM, 98% Flash Memory.
GSM_2017_04_23-17-50.hex - Теперь запрос баланса должен работать корректно на всех модемах. Постановка и снятие с охраны внешними устройствами теперь работает правильно. Ответные сообщения смс команды Info не должны быть пустыми. Оптимизация памяти. Занято: 68% SRAM, 98% Flash Memory.
GSM_2017_04_24-13-22.hex - Теперь передача консольных команд в GSM модуль производится только если включен тестовый режим. Теперь нет разделения на смс команды и консольные команды, все существующие команды можно передавать как через смс, так и через консоль. Возможно исправлен баг с командой Info. Оптимизация памяти. Занято: 68% SRAM, 94% Flash Memory.
GSM_2017_04_25-20-54.hex - Исправлен баг при котором команда ListConfig меняла значение последнего события. Теперь при вводе команд через косоль не отправляются ненужные смс сообщения. Возможно исправлен баг с командой Info. Оптимизация памяти. Занято: 66% SRAM, 94% Flash Memory.
GSM_2017_04_30-12-57.hex - Временно включён вывод дополнительной информации в консоль при отправке смс сообщений и формировании ответа на команду Info. Возможно исправлен баг с командой Info. Оптимизация памяти. Занято: 66% SRAM, 92% Flash Memory.
GSM_2017_05_06-11-52.hex - Исправлен с функцией DelayBeforeAlarm. Занято: 66% SRAM, 93% Flash Memory.
GSM_2017_05_23-21-27.hex - Незначительно изменён вывод информации в консоль. Добавлена поддержка модулей расширения портов на PCF8574A c адресами от 0x38 до 0x3f включительно. Исправлен баг c . Теперь устройство перезагружается автоматически после команд FullReset, ResetConfig, ResetPhone и в случае успешного выполнения команды MemTest. Добавлена команда WatchPowerTime. Теперь возможно установить время, по истечении которого будет отправлено смс сообщение об отключении внешнего источника питания. Занято: 67% SRAM, 94% Flash Memory.
GSM_2017_05_26-20-22.hex - Исправлена инициализация памяти датчиков платы расширения. Изменён синтаксис команды AddPhone. Добавлена команда EditMainPhone. Изменен принцип работы системы уведомлений, при срабатывании датчика сначала будут отправлены sms сообщения, после чего будут совершены голосовые вызовы. Тревожные sms сообщения будут отправлены на телефонные номера с признаком «S» (SMS). Голосовые вызовы будут совершены на номера с признаком «R» (Ring). Сообщения об отключении/включении внешнего источника питания будут отправлены на телефонные номера с признаком «P» (Power). Добавлена команда RingTime. Теперь возможно установить длительность тревожного голосового вызова, параметр может иметь значение от 10 до 255 секунд. Теперь команда RingOn/RingOff глобально включает/отключает оповещение голосовыми вызовами. Добавлена команда ResetSensor. Занято: 68% SRAM, 99% Flash Memory.
GSM_2017_06_02-17-43.hex - Командам AddPhone и EditMainPhone добавлен параметр «I» (Info), отвечающий за sms уведомление о постановке или снятии устройства с охраны. Теперь после добавления основного номера устройство автоматически перезагружается. Теперь можно вносить в память устройства одинаковые номера. При добавлении второго и последующих дублирующихся номеров с них автоматически будут сняты атрибуты «M», «S», «P» и «I». Эти номера будут использованы для повторного голосового вызова при срабатывании датчиков. Исправлен баг кривого вывода в консоль после выполнения команды AddPhone, теперь информация не выводится автоматически после добавления номера. Добавлена команда Reboot. Занято: 69% SRAM, 99% Flash Memory.
GSM_2017_06_11-00-07.hex - Теперь вновь при замыкании контактов основного герконового датчика (закрытии двери) устройство мигает синим светодиодом в течение 2 секунд, сигнализируя о нормальной работе датчика, при этом не учитывается поставлено или снято устройство с охраны. Команды RingOn/RingOff удалены. Теперь устройство можно снять с охраны во время тревожного вызова, теперь они совершаются в фоновом режиме. Занято: 69% SRAM, 99% Flash Memory.
GSM_2017_07_04-21-52.hex - Теперь команда Pause не присылает ответное смс. Удалены команды TestOn и TestOff. У всех номеров удалён признак Management. Занято: 68% SRAM, 96% Flash Memory.
GSM_2017_07_24-12-02.hex - Добавлены команды ReedSwitchOn/ReedSwitchOff для мониторинга основного герконовго датчика, теперь его можно включать/отключать так же как и датчик движения. Исправлен баг команды Info. Команды TestOn и TestOff снова присутствуют в прошивке. Занято: 68% SRAM, 96% Flash Memory.
GSM_2017_07_26-10-03.hex - Добавлена команда ModemID. Автоматическое определение модема осуществляется только если значение этого параметра равно 0. После установки значения параметра равным 0 производится автоматическая перезагрузка устройства. Занято: 68% SRAM, 98% Flash Memory.
GSM_2017_08_03-22-03.hex - Теперь сигнализация может управлять внешними устройствами. Для управления используется аналоговый выход A3 (D17 - используется как цифровой). Логический уровень выхода (+5В или GND) может быть изменен, после изменения уровня через команду настройки устройство автоматически будет перезагружено. Длительность сигнала управления внешним устройством может быть изменена. Добавлены команды ExtDeviceLevelLow, ExtDeviceLevelHigh, ExtDeviceTime, Open. Некоторые изменения в логике работы команд управления. Оптимизация памяти. Занято: 68% SRAM, 99% Flash Memory.
GSM_2017_08_10-12-17.hex - Удалены команды SmsOn/SmsOff, ReedSwitchOn/ReedSwitchOff, PIROn/PIROff и всё что с ними связано. Команда DelayBeforeAlarm заменена расширенными командами. Изменён вывод команды Info. Оптимизирован вывод команды ListConfig в консоль. Теперь к пинам D6 и A0 могут быть подключены любые цифровые датчики с высоким или низким уровнем срабатывания, в том числе герконы. Пины D6 и A0 должны быть притянуты к земле (GND) через сопротивление 10 (20) кОм. Если датчик настроен на низкий уровень срабатывания (включен в режиме геркона), то проверяется целостность цепи. Логический уровень срабатывания по входам D6 и A0 (+5В или GND) может быть изменен, после изменения логического уровня устройство автоматически будет перезагружено. Для каждого из датчиков (main, second, PCF-платы расширения) при срабатывании может быть установлено своё время по истечение которого будет осуществлено уведомление (смс и/или голосовой вызов). «PIR Sensor» переименован в «Second sensor». Исправлена работа платы расширения, ошибка из-за которой устройство всегда уведомляло о срабатывании датчиков, вне зависимости от того поставлено устройство на охрану или нет. Теперь можно выбрать режим работы при котором устройство может мониторить датчики платы расширения как во включенном режиме охраны (GuardOn), так и при выключенном режиме (GuardOff). Добавлены команды PCFForceOn/PCFForceOff, MainSensorLevelHigh/MainSensorLevelLow/MainSensorLevelOff, SecondSensorLevelHigh/SecondSensorLevelLow/SecondSensorLevelOff, MainDelayBeforeAlarm, SecondDelayBeforeAlarm, PCFDelayBeforeAlarm. Занято: 68% SRAM, 99% Flash Memory.

*Последующие версии прошивок включают в себя изменения предыдущих версий.


Используемые порты Arduino Nano v3

D4 - выход «тревожного» пина, при срабатывании датчика на этом пине устанавливается сигнал высокого уровня
D5 - инверсный выход «тревожного» пина, при срабатывании датчика на этом пине устанавливается сигнал низкого уровня

D6 - герконовый датчик. Начиная с версии GSM_2017_08_10-12-17.hex к пину D6 могут быть подключены любые цифровые датчики с высоким или низким уровнем срабатывания, в том числе герконы. Пин D6 должен быть притянут к земле (GND) через сопротивление 10 (20) кОм.
D7 - подключен к делителю напряжения от внешнего источника питания +5В. Верхнее плечо 2,2 кОм, нижнее 3,3 кОм.

Делитель напряжения


D8 - модем TX
D9 - модем RX

D10 - красный светодиод
D11 - синий светодиод
D12 - зеленый светодиод

Подключение периферии:
A0 - датчик движения . Начиная с версии GSM_2017_08_10-12-17.hex к пину A0 могут быть подключены любые цифровые датчики с высоким или низким уровнем срабатывания, в том числе герконы. Пин A0 должен быть притянут к земле (GND) через сопротивление 10 (20) кОм.

A1 - Вход для внешнего управления. Сигнализация ставит/снимает охрану при появлении на входе высокого уровня +5В.
A2 - Инверсный вход для внешнего управления. Сигнализация ставит/снимает охрану при появлении на входе низкого уровня GND.

A3 - Настраиваемый (+5В или GND) выход для управления внешними устройствами. При поступлении команды управления значение на этом выходе изменяется в зависимости от того какое было установлено на установленный промежуток времени.

A4 - SDA I2C
A5 - SLC I2C
, для подключения дополнительных 8 датчиков.


Команды управления для hex - прошивки

Внимание! Команды выделенные жирным шрифтом могут быть выполнены только с основного номера, так как отвечают за конфигурацию устройства. Остальные команды могут быть выполнены с номеров с признаком «Management».

SMS - команды управления не чувствительны к регистру :
AddPhone - Добавить номер телефона. Всего может быть добавлено не более 9 номеров + 1 основной номер который автоматически сохраняется в память при первом звонке на устройство после сброса на заводские установки командами ResetPhone или FullReset . Т.е. кто первый позвонил на устройство после его сброска на заводские установки тот и и «главный», этот номер заносится в первую ячейку памяти и его невозможно изменить или удалить через смс. Возможно добавить два одинаковых номера, но тогда у номера дубликата автоматически остаётся только признак «r» - исключительно для повторного голосового вызова.
Пример команды:



Синтаксис команды:

AddPhone - команда
: - разделитель
5 - записать в пятую ячейку памяти
+71234567890 - номер телефона
До версии GSM_2017_05_26-20-22.hex:
а - Параметр «Alarm» - на номера с этим параметром будут отправляться смс - сообщения о срабатывании сигнализации и сообщения постановке или снятии с охраны.
Начиная с версии GSM_2017_05_26-20-22.hex:
m - Параметр «Management» - разрешено управление сигнализацией
s - Параметр «SMS» - будет отправлено sms сообщение при срабатывании датчиков
r - Параметр «Ring» - будет совершен голосовой вызов при срабатывании датчиков
p - Параметр «Power» - будет отправлено sms сообщение при включении/отключении внешнего питания
i - Параметр «Info» - будет отправлено sms сообщение при постановке или снятии с охраны
При отсутствии параметров «m», «s», «r», «p»,«i» телефон заносится в память, но никак не используется.


DeletePhone - Удалить номер телефона.
Пример команды:

Синтаксис команды:

DeletePhone - команда
: - разделитель
+71234567891 - номер телефона


EditMainPhone - Изменить параметры «s», «r», «p», «i» основного телефона, этот номер занесён в первую ячейку памяти.
Пример команды:

Синтаксис команды:

EditMainPhone - команда
: - разделитель
srpi - параметры


BalanceNum - Изменение номера запроса баланса и обработка длины ответа запроса. Значение по умолчанию для Beeline: #100#L22.
Пример команды:

Синтаксис команды:

BalanceNum - команда
: - разделитель
#103# - номер запроса баланса
L24 - Длина (len) пересылаемого ответа 24 символа, обрезаем спам из запроса баланса.


EditSensor - Изменить название датчика и логический уровень срабатывания. Всего может быть не более 8 дополнительных датчиков. После изменения параметров необходима перезагрузка устройства.
Пример команды:
EditSensor:1+Datchik dvizheniya v koridore#h

Синтаксис команды:

EditSensor - команда
: - разделитель
1 - записать в первую ячейку памяти
+ - разделитель
Datchik dvizheniya v koridore - название датчика, не может превышать 36 символов, включая пробелы.
#h - Признак высокого логического уровня с датчика, при получении которого сработает сигнализация. Если отсутствует "#h", сигнализация будет срабатывать при получении с датчика низкого логического уровня.


SleepTime - Время «засыпания» сигнализации при получении смс - команды «Pause», указывается в минутах. Значение по умолчанию: 15, не может быть менее 1 и более 60.
Пример команды:

Синтаксис команды:

SleepTime - команда
: - разделитель
20 - 20 минут «сна».


AlarmPinTime - Время на которое включается/выключается тревожный/инверсный пин, указывается в секундах. Значение по умолчанию: 60, не может быть менее 1 секунды и более 43200 секунд (12 часов).
Пример команды:

Синтаксис команды:

AlarmPinTime - команда
: - разделитель
30 - 30 секунд включения/выключения тревожного пина.


DelayBeforeGuard - Время до постановки устройства на охрану, после получения соответствующей команды.
Пример команды:

Синтаксис команды:

DelayBeforeGuard - команда
: - разделитель
25 - 25 секунд до постановки на охрану


DelayBeforeAlarm - Время по истечении которого будет отправлено «тревожное» смс уведомление, если за этот период времени сигнализация не была снята с охраны. Заменена расширенными командами начиная с версии GSM_2017_08_10-12-17.hex
Пример команды:

Синтаксис команды:

DelayBeforeAlarm - команда
: - разделитель
40 - 40 секунд до отправки «тревожного» уведомления


WatchPowerTime - Время в минутах по истечении которого будет отправлено смс сообщение об отключении внешнего источника питания. Если внешнее питание будет восстановлено до истечения установленного времени, то сообщение не будет отправлено.
Пример команды:

Синтаксис команды:

WatchPowerTime - команда
: - разделитель
5 - 5 минут до отправки смс сообщения


RingTime - Длительность тревожного голосового вызова, параметр может иметь значение от 10 до 255 секунд.
Пример команды:

Синтаксис команды:

RingTime - команда
: - разделитель
40 - 40 длительность вызова составит 40 секунд, после чего будет вызван следующий абонент.


ModemID - Принудительная установка модели используемого модема. Возможные значения: 0 - автоопределение модема, 1 - M590, 2 - SIM800l, 3 - A6_Mini.
Пример команды:

Синтаксис команды:

ModemID - команда
: - разделитель
2 - ID модема.


ExtDeviceTime - Количество секунд на которое изменится уровень сигнала на выходе управления внешним устройством.
Пример команды:

Синтаксис команды:

ExtDeviceTime- команда
: - разделитель
5 - 5 секунд


ExtDeviceLevelLow - Внешнее устройство подключенное к выходу A3 управляется низким уровнем сигнала (GND). На выходе по умолчанию будет присутствовать высокий уровень +5В, пока не поступит команда управления внешним устройством
ExtDeviceLevelHigh - Внешнее устройство подключенное к выходу A3 управляется высоким уровнем сигнала (+5V). На выходе по умолчанию будет присутствовать низкий уровень GND, пока не поступит команда управления внешним устройством

ResetSensor - сброс параметров датчиков расширителя порта

ResetConfig - сброс настроек на заводские установки

ResetPhone - удаление из памяти всех телефонных номеров

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

RingOn - включить уведомление звонком на «главный» номер записанный в первую ячейку памяти при срабатывании датчика. Удалена начиная с версии GSM_2017_06_11-00-07.hex
RingOff - выключить уведомление звонком при срабатывании датчика. Удалена начиная с версии GSM_2017_06_11-00-07.hex

SmsOn - включить sms-уведомление при срабатывании датчика. Удалена начиная с версии GSM_2017_08_10-12-17.hex
SmsOff - выключить sms-уведомление при срабатывании датчика. Удалена начиная с версии GSM_2017_08_10-12-17.hex

PIROn - включить обработку датчика движения
PIROff - выключить обработку датчика движения

ReedSwitchOn - включить обработку основного герконового датчика
ReedSwitchOff - выключить обработку основного герконового датчика

WatchPowerOn - включить контроль внешнего питания, смс сообщение об отключении внешнего питания будет отправлено при условии что сигнализация поставлена на охрану. Удалена начиная с версии GSM_2017_03_01-23-37.

WatchPowerOn1 - включить контроль внешнего питания, смс сообщение об отключении внешнего питания будет отправлено при условии что сигнализация поставлена на охрану.
WatchPowerOn2 - включить контроль внешнего питания, смс сообщение об отключении внешнего питания в любом случае будет отправлено

WatchPowerOff - выключить контроль внешнего питания

GuardButtonOn - управление сигнализацией внешними устройствами или кнопкой включено Удалена начиная с версии GSM_2017_04_16-12-00.
GuardButtonOn1 - функция постановки или снятия охраны внешними устройствами или кнопкой включена
GuardButtonOn2 - функция только постановки на охрану внешними устройствами или кнопкой включена, снятие с охраны производится по звонку на устройство или с помощью смс команды.
GuardButtonOff - управление сигнализацией внешними устройствами или кнопкой выключено

PCFForceOn - постоянный мониторинг группы всех датчиков модуля расширения
PCFForceOff - мониторинг группы всех датчиков модуля расширения только при постановке устройства на охрану

MainSensorLevelHigh - тревожное уведомление будет отправлено при появлении сигнала высокого уровня (+5 В) на входе (D6) от датчика
MainSensorLevelLow - тревожное уведомление будет отправлено при появлении сигнала низкого уровня (GND) на входе (D6) от датчика
MainSensorLevelOff - обработка датчика на входе (D6) отключена

SecondSensorLevelHigh - тревожное уведомление будет отправлено при появлении сигнала высокого уровня (+5 В) на входе (A0) от датчика
SecondSensorLevelLow - тревожное уведомление будет отправлено при появлении сигнала низкого уровня (GND) на входе (A0) от датчика
SecondSensorLevelOff - обработка датчика на входе (A0) отключена

MainDelayBeforeAlarm - время по истечении которого будет отправлено «тревожное» смс уведомление при срабатывании основного датчика (D6), если за этот период времени сигнализация не была снята с охраны. Синтаксис аналогичен команде DelayBeforeAlarm.
SecondDelayBeforeAlarm - время по истечении которого будет отправлено «тревожное» смс уведомление при срабатывании дополнительного датчика (A0), если за этот период времени сигнализация не была снята с охраны. Синтаксис аналогичен команде DelayBeforeAlarm.
PCFDelayBeforeAlarm - время по истечении которого будет отправлено «тревожное» смс уведомление при срабатывании датчиков платы расширения (PCF8574), если за этот период времени сигнализация не была снята с охраны. Синтаксис аналогичен команде DelayBeforeAlarm.

GuardOn - поставить на охрану
GuardOff - снять охраны

Open - команда управления внешним устройством

Info - проверить состояние, в ответ на это сообщение будет отправлено sms с информацией о том с какого номера была включена/выключена охрана

Pause - приостанавливает работу системы на время установленное командой sleeptime в минутах, система не реагирует на срабатывания датчика.

TestOn - включается тестовый режим, мигает синим светодиодом.
TestOff - выключается тестовый режим.

LedOff - выключает светодиод режима ожидания.
LedOn - включает светодиод режима ожидания.

Money - запроса баланса.

ClearSms - Удалить из памяти все sms

Консольные команды (до версии GSM_2017_04_24-13-22.hex) - вводятся в мониторе порта Arduino IDE:

AddPhone - аналогична sms-команде AddPhone

DeletePhone - аналогична sms-команде DeletePhone

EditSensor - аналогична sms-команде EditSensor

ListPhone - вывод в монитор порта списка сохранённых в памяти телефонов

ResetConfig - аналогична sms-команде ResetConfig

ResetPhone - аналогична sms-команде ResetPhone

FullReset - аналогична sms-команде FullReset

ClearSms - аналогична sms-команде ClearSms

WatchPowerOn1 - аналогична sms-команде WatchPowerOn1
WatchPowerOn2 - аналогична sms-команде WatchPowerOn2
WatchPowerOff - аналогична sms-команде WatchPowerOff

GuardButtonOn - аналогична sms-команде GuardButtonOn . Удалена начиная с версии GSM_2017_04_16-12-00
GuardButtonOn1 - аналогична sms-команде GuardButtonOn1
GuardButtonOn2 - аналогична sms-команде GuardButtonOn2
GuardButtonOff - аналогична sms-команде GuardButtonOff

Memtest - тест энергонезависимой памяти устройства, все настройки устройства будут сброшены, аналогично команде FullReset.

I2CScan - поиск и инициализация поддерживаемых устройств на шине I2C.

ListConfig - вывод в монитор порта текущей конфигурации устройства.

ListSensor - вывод в монитор порта текущей конфигурации датчиков.

UPD. При использовании датчика движения , для исключения ложных срабатываний при работе модема, необходимо между пинами GND и A0 Arduino поставить сопротивление , спасибо говорим товарищу
AllowPhone = {«70001234501», «70001234502», «70001234503», «70001234504», «70001234505»} - Номера которым разрешено управлять охраной.
AlarmPhone = {«70001234501», «70001234502»} - Номера для отправки sms-уведомлений при срабатывании датчика и уведомления о снятии или постановке на охрану. На первый номер в списке будет осуществляться вызов при срабатывании датчика если выполнена команда RingOn, по-умолчанию эта опция включена. Это сделано потому что sms-сообщения могут прийти с некоторой задержкой, а звонок должен пройти сразу.

Если поступил вызов с разрешенного номера или sms-сообщение с командой GuardOn/GuardOff, то в зависимости от текущего состояния охраны будет отправлено sms-сообщение о постановке или снятии с охраны на номера перечисленные в массиве AlarmPhone, так же будет отправлено sms-сообщение на номер с которого поступил вызов.

При срабатывании датчика отправляются sms-сообщения на все номера из массива (списка) AlarmPhone и осуществится голосовой вызов на первый номер из этого массива.

Световая индикация:
Светодиод светится красным цветом - поставлено на охрану.
Светодиод светится зелёным цветом - снято с охраны, включается/отключается sms-командой LedOn/LedOff.
Светодиод постоянно мигает синим цветом - сигнализирует о том что c Arduino всё в порядке, плата не зависла, используется исключительно для отладки, включается/отключается sms-командой TestOn/TestOff.
* В коде присутствует функция LedTest(), она мигает синим светодиодом, сделана лишь для того чтобы мониторить Arduino, мигает - значит работает, не мигает - зависла. Пока ещё не зависала:)

НЕ Актуально!

Подключение 2 и более датчиков для открытых прошивок (касается только этой прошивки sketch_02_12_2016.ino)
Для подключения дополнительных герконовых датчиков используем свободные цифровые пины D2,D3,D5 или D7. Схема подключения с дополнительным датчиком на D7.

Необходимые изменения в прошивке
... #define DoorPin 6 // Номер входа, подключенный к основному датчику int8_t DoorState = 0; // Переменная для хранения состояния основного датчика int8_t DoorFlag = 1; // Переменная для хранения состояния основного датчика #define BackDoorPin 7 // Номер входа, подключенный к дополнительному датчику int8_t BackDoorState = 0; // Переменная для хранения состояния дополнительного датчика int8_t BackDoorFlag = 1; // Переменная для хранения состояния дополнительного датчика...
void setup() { ... pinMode(DoorPin, INPUT); pinMode(BackDoorPin, INPUT); ...
... void Detect() { // Считываем значения с датчиков DoorState = digitalRead(DoorPin); BackDoorState = digitalRead(BackDoorPin); //Обработка основного датчика if (DoorState == LOW && DoorFlag == 0) { DoorFlag = 1; delay(100); if (LedOn == 1) digitalWrite(GLed, LOW); Alarm(); } if (DoorState == HIGH && DoorFlag == 1){ DoorFlag = 0; delay(100); } //Обработка дополнительного датчика if (BackDoorState == LOW && BackDoorFlag == 0) { BackDoorFlag = 1; delay(100); if (LedOn == 1) digitalWrite(GLed, LOW); Alarm(); } if (BackDoorState == HIGH && BackDoorFlag == 1){ BackDoorFlag = 0; delay(100); } } ...

И ещё кое что :
1. Диоды лучше использовать рассчитанные на ток 2 А, так как модуль заражает током в 1 А и нам ещё нужно чем то питать Arduino и модем. В этом экземпляре используются диоды 1N4007, если выйдут из строя заменю на 2 А.
2. Все резисторы для светодиода использовал на 20 кОм, для того чтобы ночью не освещать весь коридор.
3. На герконовый датчик между пином GND и пином D6 так же повесил резистор на 20 кОм.

На этом пока всё. Спасибо за внимание! :)

Планирую купить +207 Добавить в избранное Обзор понравился +112 +243

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

Вот так владелец открывает ворота при въезде на территорию

Наиболее широкое распространение GSM-модуль получил как надежный и бюджетный контроллер для управления групповым доступом на объект, совместимый с популярной автоматикой ворот и шлагбаумов Doorhan и Came.

Как работает модуль

По сути GSM-модуль — это радиоприемник с установленной sim картой любого оператора сотовой связи и контроллер для обработки поступающей и исходящей информации. В базу данных модуля заносятся телефонные номера всех пользователей, имеющих право доступа на закрытую территорию. Современные модели поддерживают запись и хранение до 2000 номеров, более дорогие модификации способны обрабатывать до 10000 номеров.

Принцип работы устройства показан на рисунке.

Принципиальная схема работы устройства

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

Соединения со звонящим абонентом не происходит, либо оно обрывается через несколько секунд, благодаря чему расходы на оплату услуг сотовой связи равны нулю. Если данные не совпадают, то пропуск через ограждающее устройство не предоставляется. В некоторых моделях существует возможность отключения идентификации, и пропуск осуществляется при любом входящем звонке на контроллер. Настройка блока управления GSM-модулем выполняется с помощью смс-команд, веб-интерфейса, программы на компьютере, подключенному через USB-порт, android-приложения для смартфонов.

Приведем пример gsm-модуля от компания ООО «Тор-Хаус». Существуют две модели, которые отличаются количеством пользовательских номеров и набором функций. Фото модулей на рисунке ниже.

Технические характеристики модулей приведены в таблице.

Характеристика Модель TH-G01 Модель TH-G02
Электропитание, В =12 или 24 В =9 … 24В
Частота, МГц Диапазоны 850/900/1800 Диапазоны 850/900/1800
SIM-карта Стандартная 1.8/3В Стандартная 1.8/3В
Антенна 50 Q SMA, возможно подключение выносной антенны с разъемом SMA
Реле 1, сухой контакт NO/NC 2, сухой контакт NO/NC
Кол-во пользователей 99 3002
Запись пользователей SMS SMS или звонок
Диапазон температур -30 … +60 -30 … +60

Плюсы и минусы gsm модулей

  • отпадает необходимость покупки индивидуальных пультов, брелоков или карточек, причем не все системы управления шлагбаумом «резиновые» и рассчитаны на их ограниченное число;
  • открыть шлагбаум или ворота можно с любого места, входящего в сеть покрытия мобильного оператора, благодаря чему обеспечить пропуск знакомого на территорию, находясь вне зоны досягаемости - не проблема, + упрощение работы службы охраны;
  • осуществление контроля - с помощью программного обеспечения или смс-команд, возможно добавление и удаление номеров из базы, настройка таких параметров, как допуск по дням недели, времени суток, запрет въезда при неуплате обязательных взносов, ведение журнала въездов и т. д.;
  • возможность установки на автоматические шлагбаум и ворота любого производителя;
  • экономия - цена на один gsm-контроллер приблизительно равняется стоимости трех пультов Came, и при большом количестве пользователей такая автоматизация проезда существенно выгоднее.

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

Характеристики популярных моделей

Teltonika

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

Teltonika VRT012

Совместим с автоматикой Doorhan, рабочее напряжение - 12 В, укомплектовывается блоком питания для подключения к сети 220 В. Стабильно работает от -20 до +40°С. Настройка списка клиентов осуществляется с помощью смс или через компьютерное приложение.

Doorhan

Контроллер сохраняет в базе данных до 500 номеров. Предназначен для установки как непосредственно в корпус откатных ворот и шлагбаума с автоматикой Doorhan, так и снаружи. Работает при температуре -20 до +40°С, имеет собственный корпус для защиты от внешних воздействий. Электропитание 12-24 В.

Модуль Doorhan

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

ESIM 110/120

Осуществляет пропуск на территорию до 500 клиентов, дополнительная опция - расширение до 2000. В улучшенной версии - ESIM 120 реализована технология облачного управления через WEB-интерфейс и с мобильного приложения.

ESIM120 ELDES — GSM контроллер для открывания ворот и скуд

Контроллер совместим с автоматикой откатных ворот Doorhan, компактен и может встраиваться внутри блока системы привода. Удобное ведение журнала, где можно задать различные параметры разрешений на въезд индивидуально по каждому клиенту и просмотреть, кто и когда заезжал - память на 1000 событий. Рабочее напряжение 10-24 В, диапазон температур от -20 до +55°С.

Места применения

Модули применяются для управления любого типа оборудования с электроприводом:

  • автоматических ворот, шлагбаумов;
  • котлов;
  • офисных дверей (при наличии электрозамка);
  • сигнализаций;
  • автомобилей;
  • и прочих устройств.

Мы уже знакомы с такими устройствами, как GSM/MMS камеры (), GSM-сигнализации (), отправляющие сообщения при активации датчика движения. Это были первые устройства с применением GSM-модулей и их применение стало расширятся.

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

Допустим, в ЖК «Березка» 5 домов, 500 квартир умножаем на 1500 руб. (средняя цена ключа). ТСЖ придется собрать с жильцов 750000 руб. только на закупку ключей.

Получается большая экономическая выгода в сравнении с покупкой ключей!

Уговорить собственников жилья на покупку автоматического шлагбаума будет легче, когда сумма инвестиций в оборудование и монтаж будет составлять 2000-3000 руб с квартиры.

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

В следующей статье разберем модуль от компании SmartAirkey — бесключевой доступ в подъезды и парковки многоквартирных домов.


По просьбе трудящихся продолжаю тему GSM девайсов, а именно подключение модуля SIM900D к ATmega. Какая модель это не важно. В этой статье я буду использовать ATmega8515. Этот контроллер я использовал исключительно по фен-шую))) Вся нужная информация будет выводится на ЖК дисплей 20х4 фирмы МЭЛТ. Его тоже выбирал по фен-шую))) И также потому что он понимает кодировку Windows-1251 что сильно упрощает вывод русских буковок.

А теперь собственно поставим задачу.

  • 1. Требуется включать и выключать 8 светодиодов(реле, вентиляторов и т.д.)
  • 2. Включат и выключать по переданному коду по средством SMS.
  • 3. Выводить на дисплей уровень приема GSM сигнала.
  • 4. Вывод на экран последнюю команду переданную по средством SMS.
Задача поставлена. GSM-модуль общается с МК по UART. Схема включения GSM-модуля можно посмотреть . МК будет работать на частоте 3,6864 МГц. Это нужно для снижения ошибок в UART. Скорость обмена 19200. За все время тестирования ошибок с передачей не было. Правда помер один МК, что дало головомойки на пару дней, но потом с заменой на новый МК все пошло как по маслу. ЖК дисплей подключен к порту А. Порт С отдан на включение и выключение светодиодов. Ах да. тут есть один нюанс. GSM-модуль может получать данные на ногу RxD только 3 вольта и не более!!! Это важно!!! Отсюда было принято решение подавать данные через резисторный делитель. Расчет плечей оставляю за вами так как МК может работать в разных диапазонах от 2,8 до 5 вольт. Лично я питаю GSM-модуль 4 вольтами, а МК 5. Так, с железом вроде разобрались. Теперь поехали по коду. Первое что необходимо это способ принятия данных от GSM-модуля. Модуль пуляет ответы на запросы такого вида:
Запрос:
AT+CSQ\r\r\n
Ответ:
\r\n+CSQ: 17,0\r\n\r\nOK\r\n
Отсюда видно что запросы и ответы перемешаны кучей \r и \n ерундой. Ну для запроса это не проблема, так как мы сами его пишем, а вот ответ... Разгребать весь этот зоопарк каждым пришедшим байтом в UDR не комельфо, поэтому будем использовать кольцевой буфер. Кто не знает что это, идем сюда . При использовании кольцевого буфера добавим в обработчик прерывания по приходу данных в UDR проверку для игнорирования \r и \n. ISR(USART_RX_vect) { char temp = UDR; if(!(temp == 0x0A || temp == 0x0D)) InBuffer(temp); } То есть мы записываем в буфер все кроме \r и \n. Как только мы получили данные начинаем их обрабатывать. Первое что нужно посмотреть, SMS это или ответ на команду. Так как GSM-модуль всегда возвращает фиксированный ответ, а меняет только данные, то отследить можно по названию ответа. Например запрос на уровень приема GSM.
if(time == 30) { time = 0; USART_STR("AT+CSQ"); USART_END(); _delay_ms(200); } if(GetData()) { _delay_ms(70); num = IndexNumber(); OutBufferStr(temp,num); } Теперь в массиве temp лежит ответ от GSM-модуля. Теперь давайте его распознаем.
if((temp == "C") & (temp == "S") & (temp == "Q")) { } Если в массиве лежит ответ на запрос уровня GSM, то условие выполнится и его можно обрабатывать по своему усмотрению. А если условие не выполнилось? То скорее всего пришло SMS. Как его вычислить? Как только приходит SMS сообщение, модуль возвращает строку вида.
+CMTI: "SM",1 Все что здесь меняется, так это последний символ, а точнее цифра. Это номер SMS. А вот буквы SM не меняются никогда. Значит нам требуется проверить есть ли в сообщении эти буквы.
if((temp == "S") & (temp == "M")) { } Конечно еще бы было не плохо проверить название самой команды для более точного убеждения, но я этим пренебрег так как это пока просто объяснения работы МК с GSM-модулем. Поле того как распознали принятие SMS не плохо бы было его прочитать. Кидаем GSM-модулю запрос вида.
USART_STR("AT+CMGR="); USART_TXD(temp); USART_STR(",0"); USART_END(); _delay_ms(200); В ячейке массива temp лежит номер SMS. Данная команда будет адекватна при SMS сообщениях меньше 9. Ну это понятно почему. А вообще чтобы не забивать память SIM карты SMSками я после прочтения SMS сразу удаляю ее, поэтому больше 1 SMS в памяти не бывает. Но все же я использовал не жестко число 1, а именно выдрал его из массива. Я не знаю почему, но иногда SMS не всегда приходят сразу, а с неким опозданием. Если такое произошло, то возможен такой косяк, SMSка еще не пришла, мы думаем что не прошла и шлем за ней еще одну. Тут проходит время и они приходят две подряд одна за одной. Первую мы читаем как 1, а вторая пришла как 2. Вот от таких косяков и защищает ячейка массива. Теперь запросив текст SMS GSM-модуль вернет нам ответ вида.
+CMGR: "REC UNREAD","+71234567890","","14/07/06,13:04:38+16" сообщение OK После этого можно читать сообщение. Так как ответы всегда фиксированы, то можно смело начинать читать с temp... и может возникнуть косяк))) Я на него нарвался. Пока я разбирался с GSM-модулем мне тихим сапом Beeline прислал SMSку. Все бы ничего да подстава засела в месте где прописывается номер отправляющего SMS абонента. Вместо "+71234567890" мне пришло "My Beeline". Ну понятно чем это пахнет. Короче МК ни фига не понял и вошел в ступор. Поэтому я решил все таки проверять номер. Да и для безопасности это не помешает. А то вдруг зависливый сосед прознает про управление котлом по SMS и пошлет команду зимой выключит котел))).
for(uint8_t i=0; i Смысл прост. В цикле сравниваем ячейки массива буфера отвечающие за номер с массивом в который заранее положили требуемый номер. Пока цифры совпадают флаг равен 1, но как только цифра не совпадет, обнуляем флаг и выходим из цикла. Если флаг в нуле, то не читаем SMSку, а если в единице, то SMSка наша. Если все проверки прошли, то читаем команду. Команды я сделал такие. Заглавния буква V значит включить, O значит отключить. Для того чтобы узнать какой светодиод включить или выключить, после буквы пишем его номер от 1 до 8. Пример, нужно включить 4-й светодиод. Шлем SMS с текстом V4 , а для отключения O4 .
if(flag) { if(temp == "V") { lcd_xy(0,2); lcd_putsf("LED-"); lcd_putchar(temp); lcd_putsf(" Bключен "); switch (temp) { case 0x31: PORTC |= (1 Собственно вот весь код. Сначала проверяем буковку и по ней выполняем ту или иную команду и параллельно выводим сообщение на ЖК. А после того как закончили работу с SMS скидываем флаг и удаляем все SMS.
USART_STR("AT+CMGD=1,4"); USART_END(); _delay_ms(100); flag=0;
Вот и все. Ниже видео всего этого безобразия и архив с проектом.
Проект

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

Модули GSM GPRS

GSM модуль используется для расширения возможностей обычных плат Ардуино – отправка смс, совершение звонков, обмен данными по GPRS. Существуют различные виды модулей, наиболее часто используемые – SIM900, SIM800L, A6, A7.

Описание модуля SIM900

Модуль SIM900 используется в различных автоматизированных системах. С помощью интерфейса UART осуществляется обмен данными с другими устройствами. Модуль обеспечивает возможность совершения звонков, обмен текстовыми сообщениями. Работа модуля релизуется на компоненте SIM900, созданным фирмой SIMCom Wireless Solution.

Технические характеристики:

  • Диапазон напряжений 4,8-5,2В;
  • В обычном режиме ток достигает 450 мА, максимальный ток в импульсном режиме 2 А;
  • Поддержка 2G;
  • Мощность передачи: 1 Вт 1800 и 1900 МГц, 2 Вт 850 и 900 МГц;
  • Имеются встроенные протоколы TCP и UDP;
  • GPRS multi-slot class 10/8;
  • Рабочая температура от -30С до 75С.

С помощью устройства можно отслеживать маршрут транспорта совместно с ГЛОНАСС или GPS устройством. Возможность отправки смс-сообщений используется в беспроводной сигнализации и различных охранных системах.

Описание модуля SIM800L

Модуль выполнен на основе компонента SIM800L и используется для отправки смс, реализации звонков и обмена данными по GPRS. В модуль устанавливается микро сим карта. Устройство обладает встроенной антенной и разъемом, к которому можно подключать внешнюю антенну. Питание к модулю поступает от внешнего источника либо через DC-DC преобразователь. Управление осуществляется с помощью компьютера через UART, Ардуино, Raspberry Pi или аналогичные устройства.

Технические характеристики:

  • Диапазон напряжений 3,7В – 4,2В;
  • Поддержка 4х диапазонной сети 900/1800/1900 МГц;
  • GPRS class 12 (85.6 кБ/с);
  • Максимальный ток 500 мА;
  • Поддержка 2G;
  • Автоматический поиск в четырех частотных диапазонах;
  • Рабочая температура от –30С до 75С.

Описание модуля A6

Модуль A6 разработан фирмой AI-THINKER в 2016 году. Устройство используется для обмена смс-сообщениями и обмена данными по GPRS. Плата отличается низким потреблением энергии и малыми размерами. Устройство полностью совместимо с российскими мобильными операторами.

Технические характеристики:

  • Диапазон напряжений 4,5 – 5,5В;
  • Питание 5В;
  • Диапазон рабочих температур от -30С до 80С;
  • Максимальное потребление тока 900мА;
  • GPRS Class 10;
  • Поддержка протоколов PPP, TCP, UDP, MUX.

Модуль поддерживает карты формата микросим.

Описание модуля A7

A7 является новейшим модулем от фирмы AI-THINKER. По сравнению со своим предшественником A6 имеет встроенный GPS, позволяющий упрощать конструкцию устройства.

Технические характеристики:

  • Диапазон рабочих напряжений 3,3В-4,6В;
  • Напряжение питания 5В;
  • Частоты 850/900/1800/1900 МГц;
  • GPRS Class 10: Макс. 85.6 кбит;
  • Подавление эха и шумов.

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

Где купить GSM модули для ардуино

Традиционно, прежде чем начать, несколько советов и полезных ссылок на продавцов Aliexpress.

Очень качественный модуль KEYES SIM900 GSM GPRS Модуль SIM800C для ардуино от проверенного поставщика
Шилд для разработки, совместимый с Ардуино, на базе модуля SIM900 GPRS/GSM Недорогой модуль mini A6 GPRS GSM

Подключение GSM GPRS шилда к Arduino

В этом разделе мы рассмотрим вопросы подключения GSM – модулей к плате адуино. За основу почти во всех примерах берется Arduino Uno, но в большинстве своем примеры пойдут и для плат Mega, Nano и т.д.

Подключение модуля SIM800

Для подключения нужны плата Ардуино, модуль SIM800L, понижающий преобразователь напряжения, провода для соединения и батарея на 12В. Модуль SIM800L требует нестандартное для ардуино напряжение в 3,7В, для этого нужен понижающий преобразователь напряжения.

Распиновка модуля SIM800 приведена на рисунке.

Плату Ардуино нужно подключить к компьютеру через USB кабель. Батарею на 12 В подключить через преобразователь: -12В на землю Ардуино, от земли в преобразователь в минус, +12В в преобразователь в плюс. Выходы с модуля TX и RX нужно подключить к пинам 2 и 3 на Ардуино. Несколько модулей можно подключать к любым цифровым пинам.

Подключение модуля A6

Модуль A6 стоит дешевле, чем SIM900, и его очень просто подключать к Ардуино. Модуль питается напряжением 5В, поэтому для соединения не нужны дополнительно понижающие напряжение элементы.

Для подключения потребуются плата Ардуино (в данном случае рассмотрена Arduino UNO), GSM модуль А6, соединительные провода. Схема подключения приведена на рисунке.

Вывод RX с модуля GSM нужно подключить к TX на плате Ардуино, вывод TX подключить к пину RX на Ардуино. Земля с модуля соединяется с землей на микроконтроллере. Вывод Vcc на GSM модуле нужно соединить с PWR_KEY.

Подключение с помощью GSM-GPRS шилда

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

Перед подключением к Ардуино нужно установить сим-карту на GSM-GPRS шилд. Также нужно установить джамперы TX и RX, как показано на рисунке.

Подключение производится следующим образом – первый контакт (на рисунке желтый провод) с шилда нужно соединить с TX на Ардуино. Второй контакт (зеленый провод) подключается к RX на Ардуино. Земля с шилда соединяется с землей с аруино. Питание на микроконтроллер поступает через USB кабель.

Макет соединения шилда и платы Ардуино изображен на рисунке.

Для работы потребуется установить библиотеку GPRS_Shield_Arduino.

Для проверки правильности собранной схемы нужно сделать следующее: соединить на Ардуино RESET и GND (это приведет к тому, что данные будут передаваться напрямую от шилда к компьютеру), вставить сим-карту в шилд и включить питание шилда. Плату Ардуино нужно подключить к компьютеру и нажать кнопку включения. Если все соединено правильно, загорится красный светодиод и будет мигать зеленый.

Краткое описание взаимодействия через AT-команды

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

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

  • AT – для проверки правильности подключения модуля. Если все исправно, возвращается 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.

Скетчи для работы с модулем GSM

Отправка СМС на примере SIM900

Перед тем, как отправить сообщение, нужно настроить модуль. В первую очередь нужно перевести в текстовый формат передаваемое сообщение. Для этого существует команда AT+CMGF=1. Нужно перевести кодировку на GSM командой AT+CSCS=»GSM». Эта кодировка наиболее удобная, так как там символы представлены в ASCII коде, который легко понимает компилятор.

Затем нужно набрать смс-сообщение. Для этого посылается команда с номером абонента AT+CMGS=»+79XXXXXXXXX» r, в ответ предлагается набрать текст смс. Нужно выполнить отправку сообщения. По окончании требуется отправить код комбинации Ctrl+Z, модуль позволит отправку текста адресату. Когда сообщение будет отправлено, вернется OK.

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

Получение смс. Для чтения смс-сообщения используется команда AT + CNMI = 2,2,0,0,0. Когда на модуль придет текстовое сообщение, он отправит в последовательный порт +CMTI: «SM»,2 (в данном случае 2 – порядковый номер сообщения). Чтобы его прочитать, нужно отправить команду AT+CMGR=2.

Прием голосового звонка. В первую очередь для разговора нужно подключить к модулю динамик и микрофон. При получении звонка будет показан номер, с которого он совершен. Для осуществления работы нужно включить библиотеку GSM:

#include

Если сим-карта заблокирована, нужно ввести ее пин-код. Если пин-код не требуется, это поле нужно оставить пустым.

#define PINNUMBER “”

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

boolean notConnected = true;

С помощью функции gsmAccess.begin() происходит подключение к сети. При установлении соединения вернется значение GSM_READY.

vcs.hangCall(); – функция, показывающая, что модем готов принимать звонки.

getvoiceCallStatus() – определяет статус скетча. Если кто-то звонит, она возвращает значение RECEIVINGCALL. Для записи номера нужно воспользоваться функцией retrieveCallingNumber(). Когда будет совершен ответ на звонок, вернется TALKING. Затем скетч будет ждать символа новой строки, чтобы прервать разговор.

Установить GPRS-соединение и отправить данные на удаленный сервер

Сначала нужно установить библиотеку SoftwareSerial, которая позволяет обеспечивать последовательную передачу информации и связать GSM-модуль и микроконтроллер Ардуино.

Для отправки данных на сервер нужно отправить следующие команды:

AT+SAPBR=1,1 – открытие Carrier.

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

AT+SAPBR=3,1,\”APN\”,\”internet.mts.ru\” – выбор оператора mts, имя точки доступа.

AT+SAPBR=3,1,\”USER\”,\” mts \” – выбор пользователя mts.

AT+SAPBR=3,1,\”PWD\”,\” mts \”

AT+SAPBR=1,1 – установка соединения.

AT+HTTPINIT – инициализация http.

AT+HTTPPARA=”URL”, – URL адрес.

AT+HTTPREAD – ожидание ответа.

AT+HTTPTERM – остановка http.

Если все выполнено правильно, в мониторе порта будут появляться строчки с АТ командами. Если отсутствует связь с модемом, то будет показывать по одной строке. При успешной установке GPRS-соединения на модуле начнет мигать светодиод.

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

Основные функции GSM-модуля:

  • Контроль за состоянием внешней сети.
  • Контроль за подключением потребителей к источнику напряжения.
  • Дистанционное включение и отключение системы автозапуска с помощью SMS-запроса.
  • Дистанционное управление пуском генератора.
  • Контроль за состоянием встроенного реле.
  • Контроль за температурой (датчик внутри GSM-модуля).
  • Контроль за балансом SIM-карты.

С помощью GSM-модуля, используя силовую часть автозапуска, можно включать и отключать потребителей от внешней сети. (Например, электроотопление в загородном доме с контролем температуры посредством SMS).

GSM-модуль оповещает администраторов системы SMS сообщением, состоящим из 4-х информационных полей, следующего вида:

Сеть подключена;
Реле выкл.;
Темп. 27С;
Баланс: 51р.

SMS сообщение отправляется автоматически на телефон 1 администратора каждый раз при изменении режима питания потребителей (1 информационное поле). Если это изменение произошло на время менее 10 сек, SMS сообщение отправляться не будет.

1 информационное поле «Сеть подключена».

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

2 информационное поле «Реле выкл».

Информационное поле, показывающее состояние реле, встроенного в GSM-модуль. Для включения реле необходимо с телефона 1 или 2 администратора отправить SMS с текстом «1» .

Для выключения реле - SMS с текстом «0» . Красный светодиод отображает состояние реле. То есть не горит когда реле выключено и горит когда включено.

3 информационное поле «Темп. 27С».

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

4 информационное поле «Баланс: 51р.».

Баланс СИМ-карты GSM-модуля.

Администраторы могут запросить у GSM-модуля состояние системы. Для этого нужно отправить пустую СМС с номера 1 или 2 администратора или просто сделать дозвон (модуль автоматом разорвёт соединение - т. е. будет занято). GSM-модуль, приняв пустую SMS/входящий дозвон, опросит состояние своих входов, запросит баланс, состояние реле и считает температуру и пришлёт SMS на номер администратора, который делал запрос.

Подключайте GSM-модуль при обесточенной системе.

Установка GSM-модуля.

Выходы и входы GSM-модуля показаны на рисунке:

GSM-модуль необходимо размещать вне металлических конструкций. Если Вас интересует контроль за температурой в определенном помещении, то модуль можно разместить в нем (проверьте наличие в помещении достаточного уровня сети сотового оператора!) Модуль соединяется с автозапуском 5-ю проводами. Провода могут быть любые (модуль потребляет около 500 мА).

Настройка GSM-модуля.

Необходимо приобрести SIM-карту сотового оператора и выбрать тариф. Так как общение с модулем происходит только посредством SMS сообщений, тариф выбирайте по их минимальной стоимости и отсутствию абонентской платы.

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

Вставьте SIM-карту в телефон и ПОЛНОСТЬЮ ОЧИСТИТЕ телефонную книгу SIM-карты. Далее Вам необходимо заполнить телефонную книгу следующим образом (это лучше делать на телефоне, который показывает номера ячеек сим-карты, т. к. крайне важен именно такой порядок заполнения ячеек):

В 1-ю ячейку SIM-карты необходимо ввести номер телефона 1 администратора. В поле «Имя» вводим слово «Админ 1» (или любое другое слово). В поле «Номер» вводим номер телефона администратора в формате: 89991234567 или +79991234567 (значения не имеет).

Во 2-ю ячейку SIM-карты необходимо ввести номер телефона 2 администратора. В поле «Имя» вводим слово «Админ 2» (или любое другое слово). В поле «Номер» вводим номер телефона администратора в формате: 89991234567 или +79991234567 (значения не имеет). Если планируется работа с одним администратором, то в эту ячейку необходимо ввести номер 1 администратора.

В 3-ю ячейку SIM-карты необходимо ввести команду запроса баланса сотового оператора. В поле «Имя» вводим слово «Баланс» (или любое другое слово). В поле «Номер» вводим команду запроса баланса (обычно это *100# или *102# ).

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

Далее красный гаснет и зажигается в пол накала зелёный (как правило на очень короткое время что можно не заметить), затем светодиоды вместе мигнут 2 или 3 раза. 2 раза в случае если указаны только номера администраторов а номер баланса не указан, 3 раза - если все три ячейки прописаны и прошло успешное их чтение. Далее контроллер сохраняет текущее состояние системы. Реле выключено (всегда после подачи питания). Рабочий режим - красный потушен, зелёный мигает. Если зелёный мигает равномерно - сеть не найдена. Если редко кратковременная вспышка - то сеть найдена и может происходить обмен по сети GSM.

Использование GSM-модуля для дистанционного управления пуском генератора.

GSM-модуль можно использовать для дистанционного пуска генератора. Режим «Управляемый пуск» активируется в настройках системы. Позволяет в отсутствие внешней сети пускать генератор с подключением нагрузки и останавливать при необходимости.

Использование GSM-модуля для дистанционного управления нагрузкой.

GSM-модуль можно использовать для дистанционного управления включением нагрузки. Т. к. силовая часть в автозапуске уже есть, то используя режим «Управление нагрузкой», можно организовать вкл/выкл нагрузки при наличии внешней сети. Это удобно использовать, например, для дистанционного управления электроотоплением на даче в зимний период, что позволит Вам приезжать в любое время в уже прогретый дом. С помощью термометра можно контролировать процесс нагрева.

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

Использование GSM-модуля для дистанционного отключения системы.

GSM-модуль можно использовать для дистанционного отключения/включения системы. Режим «Управляемое включение» активируется в настройках. Позволяет корректно выключать систему и снова включать при необходимости.

Подключение GSM-модуля к автозапуску изображено на схеме:


 
Статьи по теме:
Проверка рабочей тормозной системы
Нормативы эффективности торможения рабочей и аварийной тормозных систем, соответствующие СТБ 1641-2006, приведены в таблице: Таблица. Нормативы эффективности торможения транспортных средств рабочей и аварийной тормозных систем при проверках на стендах
Транспондеры: какой выгоднее?
9 января 2018 года по некоторым маршрутам платной дороги М-11 Москва-Санкт-Петербург на участке 15-58 км, строительство и эксплуатация которого осуществляется в рамках концессионного соглашения, меняется стоимость проезда. Для легкового транспорта основны
Микросхема MC34063 схема включения
Для питания портативной электронной аппаратуры в домашних условиях зачастую используют сетевые источники питания. Но это не всегда бывает удобно, поскольку не всегда по месту использования имеется свободная электрическая розетка. А если необходимо иметь н
Как своими руками сделать педаль джимми хендрикса
Всем привет! Сегодняшняя статья посвящена примочкостроительству целиком и полностью. После её прочтения, ты сможешь с закрытыми глазами левой пяткой правой ноги собрать свой первый рабочий девайс. Ну или почти.У вопроса «Что заставляет гитариста взять