EnglishRussian

Отправка данных через Cosmo GSM на Народный мониторинг

В данном руководстве реализуем устройство позволяющего удаленно отслеживать показания датчиков температуры. В качестве аппаратной части устройства будем использовать — Arduino, шилд «Cosmo GSM» и датчики температуры DS18B20. А для визуального отображения информации, а также для удобного хранения данных, воспользуемся бесплатным сервисом мониторинга — narodmon.ru.

Основные возможности системы.

  • Отправка данных по GPRS с заданной периодичностью
  • СМС-управление периодом отправки данных
  • СМС-запрос текущего состояния датчиков и настроек системы
  • Автоматическая синхронизация времени устройства
  • Автоматическое отслеживание баланса сим-карты, с уведомлением о снижении баланса ниже порового значения

 

Для сборки устройства потребуется:

  • Базовая плата Arduino (Uno, Duemilanove и т. п. с Atmega328)
  • GSM-шилд «Cosmo GSM» с антенной
  • SIM-карта с тарифным планом поддерживающим GPRS
  • Датчик температуры DS18B20
  • Резистор 4.7K, проводники, макетная плата, паяльник, припой, флюс
  • Источник питания для Ардуино (7-9V, 2A)

 

Подключение датчиков DS18B20

Для получения точных значений температуры будем использовать цифровой температурный датчик DS18B20. Его диапазон измерений от –55°C до +125°C и точность 0.5°C в диапазоне от –10°C до +85°C. DS18B20 обменивается данными по 1-Wire шине в 9-12 битном (программируется пользователем) коде с ценой младшего разряда от 0.5°C до 0.0625°C и при этом датчик может быть как единственным устройством, так и работать в группе.

Питание датчика возможно двумя способами — внешнее и паразитное питание. При паразитном питании максимально измеряемая температура составляет + 100°C. Для расширения диапазона температур до + 125°C необходимо использовать внешнее питание.

Подключим четыре датчика DS18B20 по внешней схеме питания к 10 пину Ардуино.

 

Настройка и загрузка скетча

Для работы с «Cosmo GSM» скачайте и установите в Arduino IDE библиотеку Telit.

Также вам понадобится установить библиотеки: Time, OneWire, DallasTemperature.

После установки запустите Arduino IDE, из папки примеров библиотеки Telit выберите скетч Send2Narodmon.

Теперь в скетч необходимо внести некоторые изменения параметров. Укажите ваш часовой пояс относительно Гринвича (GMT+00).

char TimeZone = +3;

 

Далее укажите номер телефона, на которые будут отсылаться системные СМС и номер телефона, с которого разрешен прием СМС-команд. Укажите пин-код вашей сим-карты. Если запрос пин-кода отключен, оставьте этот параметр как есть.

const char RemoteID[] PROGMEM = "+7XXXXXXXXXX"; //Шаблон номера, на который отправляем СМС
const char CommandID[] PROGMEM = "+7XXXXXXXXXX"; //Шаблон номера, с которого принимаем СМС
const char PIN[] PROGMEM = "0000";              //ПИН-код! Поменяйте на свой!!! Иначе СИМ карта заблокируется!

 

Укажите настройки GPRS-соединения вашего оператора сотовой связи, а также USSD-запрос баланса. Для большинства операторов это *100#, для TELE2 это *105#.

const char ISP_IP[] PROGMEM =   "internet";         // Для билайна Билайн: "home.beeline.ru", МТС: "internet.mts.ru"
const char LOGIN[] PROGMEM =    "gdata";            // Логин=Пароль
const char BalanceID[] PROGMEM = "*100#";           // USSD номер проверки балланса

 

Укажите порог для своевременном информировании о необходимости пополнении баланса сим-карты. По умолчанию, значение соответствует 30. Проверка баланса происходит при включении устройства и далее каждые 12 часов (параметр BalanceChkPeriodMin).

#define MoneyBalanceTreshold(30)            // Нижний порог отправки СМС о снижении баланса

 

Если вы подключили датчики температуры к иному пину, нежели это указано выше, тогда укажите соответствующий пин в настройках.

#define ONE_WIRE_BUS 10           // Номер линии, к которой подключены датчики температуры

 

После того как вы отредактировали эти настройки, загрузите скетч в плату Ардуино. Затем отключите Ардуино от компьютера и вставьте в него шилд «Cosmo GSM». Предварительно установив в него СИМ-карту и переключив джампера J5 и J4 в положение MEGA (контакт 1-2). Подключите к плате датчики температуры и подайте на Ардуино внешнее питание — 7-9V, 2A. От качества блока питания зависит стабильность работы устройства. В зонах с плохим уровнем сигнала, модуль будет переключаться на максимальную мощность, поэтому потребляемые токи могут доходить до 2А.

 

Добавление устройства в сервис «Народный Мониторинг».

Зарегистрируйтесь на сайте «Народного Мониторинга», затем перейдите во вкладку «Датчики» и нажмите кнопку «Добавить новое устройство». В появившемся поле для ввода, напишите номер IMEI. Он указан на GSM-модуле шилда. Добавить новое устройство нужно после того, как данные были отправлены на сервис «Народного Мониторинга».

 

SMS управление

Для того, чтобы запросить текущее состояние устройства, отправьте с разрешенного номера (CommandID) на номер устройства SMS следующего содержания.

#CHK_STATUS

В течение минуты, на указанный в скетче номер (RemoteID) придет ответное СМС, содержащее — период передачи данных (Per), показания 4-х датчиков температуры (S1-S4), текущий баланс (Bal), локальное время и дату на устройстве.

 

Для того, чтобы изменить период передачи данных (в скетче параметр DataSendPeriodMin), нужно с разрешенного номера (CommandID) отправить SMS следующего содержания.

#SET_DP:20

Где 20 — это любое целое число, в минутах. После получения данной команды, в течение минуты, на указанный в скетче номер (RemoteID) придет ответное СМС с информацией о системе. Обратите внимание, что после перезагрузки устройства период передачи данных восстановится на указанный в скетче.

 

Отладка

В тех случаях, когда вам необходимо более детальное ознакомление с работой устройства, а также тогда, когда что-то идет не так и данные не отправляются, либо они неверные — в этом случае необходимо отследить логи устройства. Для этого нужно подключить собранное устройство к компьютеру посредством USB-разъема. Откройте монитор порта (Arduino IDE), указав предварительно правильный порт и далее выберите скорость порта 38400 бод. В этом терминале будут отображаться команды поступающие с микроконтроллера на GSM-модуль.

Для того, чтобы увидеть ответы, которые посылает GSM-модуль в микроконтроллер — для этого вам понадобится еще одна плата Ардуино (с вынутым из него микроконтроллером) или USB-Serial адаптер. Нужно будет проводками подключить пины 0 и 1 этого второво Ардуино с пинами GSM-шилда, только в обратой последовательности 1 и 0. Т.е. RX к TX, а TX к RX. После того, как подключите проводки, подключите Ардуино к компьютеру посредством USB-разъема. Запустите второй терминал на скорости 38400. И уже сюда будут поступать ответы от GSM-модема.

Для правильного снятия логов, желательно сперва подключить 2 Ардуино и запустить терминал, а затем включить 1 Ардуино (т.е. само устройство).