Подключение модуля sim800l к микроконтроллеру esp8266

Схема подключения SIM800L к ESP32

Поскольку модуль SIM800L у меня используется в дорогом оборудовании, которое должно работать гарантированно, я добавил емкостей в соответствии с рекомендациями datasheet.

Танталовый конденсатор на модуле распаян. Я добавил электролитический конденсатор на 2200 мкФ и остальные емкости по datasheet.

Микроконтроллер ESP32 в данном примере запитывался от USB порта ноутбука.

Поскольку один UART порт используется для передачи данных, а второй для приема, вместо преобразователя уровней можно использовать резистивный делитель. Но с таким способом связан один риск. Если все распаять правильно, но при этом программно, при задании номеров пинов для RX и TX, можно их перепутать и сжечь TXD порт чипа SIM800. Поэтому в случае такой экономии нужно очень внимательно писать код.

Если делать конвертацию уровней по-серьезному, то тогда нужно использовать плату преобразователя уровней, подав со стороны микроконтроллера опорное напряжение 3,3V, а со стороны SIM800L опорное напряжение снятое с простой цепочки резистор и стабилитрон. Её расчет здесь. Стабилитроны бывают на 2,7 V и 3 V.

В datasheet модуля указан максимальный уровень логической единицы на входе RX — 3,1 В (при минимальном 2,1 В).  Соотвественно, 2,7 V будет достаточно, а 3 V уже рискованно. Если посмотреть в datasheet напряжение для выхода опорного напряжения SIM800L

Как раз минимальное значение 2,7 V. Сразу говорю — я эту схему пока не пробовал, ограничился простым вариантом с резистивным делителем.

Подключение SIM800L к ESP32 Devkit 38 pin Mini 360 DC-DC step down converter

Mini-360 DC-DC конвертер — не самый лучший вариант. Он нормально выдерживает нагрузку, SIM800L грузится с ним стабильно, однако качество переменного резистора весьма посредственное. При вибрации в производственном помещении, где будет размещаться оборудование, выходное напряжение может «уходить» от установленного значения. Поэтому этот DC-DC конвертер заменю на что-то более качественное.

Однако, модуль крошечный, поэтому легко разместился вместе с емкостями (за исключением электролитического) и резисторами под модулем SIM800L. GSM модуль обычно монтирую на гнездах.

Блок питания 12V, 3A

В качестве блока питания использовался 12 V блок питания на 3A. За цену в 4 USD — просто волшебное качество. Брал здесь.

Сразу отмечу, что мощная 4-х портовая USB зарядка AUKEY 5V, по 2.4 A на каждый USB порт, подключенная к блоку питания для breadboard-а, нагрузку не потянула. При загрузке модуля идет пиковое потреблении мощности и напряжение на GSM модуле просело до 3 V. Модуль даже не стартанул толком. Возможно, проблема в БП для breadboard-а. Он даже без нагрузки выдавал меньше 5 V.

Реализация

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

Схема подключения sim800l к esp8266

Распиновка более чем стандартная. Пин с питанием подключаете к источнику, способному выдавать напряжение в пределах 3.7-4.2 Вольт, или же к трансформатору. TX идёт к RX пину и наоборот. Как только вы выполните спайку и решите протестировать работу модуля, подключив источник питания, о правильности подключения просигнализируют диоды. Далее остаётся активировать модуль по описанному выше методу, и вы сможете использовать АТ-команды для управления. Если захотите подгрузить вспомогательную библиотеку или какие-то весомые медиа, стоит ознакомиться с подключением карты памяти к системе Ардуино.

Для начала давайте протестируем скорость работы порта и информацию о модуле, для этого воспользуемся «AT+IPR?» и «AT+CPAS» соответственно. Если всё в порядке и информация выводится без ошибок, то можно продолжить проверку и протестировать уровень сигнала, а также операторов, которых может увидеть модуль.

Самое главное – Sim800i позволяет звонить на указанные номера и принимать звонки, притом с помощью базовых библиотек.

Это также открывает простор для применения систем с его участием. Если вы захотите написать определённый скрипт, запускающий что-либо по входящему звонку, то учитывайте, что модуль реагирует на него фразой «RING» в командной строке.

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

Передача данных из Arduino на веб-сервер

Для передачи данных на веб-сервер напишем функцию SEND_GPRS с указанием адреса «adress_php», в который будет записываться значение int типа «out_messeng_Server». Для записи значения  типа String нужно вызывать функцию SEND_string_GPRS. В Листинге 9 показана функция отправки данных на сервер.

Листинг 9. Функция отправки данных на сервер.

В корневом каталоге веб-сервера создаем папку in, внутри ее располагаем другие папки со скриптами для обработки приема данных  GSM модуля. Внутренние папки содержат файл index.php и log.txt.

На Листинге 10 показано содержание файла index.php.

Листинг 10. PHP листинг файла index.php.

Как видно, с приходом новых данных происходит перезапись файла log.txt.

Рисунок 13. Собранная схема на макетной плате.

Все компоненты собраны на макетной плате (Рисунок 13). Устройство не требует настроек, после сборки и прошивки сразу готово к работе.

Отладочные средства

Компания SIMCom Wireless Solutions предоставляет универсальные отладочные средства, состоящие из двух основных компонентов:

  1. Отладочный комплект с многофункциональной материнской платой, общей для односимочных 2G-модулей.
  2. Мезонинная (дочерняя) плата, на которой распаян тот или иной модуль.

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

Для работы с двухсимочным 2G-модулем имеется специализированная мезонинная плата. Такое решение позволяет гибко подходить к вопросу знакомства с новыми сериями и не требует значительных денежных затрат.

Понижение напряжения диодом

В некоторых модулях используется понижение питания с помощью диода 1N4007, на котором падает порядка 0,7 V. Как отмечали коллеги, не самая стабильная схема, поскольку при пиковой нагрузке падение напряжения на диоде возрастает и может приводить к просадке напряжения ниже 3,6 V. При низком напряжении или недостаточной мощности модуль перезагружается. Вот пример схемы из китайского модуля SIM800С, подробно рассмотренного в статье.

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

Понижение напряжения питания для SIM800 с помощью диода

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

Режим ограниченной функциональности

Клиент может управлять входом и выходом модуля SIM868 из спящего режима (подана команда AT+CSCLK=1) посредством DTR-сигнала (UART1_DTR, пин 6). В этом режиме, если уровень на DTR высокий и нет прерываний со стороны сети и аппаратных средств (например, прерываний на GPIO или данных в последовательном порту), SIM868 автоматически переходит в спящий режим. При этом он по-прежнему может принимать входящий вызов или SMS из сети, но его последовательный порт (UART) недоступен.

Активация SIM868 в спящем режиме 1 (Sleep mode 1, команда AT+CSCLK=1)

Вывести модуль из спящего режима 1 можно следующими действиями:

  • подать низкий уровень на DTR пин в течение примерно 50 мс;
  • приемом голосового вызова или данных из сети;
  • приемом SMS из сети;
  • получить внешнее прерывание.

Примечание. После того как модуль получил входящий вызов или новое SMS-сообщение, последовательный порт может выдавать сообщения URC об этом, но не позволяет вводить AT-команды. Только после того, как на контакт DTR в течение 50 мс и более подается низкий уровень, последовательный порт готов к вводу AT-команд.

Активация SIM868 в спящем режиме 2 (sleep mode 2, команда AT+CSCLK=2)

В этом режиме SIM868 непрерывно контролирует свой последовательный порт. Если нет передачи данных более 5 с по линии RXD, нет входящих вызовов и сообщений, а также аппаратных прерываний (например, прерывание GPIO), SIM868 переходит в спящий режим 2 автоматически. В этом режиме SIM868 по-прежнему может принимать входящие вызовы и SMS из сети, их приход или появление данных на последовательном порту (первый символ будет потерян) переводят модуль в активное состояние.

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

Существуют и другие способы снижения уровня потребляемого модулем SIM868 тока.

Например, полный отказ от схемной реализации некоторых его рабочих сервисов, а именно: светодиодной индикации STATUS (пин 42) и NETLIGHT (пин 41) (рис

9), либо изменения скважности индикации NETLIGHT

Рис. 9. Рекомендуемое схемное решение по подключению светодиодной индикации к SIM868

Команда AT+CNETLIGHT=0 позволяет полностью отключить индикацию NETLIGHT. Сохранить эту настройку можно командой AT&W. В режиме GPRS также может быть использована команда AT+CSGS, задающая использование индикации NETLIGHT для отображения статуса GPRS-сессии. После подачи команды AT+CSGS=1, при включении модуля, индикация NETLIGHT перейдет в режим мигания (по умолчанию отображение состояния GPRS сессии: 64 мс — включено, 300 мс — выключено). До подачи этой команды состояние пина NETLIGHT соответствует заводским установкам. Отключается индикация статуса GPRS командой AT+CSGS=0, сохранить эту настройку можно командой AT&W.

Команда AT+CSGS=2 задает мигание индикации NETLIGHT в соответствии с настройками оператора

После подачи этой команды имеется возможность задать нужные настройки скважности индикации командой AT+SLEDS (ее синтаксис описан в , с. 182), приведя ее в соответствие с собственными предпочтениями

При этом длительность импульсов и интервал между ними может задаваться в пределах 40–65 535 мс. Сохранение настроек стандартное — AT&W.

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

Кроме перечисленных факторов, следует также учитывать, что мобильное устройство, за счет регулярной перерегистрации в новых зонах (Location Area), разряжает имеющуюся в нем батарею гораздо интенсивнее, чем аналогичное устройство, находящееся на одном месте постоянно либо сравнительно длительные промежутки времени.

Минимальный код EAT

Рассмотрим пример минимального пользовательского Си-кода:

{

            EatEvent_st event;

            while(1)

            {

                        eat_get_event(&event);

                        switch(event.event)

                        {

                                   ...

                        }

            }

}

Здесь app_main — это точка входа, с которой начинается пользовательская программа, а eat_get_event — интерфейс для получения событий от ядра ПО модуля. Пользовательский код выполняется в цикле while и должен вызывать API-функции, параллельно отслеживая события, которые посылает ядро.

Обычно программисту приходится работать с платой, на которой отдельно стоят GSM-модуль и микроконтроллер (MCU), управляющий GSM-модулем при помощи АТ-команд . А в случае с EAT у него возникнет вопрос, как слать GSM-модулю команды и как обрабатывать его ответы. На рис. 3 показан пример, поясняющий, как это можно реализовать в EAT по аналогии с классической архитектурой (раздельный MCU и GSM-модуль).

Рис. 3. Принцип работы классической архитектуры (слева) и EAT (справа)

Видно, что пользовательское ПО по отношению к ядру EAT следует рассматривать как ПО внешнего MCU. Все, что изменится при миграции ПО из внешнего MCU в GSM-модуль, — это синтаксис обращения к ядру EAT и интерпретация результатов. Для пояснения принципа обработки АТ-команды ядром приведен пример простейшего кода:

void app_main(void)

{

            …

            Eat_modem_write(“AT+CSQ\r”,strlen(“AT+CSQ\r”)); // Шлем АТ-команду

            while(TRUE)

            {

                        eat_get_event(&event);

                        switch (event.event)

                        {

                                   case EAT_EVENT_MDM_READY_RD: // При получении ответа от модуля получим индикатор события EAT_EVENT_MDM_READY_RD

                                   {

                                               Progress(); // обрабатываем ответ модуля

                                   }

                                   case …

                        }

            }

}

Типовые схемы

Рассмотрим примеры подключения указанных модулей к контроллерам Arduino.

Принцип дальнейших действий во всех случаях общий: GPRS модуль сопрягается с материнской платой главного контроллера. Для правильного выполнения подключения следует изучить инструкцию к используемой модели Arduino, выяснить распиновку на ней и на компоненте сотовой связи. Далее на собранную систему заводится питание. Когда устройство включено, его переходником USB-UART подключают к ПК и создают программу в среде Arduino IDE или другом удобном пакете ПО разработчика.

Рассмотрим несколько примеров сборки аппаратной части.

Arduino Uno и контроллер SIM800L

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

Изучим распиновку устройства:

Последовательность действий:

  • подключаем плату UТO к компьютеру;
  • к ней подводится питание 12 В через конвертер;
  • минус источника выводится на контакт GND Ардуино, а GND — на контакт минуса конвертера;
  • плюс ИП идет к плюсу преобразователя;
  • плюс конвертера — к плюсу блока GSM;
  • минус с «земли» преобразователя на GND сотового блока;
  • RXT и TXD блока на 2, 3 пины микроконтроллера UNO соответственно.

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

UNO и A6

Здесь напряжение питания стандартное, и конвертер в схему не включается. Платы соединяются напрямую.

Общая схема распиновки:

Принцип соединения контактов:

  • UART_RXD выводится на TX 1 UNO;
  • UART_TXD — на RX 0;
  • GND соединяется с GND на GSM-блоке;
  • пин электропитания VCC0 c кнопкой включения PWR-KEY.

Шилд GSM SIM900 и контроллер Arduino Mega

Пиковая сила тока при активации устройства может достигать 2 А, в связи с чем напрямую питание подключать нежелательно. Перед соединением плат нужно поставить SIM-карту в предназначенный для нее слот и установить TX и RX джамперы:

Последовательность дальнейших действий:

  • желтый провод (TX) объединяется с TX Arduino;
  • зеленым соединяются контакты RX;
  • GND выводится на «землю» микроконтроллера.

Проверить собранный гаджет можно следующим экспериментом:

  • соединить GND и RESET главного микроконтроллера;
  • вставить в разъем сим-карту;
  • подать питание на модуль GSM;
  • подключить центральную плату Arduino к ПК через порт USB, нажать кнопку ON;
  • Если все собрано верно, красный светодиод загорится, а зеленый станет мигать.

Features

Data connections

  • TCP (HTTP, MQTT, Blynk, …)
    • ALL modules support TCP connections
    • Most modules support multiple simultaneous connections:
      • A6/A7 — 8
      • ESP8266 — 5
      • Neoway M590 — 2
      • Quectel BG96 — 12
      • Quectel M95 — 6
      • Quectel MC60/MC60E — 6
      • Sequans Monarch — 6
      • SIM 800/900 — 5
      • SIM 5360/5320/5300/7100 — 10
      • SIM7000 — 8 possible without SSL, only 2 with
      • SIM 7070/7080/7090 — 12
      • SIM 7500/7600/7800 — 10
      • u-blox 2G/3G — 7
      • u-blox SARA R4/N4 — 7
      • Digi XBee — only 1 connection supported!
  • UDP
  • SSL/TLS (HTTPS)
    • Supported on:
      • SIM800, SIM7000, u-Blox, XBee cellular, ESP8266, and Sequans Monarch
      • Note: only some device models or firmware revisions have this feature (SIM8xx R14.18, A7, etc.)
    • Not yet supported on:
    • Not possible on:
    • Like TCP, most modules support simultaneous connections
    • TCP and SSL connections can usually be mixed up to the total number of possible connections

USSD

  • Sending USSD requests and decoding 7,8,16-bit responses
    • Supported on:
    • Not possible on:

SMS

  • Only sending

    Supported on all cellular modules

    SMS is supported, not receiving

Voice Calls

  • Supported on:
  • Not yet supported on:
  • Not possible on:
  • Functions:
    • Dial, hangup
    • DTMF sending

Location

  • GPS/GNSS
    • SIM808, SIM7000, SIM7500/7600/7800, BG96, u-blox
    • NOTE: u-blox chips do NOT have embedded GPS — this functionality only works if a secondary GPS is connected to primary cellular chip over I2C
  • GSM location service

Credits

  • Primary Authors/Contributors:
    • vshymanskyy
    • SRGDamia1
  • SIM7000:
    • captFuture
    • FStefanni
  • Sequans Monarch:
  • Quectel M9C60
  • Quectel M95
  • Other Contributors:

Пример реализации подключения gsm модуля sim800l к мк esp8266

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

Если уменьшение частоты световых сигналов не произошло, то стоит, при помощи АТ-команд, удостовериться, воспринял ли вообще sim800I сеть вашего мобильного оператора и нет ли никакой ошибки. Также проверьте правильность распиновки и как установлена СИМ-карта с антенной, ошибка может быть и в них.

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

Ошибка +CSQ: 0,0

Если команда получения уровня сигнала AT+CSQ возвращает +CSQ: 0,0, то наверняка будут проблемы с регистрацией в сети. Команда AT+CREG? вернет +CREG: 0,2 вместо +CREG: 0,1. Какие действия для разрешения ошибки:

Проверяем в другом устройстве, что SIM-ка корректно регистрируется в сети.
Вставляем в SIM800 в соответствии с пиктограммой на слоте и проверяем командой AT+CPIN, что SIM карта определилась корректно.
Командой AT+CBAND? проверяем, что SIM800 настроен на все диапазоны частот

На моем модуле, когда он нормально регистрируется в сети Билайна, результат: DCS_MODE,ALL_BANDS.

Основной момент на который обратить внимание!!! Не зависимо от того, какой ток держит блок питания или DC-DC step-down модуль, хоть 3A и вы в этом лично убеждались, попробуйте запустить SIM800 от батареи. Возьмите аккумулятор от мобильного телефона на 3,7 В или Li-Ion элемент 18650 на 3,7 V и присоедините плюс батареи к пину V_BAT , а минус — на GND.
Спустя некорое время проверяем уровень сигнала AT+CSQ

Скорее всего проблема с регистрацией разрешится.

Все GSM модули, не важно, дорогой SIM800 или дешевый M590 КРАЙНЕ чувствительны к качеству блока питания. И дело не только в токе, но и в пульсациях

Я запитывал SIM800C от разных БП с макисмальными токами до 2,1 A и он нормально включался, отвечал на AT команды, но не регистрировался в сети. После подключения на батарею TR 18650 сеть сразу нашлась.

Ниже приведены вырезки из design guide для модулей SIM800 и M590. Они почти сходятся в блоке фильтрации. Нужно ставить керамические конденсаторы на 10 pF и 33 pF (у M590 на 100 pF) для сглаживания высокочастотных пульсаций и электролитические хотя-бы на 100 uF, а лучше на 1000 uF.

Фильтры на блок питания для SIM800 Фильтры на блок питания для Neoway M590

Результат

22:21:40.333 -> Read all SMSs.
22:21:40.367 -> Data: 1,"REC READ","+79601XXXXX","","19/05/05,16:52:16+12"
22:21:40.435 -> Message: Test again. 

22:21:40.469 -> Data: 2,"REC READ","+79601XXXXX","","19/05/05,16:53:01+12"
22:21:40.502 -> Message: And again

22:21:40.537 -> Data: 3,"REC READ","+79601XXXXX","","19/05/05,17:12:05+12"
22:21:40.604 -> Message: And one again

22:21:40.637 -> Data: 4,"REC READ","+79601XXXXX","","19/05/05,17:58:59+12"
22:21:40.706 -> Message: Ones again

22:21:40.706 -> Data: 5,"REC READ","+79601XXXXX","","19/05/05,21:27:58+12"
22:21:40.777 -> Message: New message again. 

АТ-команды

Для работы с Bluetooth в модулях SIM800x используются специализированные для этого функционала АТ-команды. Для всей этой серии они являются унифицированными. Ниже приведены основные из них:

  • AT+BTPOWER — включение/выключение Bluetooth;
  • AT+BTPAIRCFG — конфигурирование настроек подключения;
  • AT+BTSCAN — сканирование доступных для соединения устройств;
  • AT+BTVIS — включение/выключение обнаружения модуля серии SIM800x;
  • AT+BTPAIR — управление сопряжением устройств, оснащенных Bluetooth;
  • AT+BTGETPROF — просмотр доступных профилей подключенного устройства;
  • AT+BTACPT — подтверждение запроса на подключение;
  • AT+BTCONNECT — установление соединения с устройством;
  • AT+BTSPPCFG — конфигурирование профиля SPP.

Программная часть

Когда система собрана, ее необходимо запрограммировать. Управление GSM выполняется специфическими функциями и АТ-командами. Устройство принимает их, интерпретирует и выдает определенный результат, отправляя/получая СМС или звонок. Команды задаются через программное обеспечение (такая возможность предусмотрена в IDE) или вводятся напрямую через утилиты работы с портами.

AT-команды

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

Обычно они генерируются управляющим ПО, но могут быть отправлены и с клавиатуры, например, через утилиту монитора порта из поставки Arduino IDE.

Команды делятся на три вида:

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

Набор команд может отличаться в зависимости от контроллера.

Получение и отправка СМС

Пример работы с короткими сообщениями для связки «Arduino + сотовый модуль»:

  • в IDE выполняется директива AT+CMGF=1. Она указывает перейти в формат передачи текстового сообщения;
  • далее вводится AT+CSCS=«GSM». Выбирается кодировка ASCII;
  • AT+CMGS=«номер», где номер указывается полностью (в формате «+7…»);
  • когда выполнена эта команда, вводится непосредственно текст сообщения, и по нажатию ctrl-Z отправляется на выбранный номер.

Если все сделано, интерфейс программы вернет ОК.

Для получения SMS:

  • AT + CNMI = 2,2,0,0,0 — переход в состояние чтения;
  • когда блок GSM получит сообщение, он отправит в порт строку +CMTI: «SM»,2. Цифра может отличаться, она обозначает номер СМС в очереди;
  • для прочтения следует дать директиву AT+CMGR=2.

Прием голового звонка

Для выполнения потребуется включить библиотеку разработчика GSM.h:

Если SIM-карта защищена пин-кодом, его также следует определить в скетче:

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

В обязательном порядке объявляется переменная отслеживания статуса подключения к мобильной сети:

Соединение выполняется посредством функции gsmAcess.begin(). Если процесс завершен успешно, функция возвращает строку GSM_READY.

Далее нужно указать, что сотовый модем переведен в режим приема звонка. За это отвечает функция vcs.hangCall(). Следующая важная функция — getvoiceCallStatus. При входящем звонке она вернет строку RECEIVINGCALL. А для определения номера звонящего следует воспользоваться retreiveCallingNumber.

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

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

Fritzing part for SIM800C

Поскольку не нашел нужного fritzing part для SIM800C, пришлось нарисовать. Файл здесь.

Цена: 8.4$

Перейти в магазин

«Мне надо дистанционно открывать дверь. Вернее, отключать магнит, который держит дверь. » Вот такая неожиданная просьба, причем речь изначально шла о gsm модеме, не то чтобы я знал все подробности, но на вопрос как сделать простейший выключатель решил ответить обзором. Буквально 5-7 строчек кода и все дела.

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

Чем примечательна именно данная версия модема: 1. В отличие от первой версии питается от 5В и не требует никаких dc-dc преобразователей, которые, между прочим тоже стоят денег — все выполнено непосредственно на плате. А как результат меньше устройств, меньше проводов, меньше соединений. 2. Отличная внешняя антенна 3. Маленькие размеры 40х28 мм 4. Отверстия под крепление. Не всегда и не везде их делают 5. Антенну будет очень удобно крепить в корпус, судите сами, разъем крепим на корпусе, на него навинчиваем антенну, не обязательно штатную, и проводом подключаем модем.

По конструктиву все, дальше я это чудо загуглил на предмет кто-что с ним делал и скачал библиотеку SIM908IDE100, которая мне понравилась, но справедливости ради должен отметить, что она единственная которую я смотрел. Подключение: 5В модуля на 5В ардуино GND на GND TXD на 2 вывод ардуино RXD на 3 вывод ардуино VDD не задействован RST не задействован

После подключения библиотеки открыл пример: Собрал все воедино и прошил Вот пара моментов, на которые можно обратить внимание: gsm.readSMS(smsbuffer, 160, n, 20) smsbuffer — массив символов формата char с смс сообщением n — номер телефона соответственно, чтобы не выводить свой номер телефона в терминал я закомментировал строку // Serial.println(n); Если модем поймал сеть, то светодиодный индикатор на модеме мигает примерно раз в 3 секунды, на после прошивки в терминале вы увидите надпись status=READY Далее я отправил на номер сим карты в модеме (кстати не забудьте ее поставить!) смс с текстом «Hello» Попробовал раскомментировать следующие строки, вбил свой номер и отправил смс уже себе на телефон Одним словом все работает замечательно, теперь к открытию двери путем отправки смс. Собственно ничего сложного, для проверки будем использовать светодиод на 13 контакте ардуино (будем им мигать через смс) и добавляем пару строчек кода

Не спешите кидать тапки, потом я спросил у программиста КАК?! сделать лучше.

Принципиальная разница между первым и вторым вариантом в том, что после консультации со знающим человеком наступает просветление))) А если по нормальному, то смс заканчивается символом /r, я этого естественно не знал, поэтому сравнивал только 2 или 3 символа массива, остальная часть не учитывалась. Т.е. если послать Onnnn и On — результат будет идентичный, в последней версии этого недостатка нет.

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

Сейчас на рынке продаются модули сотовой связи для связи в сетях 4G и 5G, которые имеют весьма впечатляющие возможности. Но автор проекта стремился сделать его максимально простым в изготовлении, поэтому и GSM модуль он стремился выбрать попроще. Поэтому он выбирал между модулями Ai-thinker A9 и SIM800L. Достоинством модуля Ai-thinker A9 является его очень низкое энергопотребление, но его существенными недостатками для данного проекта является то, что он не поддерживает обнаружение DTMF сигналов и его встроенный аудио вход работает не достаточно удовлетворительно. В связи с этим автор проекта выбрал GSM модуль SIM800L, который хоть и отличается «гигантским» энергопотреблением, но зато имеет отличный встроенный аудио вход чтобы автоматически воспроизводить голос и имеет встроенную поддержку обнаружения DTMF сигналов – нам это понадобится чтобы определять какую клавишу на телефоне нажал пользователь. Но главным недостатком этого модуля является, конечно же, энергопотребление, мы это еще обсудим далее в статье.

Тестирование SIM800

  • Запускаем Arduino IDE.
  • В настройках порта (Tools -> Port) выбираем порт на котором работает USB-to-TTL конвертер.
  • Переходим в Tools -> Serial Monitor (Ctrl-Shift-M).
  • Выбираем скорость 115200. Где-то проскакивает, что у чипа работает автоопределение скорости. По моим тестам — не работает.
  • Набираем AT и ввод. Документация по AT коммандам SIM800 здесь.
  • Если модуль рабочий и корректно подключен, то появится хотя-бы ответ «OK». Если модуль определил SIM-ку и зарегистрировался в сети оператора, то будет развернутая информация.
AT
OK

+CPIN: READY

Call Ready

SMS Ready
  • Отправляем команду: AT+COPS=?После нескольких секунд ожидания появится ответ, вроде: +COPS: (2,»Bee Line GSM»,»BeeLine»,»25099″),(1,»MTS»,»MTS»,»25001″),(1,»MOTIV»,»MOTIV»,»25020″),(1,»MegaFon»,»MegaFon»,»25002″),,(0-4),(0-2). Модуль «видит» ближайшие соты. Уже хорошо.
  • Проверим статус PIN кода на SIM карте командой: AT+CPIN? Если появился ERROR — что-то не так.
  • Запускаем команду: AT+CMEE=2. Эта команда при выводе сообщения об ошибке предоставляет максимально детальную информацию. Сохраняем командой: AT&W.
  • Поворяем комунду AT+CPIN? Появляется детальный код ошибки. Например, в моем случае: +CME ERROR: SIM not inserted.
  • Проверяем установку SIM карты. SIM слот распаянный на модуле «без защиты от дурака», т.е. позволяет вставить SIM-ку любым способом, без привычных ограничений как на сотовом телефоне или в других типах слотов. На SIM слоте мелко есть пиктограмма правильной установки карты.
  • Повторяем команду AT+COPS=? Ответ изменился. Появились строчки «Call Ready» и «SMS Ready», значит карта определилась нормально и зарегистрировалась в сети оператора:
AT+COPS=?
Call Ready

SMS Ready

+COPS: (1,"Bee Line GSM","BeeLine","25099"),(1,"MOTIV","MOTIV","25020"),(3,"MTS","MTS","25001"),(3,"MegaFon","MegaFon","25002"),,(0-4),(0-2)

OK
  • Отправляем команду AT+CSQ для получения уровня сигнала. Первая цифра в ответе должна быть отлична от нуля. Например, +CSQ: 23,0.
  • Проверяем регистрацию в сети оператора командой AT+CREG? Правильный ответ: +CREG: 0,1

Обработка исключительных случаев

Все команды GSM/GPRS-модулей серии SIM800 имеют время исполнения

Разработчику ПО хоста важно знать время исполнения отдельно для каждой команды, чтобы исключить бесконечное ожидание реакции на команду (открытие соединения, к примеру). Значения максимального времени исполнения задокументированы, их можно найти в системе команд GSM/GPRS-модуля

В таблице 2 указаны значения максимального времени исполнения основных команд встроенного TCP/IP-стека. Как видно, некоторые команды исполняются десятки секунд. Это объясняется зависимостью этих команд от быстродействия сети и сервера.

Таблица 2. Максимальное время исполнения команд встроенного стека TCP/IP

Команда

Максимальное время исполнения, с

CIICR

85

CIPSTART

160

CIPSEND

645

CIPCLOSE

120

CIPSHUT

65

Рис. 6. Нормальная процедура закрытия соединения с сервером

Получается, некоторые команды могут исполняться несколько минут, прежде чем можно будет понять, что что-то пошло не так. В М2М такие задержки, конечно, недопустимы. Как же обрабатывать случаи, когда время исполнения команды затянулось, а реакции так и не последовало? Все зависит от того, на каком этапе установления соединения произошел сбой (ошибка или вышел таймаут) и в каком состоянии находится стек (рис. 6). Причин сбоя может быть несколько, и реакция может быть разная, но главное вернуть встроенный стек в исходное состояние IP INITIAL или IP STATUS. Рассмотрим на примере несколько случаев:

  1. Сервер вышел из строя или доступ в Интернет ограничен (потеря пакетов, высокий пинг и проч.). В этом случае все команды из таблицы 1 приведут к длительному времени исполнения. Чтобы повторить попытку соединения с этим или другим сервером, следует перед этим закрыть сокет командой AT+CIPCLOSE=1. При этом деактивировать контекст командой AT+CIPSHUT не обязательно.
  2. Потеря связи с GSM-сетью. Такое возможно в местах плохого покрытия сети, из-за ухудшения условий приема сигнала или внезапной выемки SIM-карты из прибора. Здесь следует проверить готовность SIM-карты (AT+CPIN? или чтение ячейки памяти командой AT+CMGR), уровень сигнала (AT+CSQ), наличие регистрации в сети (AT+CREG?) и доступ к услугам GPRS (AT+CGATT?). Если физический доступ к GSM-сети пропадет после или во время открытия сессии командой AT+CIPSTART, то придется закрыть соединение (AT+CIPCLOSE=1), деактивировать контекст и восстанавливать соединение с начала, сразу после того как будут успешно проверены SIM-карта, уровень сигнала, регистрация в сети и доступ к услугам GPRS.
  3. Истек срок жизни контекста. Когда открывается контекст, сеть выделяет определенные ресурсы на его поддержание. Операторы сотовой связи не допускают мертвые контексты, когда ресурс занят, а обмена данными в этом контексте нет. Если обмена данных нет, то через некоторое время оператор деактивирует контекст. У разных операторов это время разное примерно от трех до семи минут. Модуль при этом в порт UART выдаст уведомление: +PDP DEACT. Его нужно обработать и сбросить встроенный стек в исходное состояние командой CIPSHUT. Однако иногда в некоторых приложениях требуется поддерживать контекст в активном состоянии. Для этого можно периодически обмениваться с сервером пустыми данными, типа эха. Но это неудобно в реализации. Взамен можно воспользоваться функцией поддержания соединения командой AT+CIPTKA .
  4. Нагрузка на сеть GSM. Всем известно, что GPRS-услуги и голосовая связь делят общие ресурсы. GPRS всегда выделяется оператором по остаточному принципу, а у голосовых соединений наивысший приоритет. Контекст может быть деактивирован оператором принудительно. Внешне данный случай выглядит как предыдущий (п. 3), и обрабатывать его следует аналогично.

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

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

Авторы статьи предлагают ответ на вопрос, как быстро и с минимальными трудозатратами произвести переход на более совершенную и бюджетную серию 2G-модулей — SIM800, а именно SIM800/SIM800F/SIM800C, предлагаемую дистрибьютором МТ-Систем в качестве фокусной замены модемов SIM900R. Материал будет полезен специалистам, следящим за тенденциями рынка беспроводных технологий для M2M-решений, разработчи…

На примере SIM800C, наиболее популярного и самого бюджетного модуля из серии SIM800x компании SIMCom Wireless Solutions, рассматриваются варианты установления Bluetooth-соединений. Статья будет полезна широкой аудитории: специалистам, инженерам, разработчикам устройств, применяемых в подвижных средствах, в системах автоматизации, телеметрии, передачи данных и в охранных системах.

Компания NETGEAR объявила о доступности в России новых роутеров, обеспечивающих бóльшую зону покрытия, скорость загрузки и непрерывное потоковое воспроизведение HD-контента. Новый интеллектуальный роутер Wi-Fi 802.11ac — NETGEAR R6250— обеспечивает устойчивое беспроводное покрытие на всей территории больших домов и квартир и в три раза бóльшую скорость по сравнению с устройствами стандарта …

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector