Использование встроенного TCP/IP-стека WISMO228

№ 2’2011
PDF версия
При разработке M2M-приложений для передачи данных через GSM-сеть можно использовать различные технологии — SMS, модемное соединение в голосовом канале (CSD) или GPRS. Использование GPRS позволяет минимизировать стоимость трафика, однако требует наличия стека IP-протоколов на хост-процессоре или в самом GSMмодуле. В данной статье описываются команды встроенного TCP/IP-стека GSM-модуля WISMO228 и приводятся примеры практической работы с публичными почтовыми серверами.
Встраиваемый модуль TE-WISMO228

Рис. 1. Встраиваемый модуль TE-WISMO228

GSM-модули WISMO218 и WISMO228 компании Sierra Wireless являются продуктами нижнего ценового диапазона, при этом отличаются высоким качеством и построены на основе проверенных временем решениях [1]. Модули WISMO производятся на фабрике, сертифицированной по стандарту ISO TS 16949, и проходят сборку и выходной контроль качества на том же оборудовании, что и продукты для автомобильных применений. Как и другие продукты Sierra Wireless, модули имеют защиту от возможных претензий в области нарушения прав на интеллектуальную собственность, поскольку компания производит все необходимые отчисления держателям патентов в области GSM/ GPRS. К несомненным достоинствам изделий можно отнести широкий диапазон напряжения питания (3,2-4,8 В) и низкий ток потребления в режиме ожидания 1,3 мА (Idle Mode Paging 9). Более подробную техническую информацию по модулям WISMO можно найти в [2]. Основное различие между ними заключается в том, что WISMO218 является двухдиапа-зонным, в то время как WISMO228 может работать в четырех GSM-диапазонах. Начиная с версии прошивки L22 все модули WISMO содержат встроенный TCP/IP-стек. Для разработки приложений можно использовать недорогой встраиваемый модуль TE-WISMO228, выпускаемый ООО «Терраэлектроника». Достоинством этой платы (рис. 1) является возможность подключения WISMO228 как к COM-порту ПК, так и к внешнему микроконтроллеру. Это облегчает знакомство с управляющими AT-командами с помощью терминальной программы и позволяет затем испытать написанную программу хост-контроллера на том же самом «железе». Доступная принципиальная схема [3] позволяет использовать схемотехнические решения платы в своем устройстве.

 

Команды встроенного TCP/IP-стека

Встроенный TCP/IP-стек работает со следующими протоколами: UDP, TCP in connect mode (Client), TCP in listen mode (Server). Поддерживается одновременная работа с несколькими сокетами: UDP — восемь сокетов, TCP Clients — восемь сокетов, TCP Servers — четыре сокета.

В М2М-приложениях обычно используется выделенный сервер, принимающий данные телеметрии на один или одновременно несколько сокетов в режиме TCP или UDP. При этом такой сервер должен иметь выделенный внешний статический IP-адрес. Использование публичных почтовых серверов может быть полезно в тех случаях, когда конечным получателем информации являются индивидуальные пользователи (физические лица) либо когда масштабы проекта не позволяют поддерживать свой собственный круглосуточно работающий сервер. Доступ к общедоступным серверам почты (mail.ru, yandex.ru, rambler.ru, gmail. com и др.) бесплатен, сами сервисы работают достаточно стабильно и предлагают гигабайты дискового пространства для хранения сообщений. Для доступа к своему почтовому ящику можно использовать не только веб-интерфейс: поддерживаются протоколы POP3 (чтение почты) и SMTP (для отправки почты). Именно с помощью этих протоколов обеспечивается доступ к почте для программ, установленных на ПК (Outlook, TheBat! и т. д.). Любое M2M-устройство, оснащенное GSM-модулем WISMO228, может работать с почтой по протоколам POP3 и SMTP на основе команд встроенного TCP/ IP-стека. Рассмотрим несколько практических примеров взаимодействия модуля WISMO228 c общедоступными почтовыми серверами. Во всех примерах мы отсылаем AT-команды c программы-терминала, запущенного на ПК. Модуль WISMO228 подключен к COM-порту компьютера через драйвер RS-232. Можно также подключить WISMO228 к USB-порту ПК через подходящий переходник USB/UART.

Во всех примерах далее применяется следующая цветовая маркировка сообщений: Данные, отправляемые в UART WISMO228:

at+wipcfg=1<CR><LF>

Ответы и незапрашиваемые сообщения, получаемые из UART WISMO228:

+WIPREADY: 2,1

 

Пример 1. Прием сообщений с сервера mail.ru

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

at+creg?<CR><LF>

мы должны получить сообщение

+CREG 0,1

Далее приступаем к работе с TCP/IP-стеком. Сначала запускаем (активируем) сам TCP/ IP-стек:

at+wipcfg=1<CR><LF>

Определяем физическую среду передачи данных — GPRS Bearer («открываем GPRS-носитель»):

at+wipbr=1,6<CR><LF>

Устанавливаем точку доступа (в данном примере используется SIM-карта «Билайн»):

at+wipbr=2,6,11,»internet.beeline.ru»<CR><LF>

Выполняем подключение к GPRS («стартуем носитель»):

at+wipbr=4,6,0<CR><LF>

После этой команды возникает небольшая пауза (несколько секунд) до получения ответа «OK».

Теперь можно проверить полученный модулем IP-адрес:

at+wipbr=3,6,15<CR><LF>

+WIPBR: 6,15,»10.192.244.192″

Мы получили адрес внутренней сети оператора, к которому невозможно обратиться извне (т. е. с компьютера, подключенного к Интернету). Однако для приема и отправки почты это не имеет существенного значения, т. к. эти процессы будут инициированы самим модулем WISMO228.

Создаем соединение (TCP-клиент) с указанным на сайте почтового сервиса адресом (pop.mail. ru) и номером порта (110):

at+wipcreate=2,1,»pop.mail.ru»,110<CR><LF>

В ответ мы получаем две строки:

+WIPREADY: 2,1

(успешно создан TCP-клиент с идентификатором сессии (индексом) 1) и

+WIPDATA: 2,1,5

(получены 5 байт данных).

Переключаем UART в режим обмена данными в режиме Continuous:

at+wipdata=2,1,1<CR><LF>

После сообщения

CONNECT

мы видим 5 байт данных (c учетом<CR><LF>), которые прислал нам почтовый сервер:

+OK

Ура, мы соединились с почтовым сервером и теперь можем отправлять команды протокола POP3. Вводим адрес почтового ящика:

USER wismo@mail.ru<CR><LF>

+OK

Указываем пароль доступа:

PASS wismo228<CR><LF>

+OK Welcome!

Авторизация на сервере прошла успешно. Теперь можно производить манипуляции с почтовым ящиком. Например, мы можем посмотреть общее количество писем с помощью следующей команды:

STAT<CR><LF>

+OK 2 2048

(в нашем почтовом ящике два сообщения, которые занимают 2048 байт). Прочитаем второе сообщение целиком:

RETR 2<CR><LF> +OK 1262 octets

Return-path:<sierrawireless@rambler.ru>

Received: from [81.19.67.208]

(port=56076 helo=mcgi71.rambler.ru) by mx19.mail.ru with esmtp id 1QDyEA-0001TD-00

for wismo@mail.ru; Sun, 24 Apr 2011 16:15:50 +0400

Received-SPF: pass (mx19.mail.ru: domain of rambler.ru designates 81.19.67.208 as permitted sender)

client-ip=81.19.67.208;

envelope-from=sierrawireless@rambler.ru; helo=mcgi71.rambler.ru;

X-Mru-BL: 0 X-Mru-PTR: off X-Mru-NR: 1

X-Mru-OF: unknown (ethernet/modem) X-Mru-RC: RU

Received: from [109.173.54.73] by mcgi71.rambler.ru with

HTTP (mailimap); Sun, 24 Apr 2011 16:15:50 +0400

From:<sierrawireless@rambler.ru>

To:<wismo@mail.ru>

Subject: Test WISMO228 TCP/IP-stack

Date: Sun, 24 Apr 2011 16:15:50 +0400

MIME-Version: 1.0

Content-Disposition: inline

Content-Transfer-Encoding: 7bit

Content-Type: text/plain; charset—»us-ascii»;

format—’flowed»

Message-Id:<808815459.1303647350.90353336.92159@ mcgi71.rambler.ru>

X-Mailer: Ramail 3u, (chameleon), http://mail.rambler.ru X-Spam: Not detected X-Mras: Ok

This mail is just test message for WISMO228 TCP/IP-stack.

1111111111

2222222222

3333333333

4444444444

5555555555

6666666666

7777777777

8888888888

9999999999

0000000000

End of test message.

<CR><LF>

<CR><LF>

Сообщение заканчивается последовательностью кодов: <CR><LF><.><CR><LF>, которые не являются телом письма. Эти байты добавляет почтовый сервер — они являются признаком конца сообщения.

В почтовом ящике может оказаться случайное очень большое сообщение, прием которого может занять продолжительное время. Чтобы не принимать его полностью, можно использовать команду top msg n. По этой команде можно получить n первых строк сообщения с номером msg. РОРЗ-сервер в ответ на данную команду отправляет заголовок сообщения, затем пустую строку, затем требуемое количество строк сообщения (если их количество в сообщении меньше указанного в параметре n, то будет передано все сообщение). В течение сеанса связи не следует допускать больших (более 1 мин.) пауз между отправкой команд протокола POP3, в противном случае сервер может инициативно разорвать соединение. При этом при отправке очередной команды мы получим в ответ последовательность:

<ETX><CR><LF><SHUTDOWN><CR><LF>

У нас более нет интереса к нашей почте, поэтому отключаемся от почтового сервера:

QUIT<CR><LF>

+OK POP3 server at mail.ru signing off

<ETX>

SHUTDOWN

Для корректного завершения GPRS-сессии выполняем следующие команды:

at+wipbr=5,6<CR><LF>

at+wipbr=0,6<CR><LF>

at+wipcfg=0<CR><LF>

 

Пример 2. Отправка E-mail-сообщений c помощью протокола SMTP

Протокол SMTP (Simple Mail Transfer Protocol) создан для удобной отправки электронных почтовых сообщений (E-mail). Если не вдаваться в подробности, то это просто некоторый набор текстовых ASCII-команд и соответствующих ответов почтового сервера. Для практической отправки E-mail нам потребуется всего пять базовых команд SMTP-протокола. Прежде всего, запускаем TCP/IP-стек WISMO228 точно так же, как и в примере 1:

at+wipcfg=1<CR><LF>

at+wipbr=1,6<CR><LF>

at+wipbr=2,6,11,»internet.beeline.ru»<CR><LF>

at+wipbr=4,6,0<CR><LF>

Создаем соединение (TCP-клиент) с каким-либо почтовым сервером отправки почты. В нашем случае используем адрес smtp.mail. ru и 25 порт.

at+wipcreate=2,1,»smtp.mail.ru»,25<CR><LF>

После получения ответов

+WIPREADY: 2,1

+WIPDATA: 2,1,41

переключаемся в режим обмена данными:

at+wipdata=2,1,1<CR><LF>

CONNECT

Строка CONNECT говорит о том, что мы перешли из режима AT-команд в режим данных. Далее мы получаем приглашение почтового SMTP-сервера:

220 relay2.beelinegprs.ru ESMTP Postfix

Первая команда, отправляемая серверу:

EHLO server<CR><LF>

Строка данных server в команде-приветствии EHLO может быть и любой другой. В ответ мы получаем несколько кодов ответа. Каждый код, начинающийся с цифры 2, говорит об успешной транзакции — подробную расшифровку можно легко найти в Интернете:

250-relay1.beelinegprs.ru

250-PIPELINING

250-SIZE 10240000

250-VRFY

250-ETRN

250 8BITMIME

Работа с корпоративной SIM-картой «Билайн» не требует дополнительной авторизации, поэтому отправка письма значительно упрощается — нам достаточно задать адреса получателя и отправителя:

MAIL FROM:<anymail@gmail.com><CR><LF>

250 Ok

RCPT TO:<sierrawireless@rambler.ru><CR><LF>

250 Ok

Переходим к отправке содержимого письма:

DATA<CR><LF>

354 End data with<CR><LF><CR><LF>

Далее последовательно заполняем все поля обычного E-mail-сообщения:

from: OlegPushkarev<CR><LF>

to: sierrawireless@rambler.ru<CR><LF>

subject: WISMO228 SMPT Beeline test<CR><LF>

Hello world from WISMO!<CR><LF>My position: http://maps.google.ru/maps?q=55.754000%2c37.620300<CR><LF>END of FILE<CR><LF>.<CR><LF>

Ответ сервера говорит об успешном принятии письма к отправке:

250 Ok: queued as 50EC77215E3

Для корректного завершения сеанса используется команда QUIT:

QUIT<CR><LF>

Вид отправленного нами сообщения в почтовом ящике на Rambler.ru показан на рис. 2.

Письмо, отправленное WISMO228 («Билайн»)

Рис. 2. Письмо, отправленное WISMO228 («Билайн»)

В текст данного письма мы включили ссылку с местоположением объекта, полученного, например, с помощью ГЛОНАСС-приемника. Получателю письма достаточно «кликнуть» по ссылке, чтобы увидеть на карте Google отметку, где во время отправки письма находился модуль WISMO228.

 

Пример 3. Использование авторизации

Отправка письма с помощью SIM-карты «МегаФон» требует ввода имени и пароля при открытии GPRS-сессии и дополнительного шага авторизации при подключении к SMTP-серверу. Это сделано для предотвращения рассылки спама или нежелательных анонимных сообщений. Для авторизации необходимо ввести команду

AUTH PLAIN

c логином и паролем, зашифрованным в формате base64. Base64 — это схема, по которой произвольная последовательность байт преобразуется в последовательность печатных ASCII-символов. Алгоритм формирования base64 можно найти в «Википедии». После удачной авторизации выводится сообщение

235 Authentication succeeded

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

501 sender address must match authenticated user

Более требователен сервер в этом случае и к содержимому письма. Несколько раз наблюдалось срабатывание антиспамового фильтра на, казалось бы, довольно безобидные сообщения: 550 spam message rejected. Please visit http://mail.ru/notspam/ or report details to abuse@corp.mail.ru. Error code: D8A3EC38E DCF8F8201 59836E676F914F5BE1AA86CA67C58B. Итак, вот как выглядит протокол работы с SMTP-сервером с обычной коммерческой SIM-картой «МегаФон» (ответы модема «OK» опущены):

at+wipcfg=1<CR><LF>

at+wipbr=1,6<CR><LF>

at+wipbr=2,6,11,»internet.ru»<CR><LF>

at+wipbr=2,6,0,»gdata»<CR><LF>

at+wipbr=2,6,1,»gdata»<CR><LF>

at+wipbr=4,6,0<CR><LF>

at+wipbr=3,6,15<CR><LF>

+WIPBR: 6,15,»10.21 5.1 34.95»

at+wipcreate=2,1,»smtp.mail.ru»,25<CR><LF>

+WIPREADY: 2,1

at+wipdata=2,1,1<CR><LF>

CONNECT

EHLO 1 234567890<CR><LF>

220 smtp2.mail.ru ESMTP ready

250-smtp2.mail.ru

250-SIZE 31457280

250-8BITMIME

250-AUTH PLAIN LOGIN

250 STARTTLS

AUTH PLAIN AHdpc21vAHdpc21vMjI4<CR><LF>

235 Authentication succeeded

MAIL FROM:<wismo@mail.ru><CR><LF>

250 OK

RCPT TO:<sierrawireless@rambler.ru><CR><LF>

250 Accepted

DATA<CR><LF>

354 Enter message, ending with «.» on a line by itself

from: wismo@mail.ru<CR><LF>

to: sierrawireless@rambler.ru<CR><LF>

subject: WISMO228 with Megafon SIM<CR><LF>

Шлем письмо с помощью встроенного TCP/IP-стека WISMO228<CR><LF>

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

the quick brown fox jumps over the lazy dog<CR><LF> .

<CR><LF>

250 OK id=1QE3DQ-0004pu-00

QUIT<CR><LF>

221 smtp2.mail.ru closing connection

<ETX>

SHUTDOWN

Полученное письмо приведено на рис. 3. Использование GPRS-канала передачи данных является наиболее экономным с точки зрения расходов на трафик. На стоимость влияет используемый тарифный план и величина округления трафика. При стоимости в диапазоне 1-7 руб. за 1 Мбайт передачи данных и округлении объема 1 кбайт отправка коротких E-mail не приводит к заметным расходам на связь. Если размер письма укладывается в 1 кбайт, то стоимость отправки одного почтового сообщения не превысит 0,7 коп. Если ориентироваться на наиболее экономичные тарифные планы, например «Интернет старт» от «МегаФон», то первоначального платежа на SIM-карте (100 руб.) хватит на отправку 100 000 коротких писем. У каждого оператора, как правило, можно подобрать тарифный план, оптимальный для отправки коротких пакетов данных от M2M-устройств.

Письмо, отправленное WISMO228 («МегаФон»)

Рис. 3. Письмо, отправленное WISMO228 («МегаФон»)

 

Заключение

Использование бюджетного GSM-модуля WISMO228 позволяет организовать взаимодействие с почтовыми серверами POP3 и SMTP при помощи простого набора AT-команд встроенного TCP/IP-стека. Использование GPRS минимизирует расходы на трафик, делая этот вид связи существенно более выгодным по сравнению с отправкой SMS и передачей данных в голосовом канале (CSD).

Литература
  1. Пушкарев О. GSM-модуль начального уровня WISMO 218 // Новости электроники. 2009. № 10.
  2. WISMO228. Техническое описание.
  3. Описание TE-WISMO228. www.terraelectronica.ru.

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

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