Удаленное управление нагрузкой с помощью веб-приложения и gsm модуля sim800l

Оглавление

Arduino Sample Code For Sim800L

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

Troubleshooting Guide 

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

 1 Out of Coverage Area: 

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

  2 Functionality is Enabled 

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

Передача данных с подтверждением в командном режиме

AT+CIPSEND? // Проверяем максимальный размер данных, которые можно послать в сторону удаленной стороны. Этот размер зависит от сети.

+CIPSEND: 1460

OK

AT+CIPQSEND? // Нормальный режим передачи данных. В этом режиме каждая порция высланных данных подтверждается сообщением SEND OK, что означает, что сервер данные принял и подтвердил их получение.

+CIPQSEND: 0

OK

AT+CIPSEND=100 // Передача 100 байт данных.

> // Приглашение. hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello // Размер данных не должен быть больше 1460 байт, 
и в конце блока данных следует байт 0x1A.

SEND OK // Данные успешно переданы.

AT+CIPSEND // Передача данных произвольного размера.

> hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello // Размер данных не должен быть больше 1460 байт, и в конце блока данных следует байт 0x1A.

SEND OK

Быстрая передача данных в командном режиме

AT+CIPQSEND=1 // Режим быстрой передачи данных. Этот режим подразумевает передачу данных без ожидания от сервера подтверждения о получении.

OK

AT+CIPSEND=100 // Передача 100 байт данных.

> hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello

DATA ACCEPT:100 // Модуль принял данные в свой буфер и вышлет их в сторону сервера в фоновом режиме.

AT+CIPACK // Проверка: 300 байт передано на сервер, из них 300 байт сервером приняты и подтверждены.

+CIPACK: 300,300,0

OK

AT+CIPSEND // Передача данных произвольного размера происходит аналогичным образом.

> hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello

DATA ACCEPT:100

AT+CIPACK

+CIPACK: 400,400,0

OK

AT+CIPQSEND=0 // Нормальный режим передачи данных.

OK

Прием данных в командном режиме, автоматический вывод принятых данных

AT // Модуль находится в командном режиме;

OK

AT

OK

HelloHelloHelloHelloHelloHelloHelloHelloHelloHello // Данные, принятые от сервера, выводятся из порта UART модуля автоматически. Данные выводятся как есть, и это неудобно, поэтому будут полезны следующие настройки.

AT

OK

AT+CIPHEAD=1 // Перед блоком данных, принятых от сервера, добавлять заголовок формата +IPD,<длина блока данных>.

OK

AT+CIPSRIP=1 // При приеме данных показывать уведомление в виде RECV FROM:<IP адрес отправителя>,<порт>.

OK

Прием данных в командном режиме, ручной вывод принятых данных

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

AT+CIPCLOSE // Закрытие соединения.

CLOSE OK

AT+CIPSTATUS

OK

STATE: TCP CLOSED

AT+CIPSHUT // Деактивация контекста.

SHUT OK

AT+CIPRXGET?

+CIPRXGET: 0 // Автоматический вывод принятых данных.

OK

AT+CIPRXGET=1 // Настройка ручного вывода данных.

OK

AT+CSTT

OK

AT+CIICR

OK

AT+CIFSR

100.69.113.182

AT+CIPSTART=”TCP”,”81.95.20.18”,2020

OK

CONNECT OK

AT

OK

AT

OK

+CIPRXGET: 1,”81.95.20.18:2020” // Уведомление 
о приеме данных от сервера.

AT

OK

AT+CIPRXGET=4 // Уточнение размера принятых данных.

+CIPRXGET: 4,100 // Пришло 100 байт данных.

OK

AT+CIPRXGET=2,20 // Вывести 20 байт в порт UART;

+CIPRXGET: 2,20,80,”81.95.20.18:2020” // В буфере модуля осталось 80 байт.

HelloHelloHelloHello // Запрошенные 20 байт данных.

OK

AT+CIPRXGET=2,20 // Вывести 20 байт в порт UART.

+CIPRXGET: 2,20,60,”81.95.20.18:2020” // В буфере модуля осталось 60 байт.

HelloHelloHelloHello // Запрошенные 20 байт данных.

OK

AT+CIPRXGET=2,60 // Вывести 60 байт в порт UART.

+CIPRXGET: 2,60,0,”81.95.20.18:2020” // Приемный буфер модуля пуст.

HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello // Запрошенные 60 байт данных.

OK

AT+CIPRXGET=4 // Проверка наличия данных в буфере модуля.

+CIPRXGET: 4,0 // Буфер пуст.

OK

Обмен данными с сервером в прозрачном режиме

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

AT+CIPCLOSE

CLOSE OK

AT+CIPSHUT

SHUT OK

AT+IFC=2,2 // Аппаратный контроль потока должен быть включен, чтобы избежать потери данных.

OK

AT+CIICR

OK

AT+CIFSR

100.104.155.220

AT+CIPSTART=”TCP”,”81.95.20.18”,2020

OK

CONNECT // Соединение установлено.

* * *

Благодаря подробному освещению возможностей встроенного стека протоколов TCP/IP новой линейки модулей серии SIM800, выгод его применения и приведению объемного исчерпывающего примера работы со стеком в различных режимах, данная статья поможет разработчику быстро освоить материал официальных руководств по применению модулей SIMCom Wireless Solutions и послужит в разработке отправной точкой.

SIM800L Interfacing with Arduino Uno

Now you are all set to play with Sim800l. After interfacing, when you power this module, you will see that the onboard LED is on and blinking in different patterns. This blinking pattern of the onboard LED tells us the working status of the SIM800l module. 

Searching network Connection Established GPRS Enabled

Pattern1: LED is blinking after each 1s this means that SIM800l is turned ‘ON’ but not established the connection. Pattern2: LED is blinking after each 3S. It means sim800l has successfully established the connection. Pattern3: LED is blinking after each 2S. It means the GPRS feature is turned on. Troubleshooting SIM800L Module In the above section, we have learned about the blinking pattern of the onboard LED and by analyzing this factor, we can find out if the module is working or not but it is not enough if the problem is in the UART port. To test the functionality of the port and SIM we can shoot some AT commands and for this, we can use the following troubleshooting AT commands. 

Программное обеспечение для разработки 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, который можно записать в модуль.

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

Недостатки платы SIM800C

Не могу сказать, что модуль SIM800C разработан удачно. Замечания такие:

  • Расстояние между гребенками не кратно 2,54 мм, поэтому модуль не встает в breadboard макетные платы. Этой проблемы нет даже у дешевой платы SIM800L. Она встает в макетную плату без проблем. Это очень большой косяк разработчиков!!!
  • Для понижения напряжения с 5V до 3,7V используется схема с двумя диодами. Как говорится в статье, падение напряжения на диодах в обычном режиме работы порядка 0,6 — 1,2V и SIM800 достаточно напряжения для работы. Однако при пиковых значениях токов падение напряжения возрастает и на чипе напряжение может быть ниже 3,3 V. В результате, например, при запуске, когда энергопотребление высокое, модуль может многократно перегружаться. Поэтому я рекомендую запитывать модуль через вход VBAT подав напряжение 3,8 V c DC-DC конвертера напряжения (DC-DC stepdown converter) или от батареи.

Распиновка платы модуля SIM800C

  • 5V: power supply pin, the only input DC5V, used to power the board.
  • V_TTL: access control board microcontroller core target voltage of 5V / 3.3V (according to its own microcontroller is much to distinguish kernel V), this pin is used to convert the GSM module board TXD and RXD for the corresponding TTL logic. Описание пространное. На этот пин нужно подать 5V при подключении к платам с уровнем логики 5V (например, Arduino) и 3,3V при подключении GSM модуля к ESP8266/ESP32.
  • GND: power supply ground
  • TXD: send pin serial port module, TTL level (not directly connected to RS232 level)
  • RXD: receive pin serial port module, TTL level (not directly connected to RS232 level)
  • DTR: Data Terminal Ready
  • SPKP: Core Audio output pin
  • SPKN: Core Audio output pin
  • MICN: Core Audio input
  • MICP: Core Audio input
  • RI: Ring core pin tips
  • VRTC: RTC pin external battery
  • GND: power supply ground
  • PWR: This pin can turn down or turn off the module. Этот пин должен быть замкнут на GND на время не менее 1 с для включения модуля. Чтобы модуль стартовал сразу при включении — PWR закорачивают на GND.
  • GND: power supply ground
  • VBAT: lithium battery input pin, 3.3v-4.4v

Схема соединения SIM800C c USB-to-TTL конвертером

Перед использованием модуля SIM800C с микроконтроллерами стоит проверить его работоспособность соединив с конвертером USB to TTL.

Таблица соединения SIM800C с USB-to-TTL converter

SIM800C pin USB-to-TTL converter БП +5 V Примечания
TXD RXD
RXD TXD
GND GND GND
+5V +5V Блок питания на пиковы ток не менее 1 А!!!
V_TTL +5V
PWX GND Закоротить пин PWX на GND, чтобы модуль стартовал сразу при включении питания.

Схема подключения модуля SIM800C

Лучше подавать сначала питание на модуль GSM, а затем уже подключать USB к PC, но это не критично.

Класс излучения и антенны

К выбору Bluetooth-антенны для разрабатываемого устройства стоит подойти столь же серьезно, как и к выбору GSM-антенны. Прежде всего, следует определиться с максимальным расстоянием, на котором предполагается связываться посредством этой технологии с другими устройствами. Класс мощности передатчиков Bluetooth модулей SIM800x соответствует приблизительно значению 1,5, при этом их максимальная выходная мощность составляет 10 дБм (номинальное значение — 7,5 дБм). То есть максимальная дальность бесперебойной связи, при отсутствии препятствий в зоне прямой видимости и использовании антенн с круговой диаграммой направленности, составит около 25 м. Если установление связи на предельных значениях этой дистанции не предусматривается, можно использовать решение, в котором антенна разведена непосредственно на плате. Если же требуется связь на расстоянии более 25 м, рекомендуется использовать направленные антенны, имеющие заметно более высокие коэффициенты усиления излучаемого сигнала.

11. Геолокация по LBS. и микрофон

На основании УК РФ Статья 138.1. «Незаконный оборот специальных технических средств, предназначенных для негласного получения информации» и ч.1 ст.376 УК Беларуси «Незаконное изготовление, приобретение либо сбыт средств для негласного получения информации»
запрещается вносить конструктивные изменения в устройство, а именно подпаивать микрофон и вносить изменения в прошивку, что может превратить ваше устройство в спейц средство и у вас будут проблемы с законом.

Запрещается заливать скетч с раскоментированной строками:

Код только для ознакомления.

Хотя это не GPS треккер, но в теории модем может определять свое расположение по информации базовых станциий сотового оператора, аналогично как и в смартфонах без GPS, точность при этом составляет от 100 до 800 м, в зависимосте от местности, в городе обычно 100-200 м.

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

Возможные проблемы и их устраниение:

  • Модем постоянно отваливается от сети — подать стабильное питание 3.5-4.4V c пиковым током в 3A !

  • После подачи питания модем не возвращает , и , модем не определил скрость, решение — швырнуть в модем команду которая настроит в модеме скорость порта 9600, режим ЭХО, детектирование DTMF сигналов, тип кодировки СМС, автоизвещение о входящем смс, длительность тоновых сигналов, отображение ошибок и сохранит все настройки в энергонезависимую память.

  • если ардуино постоянно перезагружется (не снимает трубку), то навешиваем дополнительных керамических конденсаторов на 0,1мкф на шину питания 3.3V Ардуино как можно ближе к микросхеме, и заменяем спиральную антенну на выносную, вся проблема из-за ВЧ наводок от переотражения в машине

  • если устройство включает стартер на рабртающем двигателе то не подключен провод обратной связи — подключите его

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

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

  • если температура с датчиков не отображется в СМС отчете, то они физически не подключены

  • если модуль ревизии ниже Revision:1418B04SIM800L24 то скорее всего AT+CREC работать не будет

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

Схема интерактивного автоответчика на основе платы 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 готов к установлению соединения с сетью.

Bluetooth-протоколы и профили модулей 800-й серии

Bluetooth имеет многоуровневую архитектуру, состоящую из основного протокола, протоколов замены кабеля, протоколов управления телефонией и заимствованных протоколов. Фактически, спецификация Bluetooth определяет только пять уровней: физический (RF), базовый (baseband, комбинация аппаратных и программных функций), протоколы управления каналом LMP (Link Management Protocol — аутентификация, инициализация соединений и шифрование) и L2CAP (Logical Link Control and Adaptation Protocol — отвечает за процедуры формирования и сборки пакетов), сетевой уровень и уровень приложений (профилей). Профилем называется набор возможностей и/или функций устройства, реализуемых посредством Bluetooth. Доступ клиента к устройству предоставляется на уровне профилей (рис. 1).

Рис. 1. Стек протоколов Bluetooth и доступ к нему со стороны клиентских устройств

К популярным профилям, наиболее широко востребованным в самых различных приложениях и поддерживаемым (или поддержка которых может быть реализована) модулями 800-й серии, относятся:

  • SPP (Serial Port Profile) — профиль, позволяющий осуществить замену стандартного порта беспроводным. SPP является базовым для DUN, FAX, HSP и AVRCP.
  • OPP (Object Push Profile) — базовый профиль передачи данных с инициацией со стороны отправляющего устройства («клиент»), предоставляющий возможность отправки и получения изображений, файлов и пр.
  • HFP (Hands-Free Profile) (AG and HF roles) — профиль передачи одноканального аудио. Используется для связи телефона и беспроводной гарнитуры.
  • A2DP (Advanced Audio Distribution Profile) — передача двухканального потока аудио к любому беспроводному устройству. Используется, в основном, при подключении беспроводной гарнитуры к удаленному устройству.
  • AVRCP (Audio/Video Remote Control Profile) позволяет управлять медиафункционалом бытового оборудования (ТВ, аудиоустройства, смартфоны, планшеты и т. д.).
  • DUN (Dial-up Networking Profile) — стандартный профиль для предоставления доступа в Интернет. Базируется на SPP, включает в себя команды PPP и AT, определенные в спецификации ETSI 07.07.
  • PBAP (Phone Book Access Profile) позволяет получить или отправить данные из телефонной записной книги устройств/устройства.

Чтобы задействовать тот или иной профиль, необходимо установить сопряжение между устройствами (если оно не было установлено ранее), после чего следует установить соединение по требуемому профилю и начать работу. Встречная работа с устройствами Bluetooth 4.0 LE (Low Energy) модулями 800-й серии не поддерживается.

Arduino Code – Reading SMS

Now let’s program our Arduino to read incoming messages. This sketch is very useful when you need to trigger an action when a specific SMS is received. For example, when the Arduino receives an SMS, you can instruct it to turn on or off a relay. You got the idea!

The sketch is similar as earlier except below code snippet. Once the connection is established, we send below AT commands:

AT+CMGF=1 – Selects SMS message format as text. Default format is Protocol Data Unit (PDU)

AT+CNMI=1,2,0,0,0 – specifies how newly arrived SMS messages should be handled. This way you can tell the SIM800L module either to forward newly arrived SMS messages directly to the PC, or to save them in message storage and then notify the PC about their locations in message storage.

Its response starts with +CMT: All the fields in the response are comma-separated with first field being phone number. The second field is the name of person sending SMS. Third field is a timestamp while forth field is the actual message.

Note that this time we have NOT kept the loop function empty as we are polling for newly arrived SMS messages. Once you send the SMS to SIM800L GSM module, you will see below output on serial monitor.

Expanding Arduino SoftwareSerial Buffer Size

If your message is long enough just like ours, then you’ll probably receive it with some missing characters. This is not because of a faulty code. Your SoftwareSerial receive buffer is getting filled up and discarding characters. You are not reading fast enough from the buffer.

The simplest solution to this is to increase the size of the SoftwareSerial buffer from its default size of 64 bytes to 256 bytes (or smaller, depending on what works for you).

On a Windows PC, go to C:\Program Files (x86) -> Arduino -> hardware -> Arduino -> avr -> libraries -> SoftwareSerial (-> src for newer version of Arduino IDE) Open SoftwareSerial.h and change the line:

to

Save the file and try your sketch again.

Expanding Arduino SoftwareSerial Buffer Size

Запись бинарного файла 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.

Сферы применения

Рис. 2. Выводы модуля SIM800H (вид снизу)

Если разработчика не оттолкнут более привередливый диапазон питающих напряжений 3,4–4,4 В (у SIM900 3,2–4,8 В) и корпус формата LGA (рис. 2), который подразумевает только автоматическую пайку в печи, то модуль SIM800H может применяться в тех же приложениях, где и серия SIM900: мониторинг автотранспорта, автомобильные охранно-поисковые системы, платежные терминалы, телеметрия удаленных промышленных объектов, охранно-пожарные системы, терминалы и шлюзы общего применения.

Но замысел производителя в выпуске нового модуля заключался отнюдь не в замене серии SIM900, а в расширении применяемости выпускаемых GSM/GPRS-модулей, особенно там, где малый размер и низкое энергопотребление являются генеральными требованиями (рис. 3). Это относится к такому оборудованию, как:

  • бытовые счетчики электроэнергии;
  • бытовые счетчики газа;
  • GPS/ГЛОНАСС-трекеры (персональные или скрытые закладки для авто и велосипедов);
  • датчики задымления;
  • умное страхование (трекер с интерфейсом OBD2) и др.

Рис. 3. Области применения малогабаритного GSM/GPRS-модуля SIM800H

hardware specs

  • Quad band GSM/GPRS module
  • Supply voltage: 3.4-4.4V
  • Interface: USART 2.8V

The module requires a maximum 4.4V on Vcc from a «strong» power source.Manufacturer states that consumption can be up to 2A ( in peaks ).
With a 5V power supply, we can either use a 1N4007 diode, for example ( it has a 0.7V drop ), or use a simple resistor voltage divider:

It can be used with any USB-TTL module & a laptop or any uC.
While most of the sellers claim it to be 5V tolerant ( & it seems to be ), the hardware design manual, however, defines the maximum voltage of the HIGH level to be 2.8V.To follow the design manual guidelines, we can use another resistor voltage divider:

Aside info, both 1.8V & 3.0V SIM cards are said to be compatible

Тестирование 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

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

Разработчики могут протестировать работу модулей SIM800x в соответствии с приведенными в настоящей статье примерами, используя специализированные отладочные комплекты производства компании SIMCom Wireless Solutions.

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

Рис. 3. Отладочный комплект для работы с модулями 800-й серии

Те, у кого остались отладочные платы для модулей 900-й серии (версий SIM900-EVB_V2.01 и позже), могут использовать их для работы со всеми модулями 800-й серии, приобретая последние в исполнении на переходном мезонине — SIM800x-TE.

Исключением из этого унифицированного отладочного комплекса является анонсированный летом 2016 г. еще один модуль этой линейки — SIM868, миниатюрный беспроводной четырехдиапазонный комбо-модуль в корпусе LCC/LGA, поддерживающий обмен данными и работу в сетях сотовой связи стандартов GSM/GPRS (2G) и прием сигналов со спутников GPS/ГЛОНАСС (GNSS).

Рис. 4. Комбо-модуль SIM868

Отличительные особенности SIM868 — это высокая чувствительность ВЧ-тракта и поддержка различных дополнительных возможностей, таких как детектирование/генерация DTMF, запись/воспроизведение аудиофайлов, встроенные протоколы POP3, SMTP, MMS, FTP, HTTP, SSL и др. Поддерживается GPRS multi-slot class 12 (↨85,6 кбит/с). В качестве дополнительных возможностей в модуле предусмотрена поддержка Bluetooth 3.0 или одновременная работа двух SIM-карт (Dual Standby).

В модуле присутствуют интерфейсы 2×UART (GSM/GPRS)+1×UART(GNSS), USB, GPIO, ADC, SD, I2C, RTC, аналоговые аудиоинтерфейсы. Габариты устройства 15,7×17,6×2,3 мм; напряжение питания 3,4–4,4 В; диапазон рабочих температур –40…+85 °C.

Работа с этим модулем требует использования специализированной отладочной платы.

Наличие, состав и стоимость отладочных комплектов можно уточнить, отправив запрос в техническую поддержку по беспроводным решениям (wireless@mt-system.ru). Обновленные версии встроенного ПО модулей и подробная инструкция по их обновлению также предоставляются пользователям по отдельному запросу.

* * *

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