Для начала справочная информация:
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

Комментарии (19)


  1. dkukushkin
    10.03.2016 04:57

    Проще еще заюзать Neoway m590 за $6. Главное что он работает из коробки без всяких проблем. Правда мне достался в разобраном виде и пришлось паять...


    1. shulyakovskiy
      10.03.2016 08:03

      Neoway m590 — это модуль на основе sim900, только очень сильно урезанный по железу, там нет выходов на микрофон и динамик и пр.


    1. ShinoKuyo
      10.03.2016 08:03

      На алиэкспрессе по 250р это они? По командам это полная замена? Буду делать автозапуск по телефону для авто, купил sim900 (неизвестно пока какой ревизии, в пути).


      1. dkukushkin
        10.03.2016 08:21

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

        Совместимость по AT-командам не проверял, но позволяет отправлять SMS-сообщения, что для моей задачи достаточно.


        1. migelle74
          10.03.2016 23:11

          Мы даже по $1.60 нашли и купили. Тоже разобранные.


  1. Sergey_datex
    10.03.2016 11:13

    Поискав в Интернетах возможные варианты прошивок, я наткнулся на то, что модули эти бывают 32-х и 64-х битные.

    Автор, исправьте — имеются в виду версии емкости флешки — 32 и 64 мегабайта.


    1. shulyakovskiy
      15.03.2016 15:17

      Спасибо, поправил


  1. ittakir
    10.03.2016 11:38

    Есть еще популярный и дешевый SIM800L. Но где-то читал, что в России он не работает, это так?


    1. shulyakovskiy
      10.03.2016 11:47

      sim800l имеет поддержку FM-радио и BT в отличие от sim900, но там нет определение геолокации по базовым станциям.
      По стоимости они сопоставимы с sim900. Обычно она зависит от обвязки вокруг модуля. Поддержка частот 900/1800 в нем есть, а значит сети он найдёт. Отказываться работать в России может из-за прошивки которая заточена например на азиатский рынок, но об этом вам на алиэкспрессе и подобных ресурсах скорее всего не скажут.

      Прошивок под sim800 достаточно, так, что в крайнем случае придётся перепрошить.


    1. link0ln
      10.03.2016 12:41

      Я заказывал, работает, пользуюсь. Модуль очень компактный, пилить проекты на нем удобно.


  1. admhome
    10.03.2016 13:48

    Не так давно искал информацию о перепрошивке такого модуля для России. В интернетах много писали про этот модуль, но мало у кого получалось его нормально прошить и запустить с нашими сим-картами, однако нашёл вариант вот тут — oldstream.ru/archives/108 кто-нибыдь так пробовал прошивать устройство?


    1. shulyakovskiy
      10.03.2016 16:44

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


      1. admhome
        10.03.2016 21:47

        Подскажите пожалуйста, по результатам выполнения команд мне достался модуль 64-х битный?

        AT+GCAP — +GCAP:+FCLASS,+CGSM
        AT+GMM — SIMCOM_SIM900A
        AT+GMR — Revision:1137B05SIM900A64_ST_ENHANCE


        1. shulyakovskiy
          12.03.2016 16:57

          Да


  1. UncleDecart
    10.03.2016 15:34

    Автор не указал, что при перепрошивке нужно подключиться к Debug-порту модуля.


    1. shulyakovskiy
      10.03.2016 16:41

      Это не дебагпорт, а обычный RS-232 обозначенный на плате J2


      1. UncleDecart
        10.03.2016 19:39

        Подождите. На самом SIM-900 есть 2 COM-порта, их выводы обозначены RXD; TXD и DBG_TXD; DBG_RXD соответственно. Для того, чтобы перепрошить модуль, нужно подключиться ко второму порту. Видимо у вас немного другая плата, потому как моя выглядит идентично, но на ней не выведен 2 COM-порт


  1. PKav
    10.03.2016 17:55

    SIM800c решает все проблемы. В Китае можно купить по 4,5$, работает у нас из коробки, без перепрошивок, делаю устройство на нём.
    А серию 900 скоро снимут с производства, поэтому в новый дизайн лучше её не закладывать.


    1. shulyakovskiy
      10.03.2016 20:29

      Всё так! Но этот пост о том, что делать если пылиться sim900a из-за того, что она не работает в наших сетях. Замену sim900 на sim800 произвести не сложно, особенно, если общение происходит через последовательный порт.