Arduino gsm модуль: принцип работы, популярные модели

Требования мобильного оператора

Чтобы получить доступ к сети, вы должны быть абонентом оператора мобильной связи (либо по контракту, либо по предоплате), иметь GSM-совместимый девайс вроде GSM-модуля Arduino или мобильного телефона, а также быть обладателем SIM-карты (от Subscriber Identity Module, что значит «модуль идентификации абонента»). SIM-карта предоставляется мобильным оператором, и в ней содержится информация вроде телефонного номера. Кроме того, на ней может храниться ограниченное число контактов и SMS-сообщений.

Чтобы использовать GPRS-доступ в интернет и чтобы Arduino могла запрашивать/обслуживать веб-страницы, вам нужно узнать у оператора APN, а также имя пользователя и пароль. Более подробно об этом читайте ниже – в разделе «Подключение к интернету».

Часто задаваемые вопросы FAQ

1. Нет связи с Arduino по последовательному порту.

Проверьте питание платы.

Проверьте правильность установки перемычек.

2. Не отправляются sms-сообщения

Проверьте наличие внешнего питание GSM GPRS shield.

Проверьте баланс sim-карты.

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

Итак, SIM900 – GSM-модуль компании SIM COM, управляется AT-командами, умеет посылать SMS, совершать звонки, организовывать прямое CSD-соединение, обмениваться информацией по GPRS.

В моих руках оказалась заказанная из Китая отладочная плата SIM900 GPRS shield – совместимая с платформой Arduino.

На плате находится сам чип SIM900, разъёмы для микрофона и наушников, переключатель источника питания (от внешнего разъёма или от Arduino), антенна, несколько светодиодов для индикации режимов работы, разъём для батарейки (если нужны часы реального времени), кнопка включения/выключения. Хорошее описание я нашёл на wiki производителя

. Там же приведён код для управления модемом в различных режимах.

Пример отправки sms-сообщений с платы Arduino

Рассмотрим пример использования отправки sms-сообщений при уменьшении температуры воздуха в помещении ниже определенного значения. Нам потребуются следующие детали:

модуль GSM GPRS Shield – 1 шт;

sim-карта сотового оператора с положительным балансом;

блок питания 12В – 1 шт;

Схема подключения показана на рисунке 4.

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

Приступим к написанию скетча. Каждые 30 секунд получаем данные влажности и температуры с датчика DHT11. Используем библиотеку DHT. При значении температуры ниже критического отправляем sms на номер указанный в константе PHONE. И делаем паузу на 10 минут.

Содержимое скетча показано в листинге 2.

Листинг 2

// подключение библиотек

#include

#include «DHT.h»

// телефон для отправки sms

#define PHONE_NUMBER «+7928222222»

// создание объектов

SoftwareSerial gsm(7, 8);

DHT sensorDHT(2, DHT22);

// пороговое значение температуры

#define TEMPP 18

unsigned long millissend;

// запуск последовательного порта

Serial.begin(9600);

// запуск датчика DHT

sensorDHT.begin();

// запуск SoftwareSerial

gsm.begin(9600);

if (millis()-millissend>30*1000) { // показания каждые 30 секунд?

// получение данных с датчика DHT

int h = sensorDHT.readHumidity();

int t = sensorDHT.readTemperature();

LED Status Indicators

There are three LEDs on the SIM900 GSM/GPRS shield which indicates connectivity or power status. By observing these LEDs you can get a visual feedback on whats going on with the shield.

PWR: This LED is connected to the shield’s power supply line. If this LED is on, the shield is receiving power.

Status: This LED indicates SIM900’s working status. If this LED is on, the chip is in working mode.

Netlight: This LED indicates the status of your cellular network. It’ll blink at various rates to show what state it’s in.

  • off: The SIM900 chip is not running
  • 64ms on, 800ms off: The SIM900 chip is running but not registered to the cellular network yet.
  • 64ms on, 3 seconds off: The SIM900 chip is registered to the cellular network & can send/receive voice and SMS.
  • 64ms on, 300ms off: The GPRS data connection you requested is active.

Некорректный GET-запрос на сервер

В самом начале своей работы по передаче данных по GPRS я допустил ошибку, которая стоила мне не одного дня мучений. Не имея достаточного опыта работы по взаимодействию с сервером посредством GET-запросов, я, набравшись поверхностных знаний в интернете, составил запрос вида:

Этот запрос не является корректным, однако его отлично «кушал» браузер и прокси сервер, с которого я отправлял запросы для отладки — именно поэтому я считал запрос верным.

Самое удивительное то, что SIM900 тоже отлично справлялся с «плохим» запросом (а отправлял запросы я тогда через TCP-IP стек). Однако, в один прекрасный день сервер начал отвечать на такие запросы ошибкой 404. Произошло это по так и не выясненным обстоятельствам, то ли хостинг-провайдер поменял алгоритмы обработки запроса (он открещивается от этого), то ли это сделал мобильный оператор. Но факт остаётся фактом. Тогда же я попробовал передать тот же запрос через HTTP — всё работало. Объясняется это тем, что внутренний HTTP протокол модуля SIM900 (как я уже говорил, по-сути встроенный браузер) умеет сам правильно «распарсивать» некорректные запросы и транслировать в сеть уже в правильном виде. Это еще один плюс (сомнительный, конечно же) использования HTTP, поскольку позволяет программисту некоторые неточности. А вообще, конечно, запрос должен быть написан правильно и выглядеть вот так:

С таким корректным запросом SIM900 успешно обменивается и через TCP-IP стек, и через HTTP.

Как получить данные о текущей версии ПО модуля?

Текущую ревизию программного обеспечения GSM/GPRS-модуля можно получить по ответу на команды AT+GMR, AT+CGMR и AT+GSV.

Запрос — AT+GMR

Ответ — Revision:1137B02SIM900R64_ST_ENHANCE_EAT

Ответ включает в себя:

  • 1137 — идентификатор семейства модулей; в данном случае модуль относится к серии 900.
  • B02 — номер текущей прошивки в данной ветке прошивок.
  • SIM900R64 — аппаратную модификацию модуля; это модуль SIM900R с 64-Мбит flash-памятью.
  • ST — производителя flash-памяти, использованной в данном модуле.
  • ENHANCE — прошивку с поддержкой расширенной функциональности.
  • EAT — прошивку с поддержкой технологии Embedded AT.

Как получить и поддерживать данные о текущем времени с помощью GSM/GPRS-модуля?

Существует несколько способов получить данные о времени:

Обновление времени RTC при регистрации в сети можно включить командой AT+CLTS=1.

Далее нужно перезагрузить модуль либо перерегистрироваться в сети, подав последовательность команд AT+CFUN=0 и AT+CFUN=1. При регистрации в сети появится новое URC-сообщение вида

*PSUTTZ:<year>,<month>,<day>,<hour>,<min>,<sec>,"<time zone>",<dst>.

Затем значение текущей даты и времени можно запросить у модуля командой AT+CCLK.

Чтобы получить время по протоколу NTP, можно воспользоваться командами:

AT+SAPBR=3,1,»CONTYPE»,»GPRS»;+SAPBR=3,1,»APN»,»internet.ru»;+SAPBR=3,1,»USER»,»usr»;+SAPBR=3,1,»PWD»,»pwd»;+SAPBR=1,1 // задаем точку доступа, указываем имя пользователя и пароль, поднимаем GPRS-соединение и дожидаемся OK как признака успешного получения IP.

AT+CNTP=»pool.ntp.org»,4,1 // указываем адрес NTP-сервера, текущий часовой пояс и номер профиля, который будет использоваться при запросе.

AT+CNTP // запрашиваем время с сервера. Если в команде AT+CNTP добавить четвертый параметр =2, то при запросе также будут обновлены данные часов реального времени.

Можно получить информацию о времени с собственного сервера, например по каналу GPRS, и установить текущие показания часов реального времени с помощью команды AT+CCLK=»yy/MM/dd,hh:mm:ss+zz».

Чтобы поддерживать работу часов реального времени, нужно поддерживать питание RTC-домена, когда с модуля будет снято основное питание. Для этого можно обеспечить подачу питания на вход VRTC от конденсатора достаточной емкости либо от батареи/аккумулятора.

Зависание SIM900

Иногда при обмене по GPRS возникают ситуации, после которых модуль может зависнуть. Этому виной могут быть некорректные данные, пришедшие по сети и загнавшие в ступор SIM900, или помехи на линии обмена модуля и контроллера, при которых SIM900 получил «не то, что ждал», или ещё какие-то неведомые проблемы. Производитель чипа предупреждает о том, что это может происходить и предлагает в таких случаях перезагружать модуль с помощью специальной последовательности импульсов, подаваемых на вход PWRKEY.

Однако, как выяснилось, это не всегда помогает — после такой перезагрузки модуль может «проснуться» всё ещё «глюкнутым». И об этом тоже нас предупреждает производитель, если внимательно читать DataSheet на модуль. Вот что рекомендуется в документации:

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

Код Arduino – тестирование AT команд

Для отправки AT команд и взаимодействия с платой расширения SIM900 мы будем использовать монитор последовательного порта. Приведенный ниже скетч позволит Arduino связываться с платой расширения SIM900 в мониторе последовательного порта. Прежде чем приступить к подробному разбору кода, подключите Arduino к компьютеру, скомпилируйте приведенный ниже код и загрузите его в Arduino.

Открыв монитор последовательного порта, убедитесь, что выбрана опция «NL & CR»!

Скетч начинается с включения библиотеки и ее инициализации выводами Arduino, к которым подключены Tx и Rx платы расширения SIM900.

В функции мы инициализируем последовательные каналы связи между Arduino и Arduino IDE, Arduino и платой расширения SIM900 со скоростью передачи 9600 бод.

Теперь, когда мы установили базовое соединение, мы попытаемся установить связь с платой расширения SIM900, отправляя AT команды.

– это самая базовая AT команда. Она также инициализирует автоматическое определение скорости. Если всё работает, вы должны увидеть эхо символов AT, а затем ОК, сообщающее, что все в порядке, и модуль вас правильно понимает! Затем вы можете отправить несколько команд для запроса и получения информации о плате расширения, таких как:

– проверить «уровень сигнала» — первое число – это уровень в дБ, он должен быть выше 5. Чем выше, тем лучше. Конечно, это зависит от вашей антенны и местоположения!

– получить номер SIM-карты – она проверяет, что SIM карта найдена, и вы можете сверить номер, записанный на карте.

– убедиться, что вы зарегистрированы в сети. Второе число должно быть 1 или 5. 1 означает, что вы зарегистрированы в домашней сети, а 5 – в роуминге. Другие цифры, отличающиеся этих двух, означают, что вы не зарегистрированы ни в одной сети.

В основном цикле программы мы вызываем пользовательскую функцию , которая непрерывно ожидает любые входные данные от последовательного монитора и отправляет их на плату расширения SIM900 через вывод D8 (Rx платы расширения). Она также постоянно читает вывод D7 (Tx платы расширения) на случай, если плата расширения выдает какие-либо отклики.

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

Рисунок 16 – Базовые AT команды SIM900 GSM Shield на Arduino

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

– получить имя и версию платы расширения

– проверить, что вы подключены к сети

– вернуть список операторов, присутствующих в сети

– вернуть состояние литий-полимерного аккумулятора. Второе число является процентом от полного заряда (в данном случае это 93%), а третье число является фактическим напряжением в мВ (в данном случае 3,877 В)

Рисунок 17 – Получение дополнительной информации от SIM900 GSM Shield с помощью AT команд на Arduino

Для получения дополнительной информации о AT командах SIM900 смотрите документ ниже.

Сложно ли работать с Arduino?

Модули Arduino отличаются высокой популярностью среди многих пользователей. Это стало возможным благодаря своей простоте и доступности.

Программы для управления модулями пишутся с использованием обычного C++ и дополнений в виде простых функций управления процессами ввода/вывода на контактах модуля. Кроме этого, для программирования может применяться и бесплатная программная среда Arduino IDE, функционирующая под Windows, Linux или Mac OS.

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

Как создать сигнализацию с помощью Arduino?

К основным требованиям, которым должна отвечать созданная gsm сигнализация на Ардуино своими руками относятся:

  • оповещать владельца объекта о взломе или проникновении;
  • поддержке внешних систем типа звуковая сирена, сигнальные фонари;
  • управление сигнализацией через СМС или звонок;
  • автономная работа без внешнего питания.

Для создания сигнализации потребуется:

  • модуль Arduino;
  • набор функциональных датчиков;
  • GSM модуль или модем;
  • источник автономного питания;
  • внешние исполнительные устройства.


Модули для создания GSM сигнализации на Ардуино

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

Как это работает?

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

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


Модули в сборе для GSM сигнализации на Ардуино

При отсутствии специального GSM-адаптера его роль может выполнять и обычный мобильный телефон. Кроме отправки СМС-сообщений с предупреждением о тревоге и дозвона, наличие сотовой связи позволит управлять GSM сигнализацией на Ардуино дистанционно, а также контролировать состояние объекта, отправляя специальные запросы.

Выводы

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

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

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

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

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

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

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

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

#include

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

#define PINNUMBER “”

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

boolean notConnected = true;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Итак, SIM900 – GSM-модуль компании SIM COM, управляется AT-командами, умеет посылать SMS, совершать звонки, организовывать прямое CSD-соединение, обмениваться информацией по GPRS.

В моих руках оказалась заказанная из Китая отладочная плата SIM900 GPRS shield – совместимая с платформой Arduino.

На плате находится сам чип SIM900, разъёмы для микрофона и наушников, переключатель источника питания (от внешнего разъёма или от Arduino), антенна, несколько светодиодов для индикации режимов работы, разъём для батарейки (если нужны часы реального времени), кнопка включения/выключения. Хорошее описание я нашёл на wiki производителя

. Там же приведён код для управления модемом в различных режимах.

SMS Autorun

Эта функция позволяет реализовать в конечном устройстве удаленную настройку и диагностику. SMS Autorun позволяет исполнять АТ-команды, принятые модулем в SMS-сообщении. Так, пользователю открывается возможность управлять работой модуля SIM900 в момент, когда оборудование находится на объекте. Это может избавить от необходимости производить демонтаж оборудования для последующей его настройки на стороне производителя и позволит сэкономить деньги и время.

Ниже приведен пример работы функции SMS Autorun.

Сторона А — исполнитель АТ-команд, принятых в SMS:

AT+CAUTORUN=1," XXXXXXXXX " // Включить функцию
OK
Сторона В — отправитель АТ-команд в SMS:
AT+CMGS="XXXXXXXXX" // Абонентский номер стороны А
> AT+CSQ
+CMGS: 78
OK
Сторона А — исполнитель АТ-команд, принятых в SMS:
+CMTI: "SM",15 // Принято SMS
Сторона В — отправитель АТ-команд в SMS:
+CMTI: "SM",1 // Принято ответное SMS с результатом исполнения АТ-команды
AT+CMGR=1
+CMGR: "REC UNREAD"," XXXXXXXXX","","12/08/14",14:27:10+3"
+CSQ: 21,0 // Результат полученный от стороны А
OK
OK

Передача данных по GPRS с помощью SIM900

Свои первые опыты по передаче данных через GPRS я начал, используя для управления SIM900 платформу Arduino UNO (просто потому, что она была под рукой). Для начала купил хостинг с сервером под Apatche и развернул на нём простейшее приложение, которое умело отвечать на GET-запросы. Получилось! Я все так же посылал команды с ПК контроллеру Arduino, который в свою очередь пересылал их SIM900.

Всё работало корректно до тех пор, пока GET-запросы были достаточно короткими (до 100 символов). Но как только запросы стали длиннее — начались сбои: запросы передавались не полностью. Было замечено, что глюки могут появиться или исчезнуть даже при увеличении/уменьшении управляющей программы Arduino на несколько строк. Впоследствии выяснилось, что сбои связаны с программным USARTом, которой Arduino UNO использует для общения с SIM900, т.к. такой USART целиком и полностью зависит от программного цикла ядра контроллера. При малом количестве данных, они успевают передаваться всегда, а при увеличении их количества — результат передачи зависит от длительности программного цикла.

Вывод из всего вышесказанного: использовать программный USART при общении с SIM900 НЕЛЬЗЯ, особенно когда речь идёт о большом количестве передаваемых данных.

У Arduino Uno всего один «железный» интерфейс USART, который был занят под обмен с ПК, поэтому пришлось отказаться от UNO, заменив её на Arduino Mega, которая не страдает недостатком «железных» USARTов. После такой «рокировки» работа устройства стала стабильной и корректной.

Использование

  • После сборки и прошивки устройство требует загрузки конфигурации (с помощью утилиты).
  • При подключении к USB нормальная работа устройства приостанавливается, очередь неотправленных сообщений очищается.
  • При неудачной отправке SMS, устройство произведет повторную попытку через 2 минуты, затем через 5, 10, 20, дважды через 40 и затем каждые 12 часов.
  • После принятого звонка, он будет завершен через 3 минуты.
  • Звуковая сигнализация включается на 30 секунд.
  • События «открытие двери», «движение» и «изменения освещения» срабатывают не чаще, чем раз в 20 мин.
  • Если питание устройства отсутствует более 3 часов, то записанная история измерения температуры сбрасывается.

Подключение GSM модулей к Arduino

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

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

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

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

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

Ножку RX с модуля подключается к TX на Arduino,а ножка TX подключается к пину RX на Ardiono. GND с модуля соединяется с GND на Arduino. Вывод VCC на модуле соединяется с PWR_KEY.

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

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

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

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

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

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

  • соединить на Arduino выводы RESET и GND (в результате данные будут передаваться напрямую от шилда к компьютеру);
  • вставить сим-карту в шилд и подать питание на шилд;
  • плату Arduino нужно подключить к компьютеру и нажать кнопку включения.

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

SIM900: TCP-IP стек или HTTP? Что лучше?

Изучая руководство по управлению модемом, я обнаружил что существует две группы AT-команд. Первая группа используется для передачи данных через встроенный TCP-IP стек, а вторая использует HTTP протокол уже реализованный внутренней логикой SIM900. Сколько я ни мучал Google и Яндекс пытаясь узнать, чем же отличаются данные способы, каковы плюсы и минусы каждого из них, — ничего не нашёл, поэтому попробовал оба и делюсь своим практическим опытом тут.

Оба способа рабочие и имеют право на существование.

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

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

Таким образом, при выборе способа обмена я все-таки остановился на протоколе HTTP.

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

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

Adblock
detector