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

Схема проекта

Схема интерактивного автоответчика на основе платы Raspberry Pi и модуля SIM800L представлена на следующем рисунке.

Подача питания на модуль SIM800L: одна из главных составляющих успешной работы данного проекта – это обеспечение достаточного питания для модуля SIM800L. Напряжение питание для данного модуля может составлять от 3.7V до 4.2V – хорошо подходит для питания от литий-полимерных батарей (Li-po batteries). Оптимальное напряжение питания для модуля составляет примерно 4V. В схеме мы использовали понижающий конвертер (Buck converter) LM2596 для преобразования напряжения 12V 2A с выхода адаптера питания в напряжение питания 4V, которое требуется модулю SIM800L. Также убедитесь в том, что вы используете достаточно толстые и надежные провода для соединения понижающего конвертера и модуля SIM800L (чтобы по ним мог протекать достаточно большой ток).

Если питание будет недостаточно или соединения в этом месте будут плохие, то модуль SIM800L может самопроизвольно сбрасываться и передавать неправильные данные по последовательной связи. Поэтому убедитесь в том, что модуль SIM800L подключен к «правильному» адаптеру 12V 2A достаточно толстыми проводами с небольшим сопротивлением.

Последовательная связь между модулем SIM800L и платой Raspberry Pi: если вы посмотрите предыдущие проекты на нашем сайте с использованием GSM модулей, то вы увидите, что для взаимодействия с данными модулями (в том числе и с SIM800L) необходимы так называемые AT команды. Данные команды используются для совершения/приема звонков, передачи/приема сообщений, обнаружения нажатия клавиш и т.д. В данном проекте мы будем формировать AT команды с помощью языка Python на Raspberry Pi. Для этого в нашем проекте используется конвертер USB to TTL – чтобы подключить контакты Rx и TX модуля SIM800L к USB порту платы Raspberry Pi.

Аудио вход модуля SIM800L от платы Raspberry Pi: модуль SIM800L имеет в своем контакте микрофонный вход – контакты MIC+ и MIC- на модуле. При совершении звонка любой аудио сигнал, подаваемый на эти контакты, будет воспроизводиться в телефоне корреспондента, которому мы звоним. Обычно к этим контактам подключается микрофон, но в нашем проекте нам необходимо воспроизводить заранее записанный голос с платы Raspberry Pi. Поэтому мы будем подключать к разъему 3.5mm jack платы аудио кабель, нам необходимо конвертировать этот сигнал в аудио сигнал микрофонного уровня чтобы иметь возможность принимать его на GSM. Для этой цели можно использовать какое-нибудь профессиональное устройство, применяемое в звукозаписи, но автор проекта соединил эти контакты непосредственным образом и просто уменьшил уровень звука в плате Raspberry Pi на 2 единицы – он на практике проверил, что данное решение работает вполне хорошо.

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

Примечание: напряжение на выходе понижающего конвертера LM2596 может регулироваться в определенных пределах, поэтому прежде чем подключать к нему модуль SIM800L отрегулируйте напряжение на выходе конвертера LM2596 с помощью встроенного в него потенциометра до величины 4V, иначе, если напряжение на его выходе окажется более чем 4.2V, это может необратимо повредить модуль LM2596.

Если вы дошли до этого момента, то подайте питание на конструкцию проекта и вставьте SIM карту в модуль. Убедитесь в том, что вы вставили SIM карту в правильной ориентации и корректно закрепили антенну модуля. Если все работает так, как надо, то встроенный светодиод на модуле SIM800L должен начать мигать каждые 3 секунды. Это будет означать что модуль SIM800L готов к установлению соединения с сетью.

Возможности подключения Sim800l к микроконтроллеру esp8266

Для смарт-домов и множества поделок требуется получать уведомление о местоположении платы, будь то дистанционная дверь или обычный трекер. Вот лишь краткий список поделок, которые можно создать, совмещая esp8266 sim800:

  1. Умный дом. Практически любую технику для умных домов можно настроить на определённые патерны при приближении объекта. Но зачем устанавливать датчики движения, если можно просто прикрепить в wi-fi плате sim800, вшить в какой-то предмет одежды мк с аккумулятором (благо, много энергии не потребуется) и автоматически включать свет или открывать дверь при приближении пользователя.
  2. Разнообразные отслеживающие устройства. Речь не идёт о противозаконных жучках и прочих устройствах, нарушающих ваше право на неприкосновенность. Однако мк может работать отдельно от ардуино, а если к нему прикрепить sim800, общие размеры устройства не превысят спичечный коробок. Просто оберните всё в металлический корпус и прикрепите к ключам, в качестве брелока. Отныне найти смартфон, ключи и даже вашу машину на парковке будет в разы проще.
  3. Робототехника и смежные направления. Здесь можно долго говорить о развитии современного виртуального интеллекта и нейросетях, но зачастую, чтобы создавать карту местности и ориентироваться в ней, железякам недостаточно датчиков. И если вы занимаетесь чем-то подобным, то gps модуль пригодится. Особенно он удобен в паре с дронами.

Когда вы определитесь с конечной целью проекта, следует разобраться в нюансах вопроса. Подключение устройств к вышеназванному микроконтроллеру такое же, как у стандартных плат ардуино, разница лишь в количестве доступных пинов. GPS трекер требует для работы от 3.7 до 4.2 вольт, в отличие от стандартных 5, выдаваемых микроконтроллером. Это следует учитывать при построении схемы платы и соответствующе подбирать вспомогательные источники питания. Либо устанавливать трансформаторы и резисторы, в зависимости от того, что вы ещё будете подсоединять к конечной системе.

Регистрируясь в сети, модулю потребуется приблизительно 2А, но это его пиковое потребление и в дальнейшем необходимая сила тока снизится до 1-1.2 А.

Как только вы подключите трекер к системе, необходимо будет его запустить и отправить первые команды, лучше всего подойдут АТ и АТ+. Только после этих действий модуль, наконец, начнёт посылать данные и отвечать на ваши запросы, поэтому не стоит беспокоится, если вы его подсоединили, диод мигает, но никаких реакций на скрипты нет. Вам просто необходимо активировать Sim800i при первом использовании, чтобы он успел зарегистрироваться в сети.

Также не стоит рассматривать Sim800i, как альтернативу ESP8266, чем грешат многие пользователи на форумах. Если вы натыкались на подобные заявления, можете смело утверждать, что автор в жизни не работал с ардуино. В первую очередь, сравнивать вспомогательную плату и микроконтроллер – бессмысленно. Не говоря уже о том, что одно из устройств создано для координации, отправки и принятия запросов по беспроводному интернету, а второе является GSM GPRS модулем. Соответственно, они являются хорошим дополнением друг к другу, но никак не альтернативой.

Схема платы SIM800C

В datasheet модуля указан максимальный уровень логической единицы на входе RX — 3,1 В (при минимальном 2,1 В). Для конвертации TTL уровней на плате SIM800C разведен конвертер. В принипе достаточно было конвертер поставить только на RX вход, поскольку микроконтроллеры Arduino/ESP8266/ESP32 чувствительны к низкому входному напряжению TTL с SIM800C.

Конвертер TTL уровней и преобразователь напряжения 5V -> 3,7V модуля SIM800C

Схема двунаправленного конвертера уровней довольно стандартная и обеспечивает приведение напряжения логической 1 на SIM800 к уровню VDD_EXT. Это напряжение снимается с SIM800 и по datasheet соотвествует 2,8 V.

Напряжение на выходе VDD_EXT чипа SIM800

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

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

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

Вероятно, в данном случае использовали более дорогую схему согласования уровней, чтобы гарантировать, что пользователь неосторожными действиями не сожжет RX порт чипа SIM800. В случае резистивного делителя это можно сделать попутав Rx и Tx

Ну и важно для полноценного согласования уровней SIM800 с микроконтроллером 5-ти вольтовой логики, когда уровень логический единицы может быть высоким, так что микроконтроллер не будет воспринимать уровень логической единицы на выходе Tx

Замечу, что при использовании дешевого модуля SIM800C/L без конвертера уровней, даже при подключении его напрямую к ESP8266/ESP32 с уровнем логики 3,3 V вместо максимальных 3,1 V, указанных в datasheet, можно вывести SIM800 из строя. По крайней мере у меня один модуль SIM800L перестал реагировать на RX. Видимо, внутри чипа нет защитных диодов, либо они не справились даже с такой небольшой разницей в напряжении.

Поэтому при подключении модуля SIM800 без конвертера уровней к ESP8266/ESP32 тоже нужно добавить хотя-бы резистивный делитель на вход RXD.

Резистивный делитель напряжения для подключения SIM800 без конвертера TTL уровней к ESP8266/ESP32

Напряжение питания модуля SIM800 (VBAT) 3,4 — 4,5 V, рекомендуемое 4 V при максимальном токе до 2А. Модуль достаточно прожорлив, поэтому его нельзя запитывать от платы Arduino и от маломощных USB зарядок, дажы не вывести их из строя.

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

Схема фильтрации питания платы SIM800C

Слот SIM карты, в отличие от недорогого модуля SIM800L, подключен к чипу с защитой диодной сборкой SMF05C. Она предохраняет чип SIM-карты и SIM800C от статического электричества.

Суперконденсаторы в паре с GSM модулем SIM800/SIM7020

Хорошее качество обеспечивает питание от аккумуляторной батареи. Если мощности источника питания недостаточно, её можно компенсировать суперконденсатором. Он добавит энергии для SIM800 в моменты пикового потребления. Я заказывал суперконденсаторы на Aliexpress.

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

Ниже схема использования суперконденсатора SPC1520 для демпфирования мощности Li-SOCl2 (литий-тионилхлорида)  батареи ER34615, которая обеспечивает емкость 19 А*ч, но пиковый ток всего 500 мА, а максимальный продолжительный ток порядка 230 мА. Но это пример для NB-IoT модуля, которые в пике потребляют порядка 500 мА.

Components You Will Need

Hardware Parts

  •  Arduino Uno 
  •  SIM800l module 
  •  Connecting cables 
  •  2G Sim card (Please note SIM800l is a 2g GSM module, this means that the 4G sim card will not work with this module. If you are looking for 4G GSM module then click on this link) 
  •  Resistors (1k and 2.2k)  
  •  3.7V battery  
  •  Breadboard 

 Note-    If you are using an Arduino as a microcontroller and not using a resistor divider Ckt then you will damage the Sim800l module. 

Softwares

  • Arduino IDE 
  • Software serial.h Library   

This is the part list you will need when working on a SIM800l module. Now, we’ve got all the things that will help us to play with sim800l module. Now it’s time to hook up this module with the microcontroller. Here we are using Arduino UNO as a microcontroller. To demonstrate it I have shared the interfacing diagram please take a lookFig. Interfacing Diagram

Тестирование 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 модуля:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Программное обеспечение для разработки EAT-приложений

Определившись с аппаратной частью, можно приступать к установке и настройке ПО для разработки EAT-приложений, которое можно запросить у локального дистрибьютора или у службы технической поддержки SIMCom Wireless Solutions .

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

  • RealView Development Suite v3. 1 сосредойразработкиEclipse ;
  • SIM800H_EAT_140516_ECLIPSE, пример проекта под среду Eclipse ;
  • 01, программа для записи ПО в память программ модуля ;
  • 1032, USB-драйвервиртуальногоCOM-порта.

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

Рис. 8. Импорт примера проекта

После нажатия кнопки Finish (рис. 8д) нужно очистить проект (рис. 9).

Рис. 9. Очистка проекта

После всего проделанного вы увидите окно проекта (рис. 10). Теперь код примера проекта можно модифицировать и компилировать при помощи интерфейса среды разработки.

Рис. 10. Окно среды разработки Eclipse с загруженным примером проекта

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

Левее от текстового редактора расположен навигатор по проекту, в котором «под рукой» у программиста структура всех файлов, причастных к проекту, включая исходные файлы, бинарный файл ядра, документация, результаты компиляции и проч. Здесь же можно найти руководство программиста с подробным описанием архитектуры EAT и доступных API-функций модуля.

Подробнее о работе Eclipse можно ознакомиться на сайте www.eclipse.org/platform, а мы покажем, как создать свое ПО и записать его в модуль.

Для компиляции кода нужно пройти по меню Project->Build All, при этом в нижнем консольном окне не должно быть ошибок компиляции, иначе компилятор не создаст результат проекта — бинарный файл EAT, который можно записать в модуль.

Запись бинарного файла EAT в память программ модуля

Для загрузки бинарного файла EAT в модуль потребуется программа SIMCom_SIM800H_EAT_flash_Tool (рис. 11).

Рис. 11. Окно программы SIMCom_SIM800H_EAT_flash_Tool для загрузки бинарного файла EAT в GSM-модуль

Модуль SIM800H позволяет загружать ПО через интерфейс USB или UART. В качестве интерфейса для загрузки пользовательского ПО выберем USB. Для этого настроим соответствующим образом программу SIMCom_SIM800H_EAT_flash_Tool.exe, пройдя по меню Options->USB Download/Readback. Также потребуется стереть содержимое FAT-модуля, а для этого пройдем по меню Options->Format FAT (Auto)->Format FAT->OK.

Укажем путь к пользовательскому ПО, к файлу SIM800H32_EAT.cfg, нажав кнопку Scatter/Config File. Он должен быть расположен в директории, где расположен проект (указывался при создании проекта), а в данном примере путь такой: C:\Documents and Settings\Administrator\workspace\SIM800H_EAT_140516_ECLIPSE\core\SIM800H32_EMBEDDEDAT\. Окно программы при этом должно выглядеть так, как на рис. 12.

Рис. 12. Окно программы SIMCom_SIM800H_EAT_flash_Tool после настройки

Далее:

  • Готовим отладочное средство (см. рис. 6), подав питание 5 В от сетевого адаптера, предварительно установив переключатели POWER в состояние «ON», DOWNLOAD — в состояние «OFF».
  • Подключаем SIM800H к ПК через кабель USB, при этом потребуется установка USB-драйвера виртуального COM-порта MS_USB_ComPort_Driver_exe_v1.1032.
  • Устанавливаем переключатель POWER в состояние «OFF», а DOWNLOAD — «ON».
  • Нажимаем в окне программы кнопку Download.
  • Переводим переключатель POWER обратно в состояние «ON», при этом начнется процесс загрузки ПО, по окончании которого появится окно (рис. 13).

Рис. 13. Окно программы SIMCom_SIM800H_EAT_flash_Tool после успешной загрузки пользовательского ПО в модуль

Теперь ресурсы модуля SIM800H находятся в полном распоряжении пользовательского кода. После того как пользовательский код будет полностью отлажен и протестирован «в полях», у разработчика возникнет вопрос, как организовать массовое производство устройств с модулем SIM800H. Первой мыслью будет производить загрузку ПО в модуль на производстве после монтажа модулей на плату, но есть и другой вариант. Компания SIMComWireless Solutions предоставляет возможность по предварительной договоренности производить и поставлять через локальных дистрибьюторов модули с загруженным на заводе пользовательским ПО. Такая модель работы возможна при условии подписания соответствующего соглашения о неразглашении, которое в большей степени защищает разработчика ПО от несанкционированного распространения интеллектуальной собственности, что для SIMCom Wireless Solutions является важным аспектом в работе с клиентами по всему миру.

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

Инициализация

Первым делом необходимо провести инициализацию и первичную настройку модуля SIM800L. Для этого в теле setup() вызываем подпрограмму init_GSM(), которая перезагружает модуль и последовательно отправляет команды:

AT
ATE0
AT+GSMBUSY=0
AT+CPAS
AT+CREG?
AT+CSQ
AT+CBC
AT+CUSD=1,»*111#»

Разберем назначение каждой команды:

  • AT – проверяем готовность модуля в приему команд.
  • ATE0 – отключаем режим ЭХО.
  • AT+GSMBUSY=0 – запрещаем входящие звонки.
  • AT+CPAS – проверяем готовностью и текущее состояние модуля.
  • AT+CREG? – проверка регистрации в сети.
  • AT+CSQ – проверка уровня сигнала.
  • AT+CBC – проверяем питание.
  • AT+CUSD=1,»*111#» – проверяем баланс SIM-карты.

Каждую команду необходимо проверять на наличие положительного ответа «ОК», в противном случае нужно заново отправить команду и дождаться нужного ответа. Как правило, при первом включении команда AT+CPAS с первого раза не дает ответ «ОК», обычно готовность появляется после 2-3 попыток.

На Рисунке 5 показан процесс выполнения подпрограммы init_GSM.

Рисунок 5. Процесс выполнения подпрограммы init_GSM.

На Листинге 1 показан пример обработки команды AT+CPAS.

Листинг 1. Программа обработки команды AT+CPAS.

Во время ответа от модуля в cycle_for() происходит сравнение и установка значения в bit_ok. Если значение равняется 1, то модуль вернул «ОК», при ответе 2 – модуль возвращает «Error». Если положительно ответа нет, то через 1 секунду повторяем отправку i раз.

Arduino Code – Making Call

Now let’s program our Arduino to make call. This sketch is very useful when you want your Arduino to make an SOS/distress call in case of emergency like temperature being exceeded or someone breaks into your house. You got the idea!

Before trying the sketch out, you need to enter the phone number. Search for the string ZZxxxxxxxxxx and replace ZZ with county code and xxxxxxxxxx with the 10 digit phone number.

To place a call following AT commands are used:

ATD+ +ZZxxxxxxxxxx; – Dials a specified number. The semicolon (;) modifier at the end separates the dial string into multiple dial commands. All but the last command must end with the semicolon (;) modifier.

ATH – Hangs up the call

Below screenshot shows call made from SIM800L GSM module.

Selecting Antenna

An antenna is required to use the module for any kind of voice or data communications as well as some SIM commands. So, selecting an antenna could be a crucial thing. There are two ways you can add an antenna to your SIM800L module.

The first one is a Helical GSM antenna which usually comes with the module and solders directly to NET pin on PCB. This antenna is very useful for projects that need to save space but struggles in getting connectivity especially if your project is indoors.

The second one is any 3dBi GSM antenna along with a U.FL to SMA adapter which can be obtained online for less than $3. You can snap-fit this antenna to small u.fl connector located on the top-left corner of the module. This type of antenna has a better performance and allows putting your module inside a metal case – as long the antenna is outside.

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

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

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

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

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

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

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

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

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

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

Система удаленного запуска двигателя автомобиля (SIM800L + Arduino), c управлением по DTMF, и отчетами по SMS.

Без корпуса

Прошивка, скетч

Последние изменения в прошивке:

  • добавлен аглоритм активациии и деактивации автопрогрева

  • добавлен аглоритм активациии и деактивации отправки данных на сервер

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

Конфигурация скетча :

  • номер телефона хозяина для входящих вызовов

  • номер телефона куда отправляем СМС отчет

  • адрес устройства на сервере — нули заменить на свои придуманные цифры

  • имя устройства на сервере народмон — аналогично

  • точка доступа для выхода в интернет вашего сотового оператора

  • имя и пароль для выхода в интернет вашего сотового оператора

  • если вы хотите, или если не хотите отправлять данные на сервер

  • — разрешить отправку SMS отчета, или если жалко денег на SMS

  • — порог детектирования по которому будем считать что авто зарежает АКБ

  • — делитель, для точной калебровки напряжения АКБ

Подключение:

Для подключения к авто c класическим замком на 4 провода, если у вас япошка с замком на 6 проводов, то там все веселее…

  • выход на реле иммобилайзера и первого положения замка зажигания , на плате

  • выход на реле зажигания , на плате

  • выход на реле стартера , на плате

  • выход на включение обогрева сидений или вебасто , на плате (опция)

  • выход на реле управления подогревом сидений, на плате (опция)

  • выход на сигнальный светодиод на плате (опция)

  • вход — для проверки на момент включенного зажигания с ключа, на плате

  • вход — на концевик педали тормоза (АКПП) или на датчик нейтрали в МКПП, на плате

  • вход — на датчик давления масла, если кому горит (опция), на плате

  • вход — для датчиков объема или вибрации (аппаратное прерываение), на плате (опция)

  • вход — для подключения к датчику распредвала через оптопару, если кому горит (опция)

  • линия — на пин 15 K-line шины в OBDII разъёме, если такова имеется (опция)

  • линия — на пин 7 K-line шины в OBDII разъёме, если такова имеется (опция)

  • масса — она же минус, для шины датчиков температуры DS18B20

  • провод — на линию опроса вышеупомянутых датчиков, приходит на 4й пин ардуино с подтяжкой к 3.3V

  • клемма — напряжение питания датчиков температуры

  • клемма — питание платы через предохранитель на 2А от «постоянного плюса»

  • клеммы , и — входы и выходы реле для коммутации антенны обходчика иммбилайзера

Общие сведения об Embedded AT

Как было сказано, EAT позволяет интегрировать Си-код пользователя в программный код модуля. Эта возможность обеспечивается архитектурой специальной версии ПО модуля (стандартное ПО не поддерживает EAT). Принцип взаимодействия пользовательского кода и ядра ПО модуля схематически изображен на рис. 2.

Рис. 2. Структура взаимодействия пользовательского кода и ядра ПО модуля

Для взаимодействия пользовательского Си-кода с ядром ПО модуля от SIMCom Wireless Solutions предоставляются API (Application Programming Interface, «программный интерфейс приложения»), которые дают доступ к ресурсам модуля, таким как:

  • 1,5 Mбайт памяти программы и данных;
  • 500 кбайт оперативной памяти;
  • 29 GPIO, 5 GPIO с функцией прерывания;
  • 16 таймеров;
  • 1 SPI;
  • 1 PWM;
  • 2 UART;
  • 1 USB;
  • 1 ADC;
  • интерфейс клавиатуры 5×5;
  • системные API.

Полный список доступных ресурсов и API зависит от версии СПО с поддержкой EAT.

Разработчик должен знать, что в EAT для локальных переменных выделяется максимум 50 кбайт памяти, при этом размер необходимого объема памяти должен быть предопределен. Это следует учитывать при написании собственных Си-функций.