Как заставить работать sim900a в наших сетях
Для начала справочная информация:
sim900 — представитель нового поколения бюджетных GSM/GPRS модулей компании SIMCom.
Sim900a — аналог sim900, предназначенный для использования на азиатском рынке, не работает с российскими операторами.
Визуальный осмотр
Так вот, попался мне модуль sim900a mini v3.8.2, на базе того самого sim900a. Визуальный осмотр показал, что на модуле присутствует преобразователь сигнала MAX232, что даёт возможность быстрого подключения модуля к com порту компа для детального исследования. Так же, на модуле есть выходы с уровнем TTL, что даёт возможность использования его с arduino. Еще, из особенностей схемы, было замечено, что нет софтового управления включением/выключением модуля, но это несложно исправить, что скорее всего будет проделано. Нет выходов на микрофон и наушники, тоже придётся распаивать.
Далее изучаем даташит, там все очень радужно расписано на 47 страниц. Первое, что нам потребуется это запитать модуль. На плате написано VCC 5, в даташите написано 3.2V — 4.8V, однако, двумя абзацами ниже, предоставлена схема включения с напряжением 4,1V. Собственно, как sim900 так и sim900a будет очень привередлива к питанию. Так же, становится понятно, что старые симки на 5V в нём не заработают… Для них надо городить преобразователь на основе Max1686.
Следуя инструкциям даташита, берём Li-ion аккумулятор формфактора 18650 на 3.7V, он и будет служить нам питающим элементом.
Подключение
Теперь разбираемся с ком портом, обязательно ставим 2 джамперочка, как показано на фотке. На ком порте нам нужны 2, 3 и 5 ножки, на модуле это 1, 2 и 3 соответственно.
Вставляем сим карту (желательно предварительно проверить ее работоспособность в телефоне), подключаем ком порт, подаём питание на модуль. Для общения с модулем нам потребуется терминал. Под винду я использую либо программу terminal, либо putty.
В заводских настройках модуля установлен автоматический выбор скорости, но для его корректной работы необходимо при подаче первой AT команды, AT написать в одном регистре.
Визуально наблюдаю, что светодиод «статус» моргает, смотрим в даташит, есть 3 режима:
- 64ms/800ms — не зарегистрирован в сети,
- 64ms/3000ms- зарегистрирован в сети,
- 64ms/300ms- осуществляется передача данных по GPRS.
В моём случае это 1 вариант.
Идём разбираться, почему же мы не смогли зарегистрироваться. Запускаем свой любимый терминал, подключаемся к нужному порту.
Проверяем, не требует ли симка ввода пин кода:
AT+CPIN?
Если симка требует ввода PIN или PUK кода, то вы получите ответ SIM PIN или SIM PUK соответственно.
После ввода PIN кода:
AT+CPIN=0000
Проверяем, статус повторно. В моём случае я увидел:
+CPIN: PH-NET PIN
Это означает, что модуль залочен на определённые сим карты и с вашей сим картой он работать не будет.
В этом случае либо используем карту азиатского оператора, либо перепрошиваем модуль. Однако, что бы не заниматься лишней работой, для начала проверим, видит ли модуль сети вообще. Это можно сделать командой:
AT+COPS=?
После некоторого ожидания сканирования диапазона в поисках сети, видим приблизительно такой ответ:
+COPS: (2, «MGTS»,»,»25001»),(1, «MegaFon RUS», «MegaFon»,»25002»),(1, «Beeline», «Beeline»,»25099»),,(0,1,4),(0,1,2)
Каждая скобка — это сеть. Первая цифра — это статус этой сети. 0 — неизвестен, 1 — доступен для регистрации, 2 — сеть соответствующая оператору сим карты, 3 — заблокированная сеть. Остальные параметры сети — это их идентификаторы.
Если вы увидели свою сеть (первая цифра = 2). Тогда есть надежды на то, что вы сможете реанимировать модуль и заставить его работать.
Перепрошивка!
Это отдельная большая история, но я опишу основные моменты перепрошивки.
Поискав в Интернетах возможные варианты прошивок, я наткнулся на то, что модули эти бывают 32-х и 64-х битные. Есть специальная программа для их перепрошивки. И много вариантов прошивок под разные версии модулей. Например, вот тут
Мне не повезло, достался мне 32-х битный модуль, а прошивок для них совсем мало. Инструкция по перепрошивке модуля гласит так. Запускаете программу для перепрошивки, выбираете необходимую версию, наживаете на кнопку старта заливки ,
после этого зажмите кнопку включения модуля и до момента начала заливки микропрограммы удерживайте нажатой. Но как мы выяснили ранее, у нас нет кнопки включения/выключения питания модуля, эта mini-версия включается в момент подачи питания и остаётся включенной на протяжении всего времени. По этому в нашем варианте мы обесточиваем модуль полностью, запускаем программу заливки, выбираем необходимую версию, и все настройки, нажимаем на кнопку начала заливки микропрограммы в модуль, после этого подаём питание на модуль.
Однако перед тем, как вы начнёте что то делать, проведите подготовку модуля:
- модуль очень требовательный к напряжению питания и при напряжении более 4V он запускается и работает, но напрочь отказывается перепрошиваться!
- уберите автовыбор скорости, установите скорость в 115200 (AT+IPR=115200), что бы избавить себя от проблем с прошивкой. (на скорости 9600 прошивка занимает примерно 2 часа времени);
- перед началом прошивки обесточьте модуль как минимум на 5–10 секунд;
Что бы долго не тянуть кота за хвост, сразу раскрою карты и скажу, что если у вас 32-х битная версия, вы со своего модуля сможете сделать только sim900b работающий в наших регионах при помощи микропрограммы версии 1137B09SIM900B32_ST. Если же вам достался 64-х битный модуль, то у вас есть возможность получить полноценный sim900 при помощи прошивки: 1137B02SIM900M64_ST_ENHANCE
Итак, перепрошили, перезагрузили модуль. Начинаем всё сначала. Проверяем статус сим карты:
AT+CPIN?
+CPIN: SIM PIN
Если так, то вводим пин:
AT+CPIN=0000
OK
Проверяем, что карта приняла код и модуль готов с ней работать:
AT+CPIN?
+CPIN: READY
Проверяем статус регистрации в сети:
AT+CREG?
+CREG: 0,1
Первая цифра — авторегистрация включена, вторая — регистрация осуществлена. Смотрим на диод, отображающий статус, индикация соответствует документации об успешной регистрации в сети.
Проверим, в какой сети зарегистрировался модуль:
AT+COPS?
+COPS: 0,0, «MTS-RUS»
Проверим баланс:
AT+CUSD=1,»*100#»
OK
+CUSD: 0,»041C0438043D04430441003A003400360032002C003700310440002C041B0438043C04380442003A003300300030003004400020»,72
Это unicode (USC2), декодируем:
Минус:462,71р, Лимит:3000р
В лимит мы пока не упёрлись можно попробовать отправить СМС (позаботьтесь, что бы ваш терминал умел отправлять служебные символы, для обозначения окончания отправляемой СМС надо использовать символ с кодом 26)
AT+CMGF=1
AT+CMGS=»+790…»
> Privet! Davay posmotrim film!
> (Alt +26)
+CMGS: 3
СМС отправлена!
Теперь попробуем позвонить:
ATD+790…;
+COLP:»+790…»,145,»,0,»
Кладём трубку:
ATH
OK
Обращаю внимание, что в команде ATD символ точка с запятой »;» в конце обязательна!
Если вы видите «NO CARRIER» значит номер телефона набран неправильно.
Модуль работает! Чего и следовало добиться. В следующих статьях железная доработка модуля и его использование с Arduino.
Полезные ссылки:
Официальный сайт производителя
Официальный представитель simcom в России
Страница с ссылками на доки по модулю sim900
Спецификация модуля
Преобразователь сигнала для сим карты
Сборник прошивок для модулей sim800 и sim900
Спецификация AT команд модуля
Статья о перепрошивке sim900