microSmartHome

Устройство умного дома.

Общее описание.

Назначение: отправка данных с удалённых объектов.

Данное устройство измеряет температуру, имеет датчик движения и определяет наличие напряжения в сети. Работает как от сети 220В так и от батарейного питания от3.5В до 5В (взять литиевую батарею). Модуль SIM900 обеспечивает связь по мобильной сети.
Что измеряется:
  1. Измеряет температуру. Где установить - там и измерит (комната, отопительный котёл, теплица и т.п.)
  2. Если подключить датчик движения, то определит количество перемещений в своей зоне обнаружения.
  3. При питании от сетевого источника определит момент исчезновения напряжения.

Функционал.

  1. Устройство можно настроить.
  2. При снижении температуры ниже установленной как минимальная, обнаружении движения, исчезновении сетевого напряжения по назначенным телефонным номерам будет отправлено смс сообщение.
  3. При звонке, устройство передаст текущие значения параметров - температура, движение, напряжение.
  4. Если установлено значение ключа с сервера ThingSpeak (write_api_key), то каждые пять минут данные будут отправляться на сервер.

Настройки:
  1. Имеется возможность назначить трёх клиентов для получения смс при выходе за определённые параметры. Первый клиент является администратором устройства. Его можно назначить.
  2. Администратор может управлять и настраивать устройство отправляя ему смс сообщения. Можно задать:
    • Двух дополнительных клиентов для отправки смс . Клиенты только принимают сообщения.
    • Устанавливается(настраивается) минимаальное значение температуры.
    • Задаётся реагировать или нет на движение.
СМС:
  1. Если задано минимальное значение температуры, будет отправлено смс сообщение при значении температуры менее установленного. Сообщение отправится администратору и клиентам(если они есть).
  2. С датчиком движения аналогично.
  3. Если пропадёт напряжение в сети сообщение получит только администратор.
Голосовые вызовы(звонки):
  1. Если позвонить на номер модуля. Он ответит какая на данный момент температура и сообщит о наличии движения.
Отправка данных через интернет.(GPRS соединение):
  1. Модуль может отправлять данные на серевер ThingSpeak. Для этого надо зарегистрироваться и создать канал для передачи данных.
  2. Введите ключ записи данных сервера(WRITE_API_KEY) и презагрузите модуль. После перезагрузки он начнёт передавать данные на ThingSpeak.

Развёрнутое описание.

Схема устройства:


схема модуля

Замечания по схеме:

Подотовка устройства к работе

Железо и софт.

Перед любым включением модуля обязaтельно присоединять антенну, иначе SIM900 может выйти из строя.

Изменения текстов сообщений.

SIM 900 поддерживает работу с семью видами кодирования символов. По умолчанию включен "GSM". Этот формат не работает с кириллицей. Смс сообщения на русском языке создаются в формате "UCS2". В этом формате каждый символ представлен набором из 4-х цифр. Например буква "а" представлена набором "0430". По этой причине просто взять и заменить содержимое смс сообщения, отправляемого клиенту нельзя. Для замены сообщения надо сначала текст сообщения перевести в формат UCS2. Преобразовывать нужно в конверторе. Ссылка на конвертор.
Процесс замены.

Режимы работы

Устройство имеет три режима работы - duct , test, work.
  1. DUCT - режим связи с SIM 900. В этом режиме Arduino играет роль моста между компьютером и SIM 900. Подключаем Arduino к компьютеру и весь ввод с компьютера передаётся модулю. После перехода в этот режим эхо будет отключено и сообщения от модема не выводятся. Для проверки ввести AT. Если всё нормально в окне вывода будет переход на нолвую строку. Если надо смотреть ответы модуля - нужно включить эхо на SIM 900 командой ATE1. При выходе из DUCT обязательно отключить эхо - ATE0(последний ноль). Если эхо не отключено - придётся перезапускать устройство, так-как при включенном эхо оно работать не будет.
  2. TEST - в этом режиме в serial выводится дополнительная отладочная информация и команды, переданные модему.
  3. WORK - нормальный режим работы.
  4. Помимо этого, если замкнуть выключатель SW2, то модуль перестаёт отправлять СМС сообщения.
Выбор режима. Примечание: для перехода в 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 - стартовая настройка и команды

Настраивать SIM 900 лучше непосредственно с компьютера через USB_TTL, без подключения ардуино. Потому как не ясно, что предварительно было записано на сим карту. При неправильной настройке сим карты модуль часто уходит в перезагрузку и перевести его в DUCT режим проблематично. Все описанные ниже действи подразумевают, что модуль включен либо через arduino либо через USB_TTL и на него подано напряжение с источника. Сим карта вставлена в модуль и активна.
Для всех команд и всегда сообщение о успешном выполнении - "OK"

Несколько пунктов ниже выполняется только командами, передаваемыми SIM 900.

Настраиваем оператора связи.

  1. AT+SAPBR=3,1,"CONTYPE","GPRS" - параметр связи GPRS
  2. AT+SAPBR=3,1,"APN","apn_строка" - ввод APN оператора, работающей в модуле сим карты.
  3. AT+SAPBR=3,1,"USER","логин" - логин для выхода в интернет.
  4. AT+SAPBR=3,1,"PWD","пароль" - пароль для выхода в интернет
APN, USER, PWD - значения этих параметров для каждого операторе свои

Проверяем результат и записываем, если всё Ок.

  1. AT+SAPBR=1,1 - установить соединение
  2. AT+SAPBR=2,1 - проверить соединение.
    ответы:
    • +SAPBR: 1,1,"наборю цифр, не нулей" - соединение есть.
    • +SAPBR: 1,3,"0.0.0.0" - соединения нет.
  3. Если соединение есть, ошибки отсутствуют можно записать текущую конфигурацию в долгосрочную память
    AT+SAPBR=5,1
Настройка соединения закончена. При смене оператора настройку надо повторить.

Чистим сим карту:

  1. AT+CPBS="SM" выбрать телефонную книгу сим карты.
  2. 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имволы решёток - "#" обязательны, значение ключа не должно иметь посторонних символов - пробелов, переносов и т.п.

Несколько команд

Более подробно о командах модуля надо смотреть "SIM900 AT Commands Manual", где на 260 страницах подробно рассмотрены команды модуля.

Ниже приведены команды, которые можно заменить отправкой смс сообщений.

Установка настроек без смс сообщений

Настройка из рабочего режима(WORK или TEST)

Назначение администратора

  • Предварительно вставить sim карту модуля в телефон и очистить тел. книгу.
  • Включить модуль, дождаться выхода модуля в рабочий режим. Если включен serial monitor ждём строки "handleIncomingSms " и через несколькь секунд появится закрывающаяся круглая скобка ")" или ,если serial не подлючен, подождать минуты 4. После активации зажать sw1(кнопка) и позвонить на номер модуля. Звонивший автоматически назначается администратором.

Команды доступные администратору.

Все команды от администратора модуль получает в СМС сообщениях.

Команды.
  1. Назначение клиентов
    #w#num#тел_номер# - назначить телефоны. На указанные номера будут приходить СМС сообщения о пониженной температуре и, если задано, о срабатывании датчика движения.
    1. Формат номеров международный - +7........ (всего 12 символов).
    2. num - число от 1 до 3 . Это номер клиента. Клиент с номером 1 является администратором устройства.
  2. Установить минимальное значение температуры.
    #T#...# - Назначить минимальное значение температуры(может быть от 1 до 99). Если измеренная температура ниже установленной устройство отправляет СМС сообщения с частотой ~ 1 раз в 9 часов, пока значение температуры не превысит указанного или как вариант закончится лимит смс.
  3. #M#y# - отправлять СМС при срабатывании датчика движения.
    #M#n# - не отправлять.
  4. Перезагрузка.
    #R#O#D - перезагрузить устройство. Символы могут быть как прописными, так и строчными.
Замечание: в командах все символы латинские.Номера клиентов только 1,2,3 если взять другие придётся начинать настраивать модуль заново(начнёт глючить). Если администратор уже назначен , то первого клиента не назначаем(он уже есть).

Отправка значений в интернет.

  1. Для отправки данных на сайт ThingSpeak надо зарегистрироваться и создать канал. Канал должен иметь три поля. Первое для температуры, второе для датчика движения, третье для определения наличия внешнего напряжения.
  2. Подготовка модуля сводится к введению пароля записи на сайт ThingSpeak. На сайте обозначается как WRITE_API_KEY. По СМС этого не сделать. Надо войти в DUCT режим и ввести команду:
    AT+CPBW=6,"12345",129,"#WRITE_API_KEY#"
    Символы решёток обязательны. WRITE_API_KEY точно то, что взято с сайта. Должно быть ровно16 символов. Если пароль введён неверно , то ....
  3. Если создали канал, записали пароль, то как смотреть значения знаете. Если нет, можно установить приложение на смартфон. В магазинах приложений искать по слову "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. Как это сделать смотри выше.