Найти тему
Обо всём и ни о чём

Как я мучился с GSM-модулем А6. Часть первая.

Приобрёл как-то GSM-модуль А6 для некоторых «творческих» нужд. Модуль распаян на плате с обвязкой и с выводами как у ардуино-нано. Связь с устройством управления осуществляется посредством интерфейса UART c помощью AT-команд, это всё описано в различных материалах и они в достаточном объёме есть в интернете. Но есть одна загвоздка, которая проявляет себя, если с помощью этого модуля пересылать СМС на русском языке, причём не транслитом, а именно на кириллице.

GSM-модуль А6
GSM-модуль А6

Из-за разницы кодировок русских букв на компьютере и в сотовом телефоне невозможно адекватно передать СМС сообщение «в лоб». Для работы с GSM-модулем предусмотрена библиотека iarduino_GSM, но она тоже не даёт адекватного результата по той причине, что для кириллицы используется кодировка «Windows-1251», что также не подходит для передачи СМС-сообщения. На рисунке ниже пример СМС-сообщения, полученного от GSM-модуля, передаче символов кириллицы.

Пример принятого СМС-сообщения, отправленного на русском языке
Пример принятого СМС-сообщения, отправленного на русском языке

Для решения проблемы пришлось провести реверс-инжиниринг: подключил модуль к компьютеру через эмулятор COM-порта, посылал СМС на модуль, и выводил на экран с помощью программы «Терминал». Таким образом установил, что в мобильниках символы кириллицы кодируются двумя байтами. По ссылке https://yadi.sk/i/vhptikuITy4yIA находится файл с таблицами соответствия букв кириллицы и кода в шестнадцатиричной форме. Кодировка работоспособная и с её помощью неоднократно удалось отправить СМС-сообщение на кирилице.

P.S. Только не забудьте настроить GSM-модуль в режим 16-битной кодировки символов (команда AT+CSMP=16,167,0,8), иначе будет отправлять "галиматью".