Подыскивая аксессуары к Raspberry Pi я случайно наткнулся на GSM-модуль для Raspberry Pi на основе GSM модуля SIM900 и решил поиграть с ним. Как оказалось, этот модуль превращает Raspberry Pi на полноценный мобильный телефон, программируемый через модемные AT команды.

Самым простым для меня как для Java-программиста способом работать с этим всем оказалась Groovy Shell + Java библиотеки для работы с последовательным портом (jSSC) и GPIO пинами Raspberry Pi (Pi4J). Все это делалось на Raspberry Pi Model B под OS Raspbian (система Debian Wheezy Linux). Итак делюсь своим опытом.

Что такое GMS-модуль и с чем его едят?

Сам по себе модуль представляет собой платке которая «насаживается» на GPIO пены Raspberry Pi. Управление модулем происходит через последовательный порт и GPIO пены для включения/выключения модуля и для «сброса» (reset).

Для работы с GSM сетью нужна обычная полноразмерная SIM-карта. Для ввода/вывода звука модуль имеет микрофонный вход и линейный выход для обычных 3. 5-дюймовых jack разъемов. Также модули есть пара светодиодных индикаторов — состояние модуля и состояние соединения с GSM сетью.

К модулю прилагается C-ная библиотека и пара «сишних» демо программ, но все это добро написано достаточно криво и с коробки не совсем работает.

Логика подсказывает что перед использованием SIM карты необходимо ввести PIN код, но возможности это сделать библиотека не предоставляет.

Также нет out-of-the-box возможности вводить любые AT команды — хотя небольшая модификация библиотеки позволяет извлечь в публичный интерфейс эти методы, в целом все это довольно неудобно.

Для экспериментирования хотелось вводить AT команды интерактивно, так, как я уже писал выше, я решил использовать давно любимый мной инструмент — Groovy Shell. Groovy Shell это интерактивная консоль для Java / Groovy которая идет в дистрибутиве Groovy (bin / groovysh).