Modem-stretch
В Wiren Board установлен GSM/GPRS-модуль, с помощью которого можно:
- отправлять/принимать SMS
- подключаться к интернету по GPRS
Полный список возможностей смотрите в описании модуля:
- Wiren Board Smart Home 3.5, Wiren Board 4: SIM900R
- Wiren Board 5 и Wiren Board 4: SIM800 или M660A
- Wiren Board 5 с 3G: SIM5320E
Работа из Linux
Внутри контроллера модем подключён к процессору по двухпроводному последовательному порту (UART). В Linux этот порт отображается как псевдоустройство /dev/ttyAPP0 (первый порт (Application UART) процессора). Модуль управляется посредством передачи команд на этот порт.
Кроме того, модуль можно выключить и перезагрузить, подав сигналы на контакты модуля PWRKEY и RESET. Для этих целей написана простая утилита wb-gsm (примеры использования смотрите ниже). Прямой доступ к этим контактам реализован через GPIO (подробнее читайте GPIO, ищите в таблице соответствующие названия).
Включение модуля
Для включения или перезагрузки модуля можно пользоваться утилитой wb-gsm (исходники). Утилита установлена в стандартном образе в пакете wb-utils.
Примеры:
$ wb-gsm on # включение устройства
$ wb-gsm off # выключение устройства
$ wb-gsm reset # перезагрузка включенного устройства
$ wb-gsm restart_if_broken # включение или перезагрузка, если модем не отвечает
Работа с модулем
Ознакомьтесь с инструкцией - Работа с последовательным портом из Linux. Обратите внимание на настройки: 115200, 8N2, no hardware flow control.
Для интерактивного режима:
- запускаем minicom с ключём, создающим профиль работы с портом (скорость передачи данных, чётность, и т.д.):
$ minicom -s /dev/ttyAPP0
- Зайти в настройки (нажать Ctrl+A, затем O), выбрать пункт Serial port setup, там установить порт /dev/ttyAPP0, скорость и чётность - 115200, 8N1, Hardware flow control - No, Software flow control - No
- Сохранить настройки: Save setup as _dev_ttyAPP0
- Далее запускать как minicom /dev/ttyAPP0 (все параметры будут сразу браться из профиля с названием /dev/ttyAPP0, который мы ранее создали)
- Первой вашей командой должна стать AAAAAAAAAT - с её помощью модуль распознает скорость, с которой мы к нему обращаемся (смотрите SIM900R)
- Второй командой выполните просто AT. Вам должен прийти ответ OK
Примеры команд
(Полный список команд смотрите в документации модуля)
- Синхронизовать скорость порта (не совсем команда)
AAAAAAAAAAAAAT
- Список всех сетей
AT+COPS=?
- Уровень сигнала (см. здесь)
AT+CSQ
- Звонок на номер +79154816100
ATD+79154816100;
- Установка baud rate порта в фиксированное значение 115200
AT+IPR=115200
- Запрос времени со встроенных в модуль часов реального времени (RTC)
AT+CCLK? AT+CCLK="14/03/19,01:20:29+00"
- Получить IMEI-код модуля (xxxxxx - уникальный номер)
AT+GSN 86820400xxxxxxY OK
Мультиплексирование
Модем поддерживает режим мультиплексирования - создание виртуальных портов, через которые можно одновременно работать с модемом. Например, через один порт можно открыть сессию PPP для GPRS, а через другой получать и отправлять SMS, проверять баланс и т.д. Подробнее смотрите CMUX.
Работа с GPRS
Конфигурационные файлы для операторов "большой тройки" уже есть в стандартном образе: ссылка. Для других операторов или специальных APN рекомендуется использовать стандартные конфигурационные файлы в качестве основы.
Создание конфигурационных файлов с нуля происходит стандартно для Linux.
Сначала при помощи утилиты pppconfig создаётся конфигурационный файл подключения с параметрами для вашего оператора (например, МТС). Если вам нужна всего одна конфигурация, назовите её provider - тогда она будет запускаться по умолчанию, подключение можно будет запускать просто командой pon без аргументов.
Подробная информация по настройке: ссылка
Обратите внимание на настройки "115200 nocrtscts", которые должны присутствовать в конфигурационных файлах.
Запускается подключение командой
pon <имя конфигурации>
например
pon mts
Для автоматического подключения к GPRS при загрузке, убедитесь, что файл
/etc/network/interfaces
содержит следующие строчки:
auto ppp0 iface ppp0 inet ppp provider mts
где вместо mts должно быть название конфигурационного файла для вашего оператора.
RTC
Отправка и получение SMS
Работать с SMS проще всего при помощи программы Gammu (это форк утилиты gnokii, которую перестали развивать).
- Сначала создайте файл конфигурации, запустив gammu-config
- В параметре Port укажите /dev/ttyAPP0
- В параметре Connection укажите at115200
- Популярные команды:
$ gammu networkinfo # посмотреть сеть и базовую станцию, к которой вы подключены
$ gammu geteachsms # вывести все SMS
$ gammu sendsms TEXT +79154816102 -unicode -text 'Привет' # отправить на номер сообщение с текстом
$ gammu getussd #100# # запросить баланс на МТС
$ gammu getussd *100# | grep "Service reply" | sed -e "s/.*\"\(.*\)\".*/\1/" | xxd -r -ps | iconv -f=UTF-16BE -t=UTF-8 # запросить баланс на МТС
Полную документацию смотрите на сайте проекта