EnglishRussian

Отправка данных по GPRS на сервис «Народный мониторинг»

«Народный мониторинг» — это онлайн сервис для сбора и визуализации параметров окружающей среды. Сервис позволяет мониторить температуру, влажность и атмосферное давление с помощью различных автономных устройств, в том числе построенных на базе Ардуино.

В данном туториале будут рассмотрены примеры передачи температуры и влажности по GPRS.

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

  • Базовая плата Arduino (Uno, Duemilanove, «Cosmo Black Start» и т. п. с Atmega328)
  • GSM-шилд «Cosmo GSM Connect» с антенной
  • SIM-карта с тарифным планом поддерживающим GPRS
  • Датчик температуры и датчик влажности
  • Резисторы, проводники, макетная плата, паяльник, припой, флюс
  • Источник питания: импульсный блок питания или аккумулятор

 

Мониторинг температуры

Соберем устройство отсылающее данные температуры. Для измерения показания температуры окружающей среды будем использовать цифровой датчик DS18B20. Подключим его по паразитной схеме питания к 8 пину Ардуино, как показано на схеме ниже.

Схему удобнее будет собрать на макетной плате.

Для работы с датчиком DS18B20 воспользуемся готовой библиотекой DallasTemperature. Для этого скачайте и установите в Arduino IDE библиотеки: OneWire и DallasTemperature.

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

Общий принцип работы данной программы выглядит следующим образом. При включении, устройство регистрируется в GSM-сети, соединяется по GPRS с сервером «Народного мониторинга» и передает ему данные измерений. После отправки данных, GSM-модем выключается, а микроконтроллер Atmega переводится в спящий режим. По умолчанию интервал для «сна» составляет 5 минут, задается в настройках скетча (SendIntervalInMinutes). После истечения SendIntervalInMinutes микроконтроллер пробуждается, включается GSM-модем и далее опять — регистрация в сети, отправка данных. При неудачных попытках отправить данные происходит автоматическая перерегистрация в сети, таким образом, риски потери данных, при сбоях в сети оператора, сводится к миниму.

Итак, скачайте архив со сборкой из репозитория. Разархивируйте ее на ваш компьютер, переименуйте название директории в «GSM». Откройте папку, в которой установлена Arduino IDE. Найдите в ней каталог «libraries» и скопируйте в нее папку «GSM». Запустите среду программирования Arduino IDE. Перейдите на вкладку: Файл —> Примеры —> GSM и выберите скетч NarodmonTemperature.

В открывшемся примере нужно изменить значения следующих переменных:

#define ONE_WIRE_BUS 8

Номер линии, к которой подключен датчик температуры.

const char PIN[] PROGMEM =  "0000";

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

const char ISP_IP[] PROGMEM =  "home.beeline.ru";
const char LOGIN[] PROGMEM =  "beeline";

Данные для настройки доступа к GPRS. Измените значения на настройки вашего оператора связи.
Например, для tele2 будет так:

const char ISP_IP[] PROGMEM =  "internet.tele2.ru";
const char LOGIN[] PROGMEM =  "";
unsigned char SendIntervalInMinutes = 5;

Интервал сна устройства, в минутах.

После редактирования переменных, скомпилируйте и загрузите данный скетч в Ардуино. Затем, вставьте в Ардуино шилд «Cosmo GSM Connect» с сим-картой и подключенной антенной. Подключите к устройству датчик температуры, подсоедините внешнее питание.

Через минуту после включения устройства, на шилде начнет мигать красный светодиод свидетельствующий о регистрации вашей сим-карты в GSM-сети. После чего произойдет первая передача данных.

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

После того как устройство запущенно — его нужно привязать к вашему аккаунту «Народного мониторинга». Для этого зарегистрируйтесь или авторизуйтесь на сайте, нажмите на кнопку «Мои датчики» и далее «Добавить». В появившемся окошке нужно ввести MAC-адрес устройства. В нашем случае — сюда нужно ввести IMEI GSM-модема, он указан на лицевой стороне шилда. Далее можно указать географическую привязку места, в котором размещено устройство. Здесь же настраиваются названия датчиков, их видимость для остальных пользователей.

Примечание. В данном примере, без изменения кода, можно подключать до 4-х цифровых датчиков. Т.е. можно подключить 1, 2, 3 или 4 датчика. При этом сам скетч менять не нужно, данные с разных датчиков будут обрабатываться в автоматическом режиме.

 

Мониторинг температуры и влажности

В данном случае к устройству добавляется еще датчик влажности, теперь снимаются показания температуры и влажности. В примере используется цифровой сенсор SHT10. Схема для сборки приводится ниже. Ее также будет удобнее собрать на макетной плате с дорожками для SMD компонентов.

Для работы с датчиком SHT10 воспользуемся готовой библиотекой SHT10. Скачайте и установите ее в Arduino IDE.

Далее запустите среду программирования Arduino IDE. Перейдите на вкладку: Файл —> Примеры —> GSM и выберите скетч NarodmonTemperatureHumidity.

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

#define dataPin  10
#define clockPin 11

Номера линий, к которым подключен датчик влажности.

unsigned char RHMacn[8] = {0x00, 'S', 'H', 'T', '1', '1', '_', '0'};

MAC-адрес датчика влажности, его нужно придумать таким, чтобы оно было уникальным в пределах сервиса «Народный мониторинг». Замените символы в кавычках ('S', 'H', 'T', '1', '1', '_', '0') на другие буквенно-цифровые значения.

После правок скомпилируйте и загрузите данный скетч в Ардуино. Затем, вставьте в Ардуино шилд «Cosmo GSM Connect» с сим-картой и подключенной антенной. Подключите к устройству датчик температуры и датчик влажности, подсоедините внешнее питание.

Примечание. В данном примере, без изменения кода, можно подключать до 3-х цифровых датчиков температуры и 1 датчик влажности. При этом сам скетч менять не нужно, данные с разных датчиков будут обрабатываться в автоматическом режиме.