Gsm модуль sim900a
1. Прошивка
Волею доль, у мене в руках опинився модуль GSM900A. Прочитавши перший-ліпший форум про пожвавлення цієї штуки, з'ясувалося, що буква A в назві означає приналежність модуля до азіатського регіону. А отже, працювати з нашими операторами він не стане. зневіра 🙁
Благо, в наступних постах на тому ж форумі містилася заспокійлива інформація :) Виявилося, що не все так погано, і щоб модуль заробив в нашому регіоні, його потрібно просто перепрошити. Цей процес добре описаний в блозі нашого соратника Alex-EXE: прошивка «all in one» sim900
Спробую зробити те ж саме, але ще більш детально, і з урахуванням особливостей мого модуля.
Якщо у вас правильний модуль і прошивка не потрібно, можна відразу стрибати на розділ №2.
Отже, для початку підготуємо всі необхідні інструменти. По-перше, безпосередньо для прошивки потрібно додаток SIM900 Series download Tools Develop, яке можна легко знайти в інтернеті (хоча б тут).
По-друге, стане в нагоді і сам файл прошивки 1137B02SIM900M64_ST_ENHANCE, який теж легко видобувається (я брав тут).
Нарешті, по-третє, нам потрібен буде хороший термінал для експериментів з модулем. Зазвичай я використовую TeraTerm, але в цей раз його можливостей не вистачило (або я не розібрався). Довелося встановити монстра з геніальним назвою Terminal.
Підключення до USB-UART мосту
Тепер підключаємо лінії RX і TX до мосту. В якості останнього я використовував CP2102. У моєму випадку, всупереч логіці, RX і TX моста з'єднувалися з RX і TX GSM-модуля симетрично (а не навхрест, як прийнято).
Також слід живити модуль від стабільного і потужного джерела, так як піковий струм на модулі може досягати 2А (нібито). Підійдуть 4 акумулятора типорозміру AA. Повна схема включення виглядає так:
У даній моделі немає кнопки скидання, так що для прошивки нам буде потрібно на пару секунд кинути контакт RST на землю. Для цього ми поки залишимо його висіти в повітрі.
Попереднє налаштування модуля
Перед тим, як приступити до прошивці, ми з'єднаємося з модулем, і змінимо йому швидкість UART. Для цього запустимо термінал Terminal, виберемо правильний порт, і встановимо швидкість обміну - 9600. Після цього тиснемо «Connect».
Все спілкування з модулем відбувається за допомогою AT-команд.

Перше що ми скажемо модулю буде найпримітивніша AT-команда: «AT». Це такий своєрідний ping, на який модуль повинен відповісти словом «OK».
Якщо все пройшло успішно, і модуль дійсно відповів нам «OK», відправляємо команду настройки швидкості:
В кінці команди повинен стояти службовий символ повернення каретки - CR. В ASCII таблиці він має код 13 (або 0x0D в шістнадцятковій системі). Символ підставить автоматично, якщо ви поставите галочку «+ CR» навпроти рядка введення в нашому терміналі. В інших терміналах теж є подібні налаштування.
У відповідь на введену команду знову отримаємо - «OK».
Ця установка знадобиться нам для прискорення процедури прошивки. В іншому випадку, як зазначив у своєму блозі Alex-EXE, прошивка займе близько години.
Після того, як всі дроти встромлені в потрібні місця, і модуль підготовлений до прошивці, запускаємо додаток SIM900 Series download Tools Develop. Налаштування програми складається всього з декількох пунктів:
- в поле Target вказуємо цільової чіп. Чомусь у мене не вийшло залити прошивку на SIM900A, так що я вибрав «SIM900»;
- вибираємо правильний порт в поле Port;
- Baud Rate ставимо в 115200;
- нарешті, вказуємо файл прошивки в поле Core File (файл з розширенням cla).
З налаштуванням все.
Тепер виконуємо строго і послідовно шість важливих кроків.
- Підключаємо до модуля харчування (наші 4 акумулятора). Повинна спалахнути червона лампа харчування, а лампа статусу повинна мерехтіти.
- Підключаємо USB-UART до комп'ютера.
- Замикаємо провід RST на землю (пам'ятаємо, що весь цей час він бовтався в повітрі).
- Натискаємо в програмі кнопку Start Download.
- Вважаємо в розумі до трьох, і відриваємо RST від землі.
Чекаємо 6 хвилин до завершення прошивки.
Що ми маємо після прошивки
По-перше, модуль тепер вміє працювати з нашими операторами. По-друге, ми поставили розширену прошивку, серед особливостей якої, наприклад, отримання координат модуля по стільникових вишок, робота з електронною поштою і доступ до додаткових 2.5 Мб пам'яті.
2. Експерименти з GSM модулем
Спробуємо тепер виконати різні корисні операції з модулем. Для початку, введемо ПІН-код (якщо він є):
Відповідь модуля буде таким:
Після цього отримаємо від модуля трохи інформації.
Тепер наберемо який-небудь номер. Робиться це за допомогою команди:
Крапка з комою в кінці команди дуже важлива, на забудьте про неї!
Якщо під час UART сеансу на пристрій хтось подзвонить, повернеться повідомлення:
Відповісти на дзвінок (взяти трубку) можна командою:
Завершує виклик команда:
Спочатку включимо текстовий режим повідомлень:
і встановимо кодування:
А наприкінці команди необхідно додати відразу два службових символу: CR і LF. У Terminal це можна зробити галочкою CR = CR + LF, або вручну додавши в кінці рядка: AT + CMGS = "+ 79123456789" 0D0A
Після введення цієї команди, у відповідь буде отримано символ «>», що означає початок перегляду сторінок Інтернету. Пишемо який-небудь текст:
В кінці повідомлення нам потрібно буде передати один з двох спеціальних символів. Щоб відправити повідомлення введемо символ з ASCII таблиці з номером 26. Щоб скасувати відправку - символ з номером 27.
У використовуваному нами терміналі для відправки символу за кодом можна використовувати одне з двох виразів: в шістнадцятковому форматі: $ 1A, і в десятковому: # 026
Якщо під час сеансу на пристрій надійде SMS, повернеться повідомлення формату:
Щоб прочитати текст цього повідомлення, введемо:
У відповідь отримаємо:
Загалом, все просто. Цього нам цілком достатньо для реалізації задуманого. Для більш глибокого вивчення можливостей GFM900 рекомендую почитати ще одну статтю Alex-EXE: at-команди gsm модему sim900
3. Взаємодія з мікроконтролерами
Взагалі, щоб управляти зовнішніми пристроями зовсім не обов'язково з'єднувати модуль GSM900 з іншим мікро контролером. У цей модуль можна зашити свою програму, яка буде робити все що завгодно з вільними GPIO висновками. Однак, в більшості готових плат GPIO не розлучені, тому для створення прототипу задуманого пристрою скористаємося найпростішої Arduino Uno / Nano.
Спілкуватися Arduino і GSM900 будуть все по тому ж UART інтерфейсу. Для цього з'єднаємо ці два пристрої за наступною схемою: