Режимы работы
Устройство имеет три режима работы - duct , test, work.
-
DUCT - режим связи с SIM 900. В этом режиме Arduino играет роль моста между компьютером
и SIM 900. Подключаем Arduino к компьютеру и весь ввод с компьютера передаётся модулю. После перехода
в этот режим эхо будет отключено и сообщения от модема не выводятся. Для проверки ввести AT. Если
всё нормально в окне вывода будет переход на нолвую строку. Если надо смотреть ответы модуля - нужно
включить эхо на SIM 900 командой ATE1. При выходе из DUCT обязательно отключить
эхо - ATE0(последний ноль). Если эхо не отключено - придётся перезапускать устройство, так-как при включенном
эхо оно работать не будет.
-
TEST - в этом режиме в serial выводится дополнительная отладочная информация и команды,
переданные модему.
-
WORK - нормальный режим работы.
-
Помимо этого, если замкнуть выключатель SW2, то модуль перестаёт отправлять СМС сообщения.
Выбор режима.
-
На компьютере открываем программу связи по последовательному порту.( Minicom, Cutecom,
Pytty и т.п.). Замкнуть контакты SW2 на модуле.
-
Подключаем Ардуино к компьютеру USB шнуром и подаём питание на модуль. Последовательность не важна.
-
Ждём прохождения инициализации. О окончании можно судить по выводу
"handleIncomingSms "
И через несколько секунд закрывающейся скобки ")".
-
Далее жмём на кнопку SW1 немного ждём и отпускаем. С первого раза может не получиться, тогда жмём ещё.
При переходе из режима в режим будут появляться сообщения о том, какой режим включен.
Примечание: нажатие на кнопку обрабатывается последовательно с остальными событиями, если модуль
занят ответа может и не быть, поэтому могут потребоваться дополнительные нажатия.
Примечание: для перехода в DUCT режии можно зажмимать кнопку при старте устройства и ждать нужныхстрок(см. выше).
Работа с последовательным портом - serial
Для взаимодействи с модулем SIM 900 используется serial port, по которому отправляются команды модему, назначаются
значения свойств и т.п. Это работает в режиме DUCT. Самый простой способ связи - использовать встроенный в
Arduino ide Serial monitor. Либо Cutecom, Minicom и т.п.
По умолчанию модуль настроен 9600 8N1, 9600 – скорость, 8 – бит в посылки, N – нет контроля чётности,
1- стоп бит.
Настрйки по умолчанию не меняем. Соответственно в терминальной программе скорость выставить 9600, символ
окончания - LF И CR. Мне понравился Cutecom с его возможностью передачи не только комманд но и файлов.
Все действия по настройке SIM 900 можно производить и без arduino, непосредственно соединив модуль с компьютером
USB-TTL переходником и передавая команды непосредственно на SIM 900. Так-как ток модуля может достигать 2А
надо позаботится о соответствующем источнике. ПИтать модуль от переходника не стоит. В лучшем случае модуль
начнёт сбоить, в худшем сгорит USB-TTL. Соединяются выходы накрест - RX одного c TX другого. Дополнительно
к модулю подвести источник на 5В, к контакту VBTA подключить li-ion аккумулятор на 4В. Если нет аакумулятора
можно подключить конденсатор ёмкостью 10-20мкФ - тоже работает.
Настраивать SIM 900 лучше непосредственно с компьютера через USB_TTL, без подключения ардуино.
Потому как не ясно, что предварительно было записано на сим карту. При неправильной настройке сим карты
модуль часто уходит в перезагрузку и перевести его в DUCT режим проблематично. Все описанные ниже действи
подразумевают, что модуль включен либо через arduino либо через USB_TTL и на него подано напряжение с источника.
Сим карта вставлена в модуль и активна.
Для всех команд и всегда сообщение о успешном выполнении - "OK"
Несколько пунктов ниже выполняется только командами, передаваемыми SIM 900.
Настраиваем оператора связи.
-
AT+SAPBR=3,1,"CONTYPE","GPRS" - параметр связи GPRS
-
AT+SAPBR=3,1,"APN","apn_строка" - ввод APN оператора, работающей в модуле сим карты.
-
AT+SAPBR=3,1,"USER","логин" - логин для выхода в интернет.
-
AT+SAPBR=3,1,"PWD","пароль" - пароль для выхода в интернет
APN, USER, PWD - значения этих параметров для каждого операторе свои
Проверяем результат и записываем, если всё Ок.
-
AT+SAPBR=1,1 - установить соединение
-
AT+SAPBR=2,1 - проверить соединение.
ответы:
-
+SAPBR: 1,1,"наборю цифр, не нулей" - соединение есть.
-
+SAPBR: 1,3,"0.0.0.0" - соединения нет.
-
Если соединение есть, ошибки отсутствуют можно записать текущую конфигурацию в
долгосрочную память
AT+SAPBR=5,1
Настройка соединения закончена. При смене оператора настройку надо повторить.
Чистим сим карту:
-
AT+CPBS="SM" выбрать телефонную книгу сим карты.
-
AT+CPBW=1
AT+CPBW=2
AT+CPBW=3
AT+CPBW=4
AT+CPBW=5
AT+CPBW=6
Очистить первые 6 записей в тел. книге.
Отправка данных на сервер ThingSpeak
При желании передавать значения на сервер и наличии канала на ThingSpeak необходимо установить
пароль для записи данных на сервер(WRITE_API_KEY).
AT+CPBW=6,"123456",129, "#WRITE_API_KEY#"
WRITE_API_KEY - значение взятое с сайта ThingSpeak? состоящее из 16 символов.
Cимволы решёток - "#"
обязательны, значение ключа не должно иметь посторонних символов - пробелов, переносов и т.п.
Несколько команд
-
AT - пустой запрос, если модуль работает вернёт "OK".
-
AT+CSQ - ответ "+CSQ: 11,0". Проверка мощности принятого сигнала.
На Tele2 при значении 5 из шести попыток отправки данных на ThingSpeak
, 5 оказались успешными.
-
AT+CREG? - тип регистрации сети. Если ответ "+CREG: 0,1" , то модуль в сети
зарегистрирован и может нормально работать.
-
ATE0 - эхо отключено(последний символ ноль)
-
ATE1 - эхо включено. При таком режиме сначала печатается переданная команда
, а в следующей строка ответ.
-
AT+CPBS="SM" - выбрать тел. книгу сим карты.
AT+CPBR=n - прочесть n-ную запись в тел. книге сим карты. Полезно для проверки
настроек устройства.
n : (1-3 номера клиентов), 4 - минимальное значение температуры, 5 - отсылать-ли
сообщения при срабатывании датчика движения, 6 - значение ключа для ThingSpeak.
- Чтение смс сообщений.
-
AT+CSCS="UCS2" переход в режим чтения смс в международной кодировке(UTF8).
-
AT+CMGR=n - чтение смс сообщения c номером n.
-
AT+CSCS="GSM" - вернуть чтение смс в gsm формате.
Замечание: тексты прочитанные в UCS2 формате надо ещё перевести в кириллицу. Для
этого надо использовать конвертер форматов из UCS2 в строку. У меня, в соседнем репозитории лежит
UCS2-string конвертер.
-
Загрузка файлов
Этот набор команд важен при организации ответов на звонки.
-
AT+CFSINIT - инициализация работы с файловой системой.
-
AT+CFSWFILE=file_name,mode,file_size,input_time
-
file_name - имя файла в файловой системе модуля(не более 50 символов)
-
mode - режим записи , если файл существует, то (0 - в начало, 1 - в конец)
-
file_size - размер файла в байтах
-
input_time - время записи файла в модуль. Измеряется в миллисекундах.
Здесь лучше задать большее время , чем меньшее. Обычно 30000 хватает.
После того, как команда введена нужно в терминальном мониторе организовать
передачу файла.
-
AT+CFSTERM - прекращение работы с файловой системой.
Пример: AT+CFSWFILE="1.amr",0,14342,30000
Более подробно о командах модуля надо смотреть "SIM900 AT Commands Manual", где на 260
страницах подробно рассмотрены команды модуля.
Ниже приведены команды, которые можно заменить отправкой смс сообщений.
Установка настроек без смс сообщений
-
Назначить клиента
AT+CPBW=n,"tel_num",145,"tel_num"
n - от 1 до 3
tel_num - номер телефона в международном формате. начинается с + и имеет 11 цифр.
-
Установить минимальное значение температуры.
AT+CPBW=4,"minT",129,"coolThemp" Установить минимальное значение температуры
minT - желаемое значение от 1 до 99.
-
Задать режим отправки смс при срабатывании датчика движения
AT+CPBW=5,(0 или 1),129,"isSendMotion" - при 1 отправлять, 0 - нет
Настройка из рабочего режима(WORK или TEST)
Назначение администратора
-
Предварительно вставить sim карту модуля в телефон и очистить тел. книгу.
-
Включить модуль, дождаться выхода модуля в рабочий режим. Если включен serial monitor ждём
строки "handleIncomingSms " и через несколькь секунд появится
закрывающаяся круглая скобка ")" или ,если serial не подлючен, подождать минуты 4. После активации зажать
sw1(кнопка) и позвонить на номер модуля. Звонивший автоматически назначается администратором.
Команды доступные администратору.
Все команды от администратора модуль получает в СМС сообщениях.
Команды.
-
Назначение клиентов
#w#num#тел_номер# - назначить телефоны. На указанные номера будут приходить
СМС сообщения о пониженной температуре и, если задано, о срабатывании датчика движения.
-
Формат номеров международный - +7........ (всего 12 символов).
-
num - число от 1 до 3 . Это номер клиента. Клиент с номером 1 является администратором
устройства.
-
Установить минимальное значение температуры.
#T#...# - Назначить минимальное значение температуры(может быть от 1 до 99). Если измеренная
температура ниже установленной устройство отправляет СМС сообщения с частотой ~ 1 раз в 9 часов,
пока значение температуры не превысит указанного или как вариант закончится лимит смс.
-
#M#y# - отправлять СМС при срабатывании датчика движения.
#M#n# - не отправлять.
-
Перезагрузка.
#R#O#D - перезагрузить устройство. Символы могут быть как прописными, так и строчными.
Замечание: в командах все символы латинские.
Номера клиентов только 1,2,3 если взять другие
придётся начинать настраивать модуль заново(начнёт глючить). Если администратор уже назначен
, то первого клиента не назначаем(он уже есть).
Отправка значений в интернет.
-
Для отправки данных на сайт ThingSpeak надо зарегистрироваться и создать канал.
Канал должен иметь три поля. Первое для температуры, второе для датчика движения,
третье для определения наличия внешнего напряжения.
-
Подготовка модуля сводится к введению пароля записи на сайт ThingSpeak. На сайте
обозначается как WRITE_API_KEY. По СМС этого не сделать. Надо войти в DUCT режим
и ввести команду:
AT+CPBW=6,"12345",129,"#WRITE_API_KEY#"
Символы решёток обязательны. WRITE_API_KEY точно то, что взято с сайта.
Должно быть ровно16 символов. Если пароль введён неверно , то ....
-
Если создали канал, записали пароль, то как смотреть значения знаете. Если нет,
можно установить приложение на смартфон. В магазинах приложений искать по слову
"thingspeak".
Замечания: вполне вероятна ситуация, когда доступ к интернет у модуля, по разным причинам
отсутствует. Сам модуль время передачи не отправляет и определить передаются-ли данные
затруднительно. В этом случае может помочь создание второго канала, где будут браться поля
из первого и дополнительно создать поле со временем последнего обновления.
Голосовые вызовы
Голосовые вызовы требуют предварительной загрузки файлов. Без загруженных файлов устройство, при звонке
на него выдаст пустой ответ - несколько секунд шипения в трубке и более ничего.Файлы для загрузки
придётся создавать самим. SIM900 может воспроизводить только файлы формата
amr. При создании
файлов можно поступить следующим образом - создавать файлы в распространённых форматах, а после
конвертировать в
amr. Создавать файлы можно самостоятельно или воспользоваться услугами
онлайн переводчика. В нём есть возможность воспроизводить набранные слова. Например в переводчике
пишем
два нажимем на озвучку и записываем результат.
Какие файлы нужны:
-
Числа: файлы называются соответственно числу. Например для числа "три" файл должен иметь
название "3.amr" остальные аналогично.
Перечень необходимых файлов : 1.amr, 2.amr, 3.amr, 4.amr, 5.amr, 6.amr, 7.amr, 8.amr, 9.amr, 10.amr, 11.amr, 12.amr,
13.amr, 13.amr, 14.amr, 15.amr, 16.amr, 17.amr, 18.amr, 19.amr, 20.amr, 30.amr, 40.amr, 50.amr, 60.amr,
70.amr, 80.amr, 90.amr.
-
Сообщения:
-
Мелодии:
"bad.amr" - если есть отклонения
"good.amr" - всё хорошо
-
Словесные сообщения:
"firing.amr" - о температуре. Что-то вроде "температура в подвале" и т.п. Сообщение о том, где
измеряется температура.
"motion.amr" - сообщение о срабатывании датчика движения, что-то вроде "сработал датчик движения.
"noVoltage.amr" - сообщение об отсутствии напряжения
После того, как файлы созданы их необходимо загрузить в SIM 900. Как это сделать смотри выше.