Метеостанция на arduino и mr3020 для народного мониторинга

Метеостанция на Arduino и MR3020 для народного мониторинга

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

Для отображения данных была собрана метеостанция на Arduino ( собирает показания с датчиков DS18B20, DHT11, BMP085). Отправка данных осуществлялась с роутера MR3020 с прошивкой CyberWrt. для передачи данных на сайт Народный мониторинг. Можно было использовать Arduino c Ethernet shield, но хотелось еще отправлять на сайт изображение с камеры.

Устанавливаем на роутер прошивку CyberWrt. СyberWrt — это прошивка собранная на базе OpenWrt и предназначенная в первую очередь для роботов, мини-серверов Умного Дома, и других устройств на базе популярных моделей роутеров. Страница проекта — http://cyber-place.ru/forumdisplay.php?f=44

В составе CyberWrt имеется модуль Термометр, Меня не устроил по причине того, что отправляет на сайт только температуру, мне необходимо еще влажность и атмосферное давление.

Решено было по cron получать данные по последовательному из Arduino и отправлять на сайт по протоколу HTTP POST/GET.

1. Установка прошивки CyberWrt на роутер MR3020

Роутер MR3020 имеет процессор Atheros AR7240 частотой 400 МГц, 32 МБ RAM, 4 МБ флэш-памяти, порт USB2.0, Wi-Fi 802.11 b/g/n 150Mbps, Ethernet-порт 100MBit. Кроме того может питаться от напряжения 5В USB-порта, или от внешнего питания в диапазоне от 3.7В-6В при токе в 100мА с включенным Wi-Fi или 80мА без него. То есть максимальная мощность 0.5 ватт.

Сперва, заливаем прошивку (берем ее со страницы http://cyber-place.ru/showthread.php?t=720). Подключаемся к роутеру (адрес по-умолчанию:192.168.0.254), логин/пароль: admin/admin, идем в системные настройки, выбираем файл с прошивкой, ждем пока зальется. После прошивки модуль доступен по адресу http://192.168.1.100. Здесь необходимо настроить модуль либо в качестве точки доступа, либо клиента беспроводной сети. На сайте проекта все очень хорошо расписано — FAQ

Прошивка CyberWrt создавалась для того что бы уйти от пугающих новичков, терминальных программ и для более легкого и упрощенного использования. За основу была взята прошивка OpenWRT версии r37816.Все управление роутером производится из любого веб браузера через Веб-интерфейс, для этого не требуется установка дополнительных программ.

Так же доступен классический способ подключения через telnet, SSH, SCP
Сконфигурирована минимальная сборка пакетов для того что бы было достаточно свободного пространства и пользователь мог сам выбирать из репозитория нужные ему модули или утилиты. На роутере после прошивки CyberWrt доступно свободного места 1,2МБ (для сравнения, после установки OpenWrt остается свободного места 300 КБ).

Из веб-интерфейса установим нужные нам пакеты:

  • Драйвер Веб камеры
  • Драйвера USB Serial
  • Планировщик — для запуска скрипта по cron
  • PHP5 + SQlite3
  • Системный диск — USB-накопитель, т.к. недостаточно собственной памяти для выбранных пакетов

2. Метеостанция на Arduino.

К Arduino подключаем датчики DHT11, DS18B20, BMP085

И скетч — ожидание ‘1’ из последовательного порта и выдача данных в последовательный порт

Кроме того, данные из Arduino мы отправляем в виде максимально приближенном к протоколу отправки данных на сайт narodmon

Для отправки данных на сайт Народного мониторинга будем запускать по cron php-скрипт.

Данные, необходимые для передачи на сервер

  • Уникальный MAC(ID) устройства мониторинга (использовал )
  • Уникальные macN (серийные номера) датчиков подключенных к устройству

для DS18B20 — уникальный номер для 1-wire датчика

для BMP085 и DHT11 — произвольные

  • Показания (valueN) датчиков

Скрипт PHP

Команда для запуска скрипта по cron

И как это выглядит

4. Изображение web-камеры на сайт Народного мониторинга.

Модуль «Драйвер Веб камеры» предназначен для работы с UVC Веб камерами. Я использовал Logitech C270/ Если подключена камера, то сразу после установки модуля вы увидите изображение.
В модуле можно изменить разрешение изображения камеры и количество кадров в сек. Можно так же остановить стриминг или запустить его когда Вам потребуется

Для подключения камеры на сайте Народный мониторинг

Устройства — Мои камеры — Добавить камеру

Открыть порты на роутере

Сервис имеет API, позволяющий получать показания список устройств и камер, а также показания датчиков и изображения с камер
Страница с описанием методов API и примерами

19dx.ru — R0WBH

Личный блог Гладышева Дмитрия

Подключение Arduino к отечественному проекту Народного мониторинга

Хочу рассказать ещё об одном сервисе для удалённого мониторинга температуры, преимущественно за окном. На этот раз проект отечественный, что не может не радовать.

Последнее обновление: 16 июля 2014 (v1.3)
Исправлена ошибка с дробными показаниями температуры

6 октября 2013 (v1.2)
При наличии нескольких термодатчиков данные передаются на сервер одновременно со всех, а не по очереди, как было раньше.

25 февраля 2013 (v1.1)
Исправлена ошибка с округлением отрицательной температуры до десятых долей градуса.

Немного о проекте

Сервис располагается по адресу http://narodmon.ru

Проект начался с обсуждения темы «Народный мониторинг температуры (vs прогноз) в различных городах. Нужен ли?» на Хабрахабре. На тот момент целью проекта являлось лишь информирование пользователей в Интернет о реальной погоде в данный момент времени в определенном месте, где есть участники данного проекта. C дальнейшим ростом аудитории разработчиков электронных устройств для работы с данным проектом, а также пополнением базы пользователей, возникла необходимость расширить рамки проекта с целью передачи сбора показаний с датчиков различного типа с более универсальным протоколом с крайне низкими требованиями к каналу передачи данных вплоть до GPRS/EDGE/3G/UMTS.

Собираем устройство

Нам понадобятся следующие компоненты:

  • Микроконтроллер Arduino или Freeduino (с ATmega328);
  • Ethernet-shield;
  • Цифровой термодатчик DS18B20;
  • Резистор 4.7 кОм;

Все компоненты соединяются между собой также как и в предыдущей статье: Arduino: цифровой термометр с web-мониторингом. Немного повторюсь:

Термодатчик подключается по шине 1-wire по схеме с паразитным питанием. При этом, можно использовать несколько таких датчиков (все они соединяются параллельно двумя проводами) и считывать с каждого отдельную температуру. Подключать можно к любому цифровому входу микроконтроллера, кроме 10, 11, 12 и 13, которые используются для нужд Ethernet Shield.

Прошивка

Теперь заливаем в Arduino следующий скетч:

Обратите внимание на следующие строки:

Здесь необходимо будет придумать MAC-адрес для Arduino (рекомендую взять для этого MAC-адрес вашего компьютера), указать номер входа, к которому подключен термодатчик, а также частоту обновления информации. По MAC-адресу устройство будет идентифицироваться в проекте, поэтому он должен быть уникальным.

Теперь регистрация на сайте

Заходим на сайт, жмём кнопочку «Вход», затем «Я тут впервые». Вводим свой E-Mail и ждём пока на почту свалится письмо с паролем.

Входим в систему.

Теперь нажимаем кнопку «Мои датчики», затем «Добавить». Вводим MAC-адрес, который указан в прошивке. Теперь система должна отобразить подключенные термодатчики и температуру на них. Можно указать местоположение термометра на карте и дать подписи датчикам.

Щёлкнув по пузырьку с температурой на карте, можно просмотреть дополнительную информацию:

Также можно просмотреть график изменения параметра:

и отчёт о переданных числовых данных:

Работа проверялась с Arduino IDE v1.0.1

25 октября 2012 в 15:21

if (b1==0)
….
замени на
if(с1>9)с1 += 0x37;
else с1 += 0x30;
или
c1 += c1>9?0x37:0x30;
если компилятор переварит.

25 октября 2012 в 22:10

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

Домашняя метеостанция на Arduino и отправка данных на «Народный мониторинг»

Автор: Kitsum, 27 сентября 2015 в Arduino

  • Ответить в тему
  • Создать тему

Рекомендованные сообщения

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Похожие публикации

Всем привет, в этой статье поговорим об уже надоевшей всем теме — «Метеостанция». Каждый пытается сделать что-то свое, вот и я не стал исключением и попытался материализовать свои эротические фантазии на контроллере ESP8266. Тема задумывалась уже давно как некое обновление для предыдущего проекта этой тематики, но из-за своей неспешности переросла в нечто самостоятельное.

При всей привлекательности микроконтроллера ESP8266 с его большим объемом памяти, железной поддержкой Wi-Fi и массой разных плюшек, он не лишен недостатков. Самый основной — ограниченное количество поддерживаемых одновременных TCP соединений равное 5. Если превысить этот лимит, то контроллер потеряет связь с окружающим миром, при этом watchdog будет думать, что все в порядке, а следовательно, даже не попытается нам помочь. Будем стараться это помнить!
Стоит начать с концепции
Доступ к данным метеостанции нужно получать без установки внешних приложений и под любой операционной системой. Для этих целей подойдет практически любой современный браузер. Меня всем устраивает Chrome. Раз уж за основу взят HTTP протокол, стоит озаботиться экономией трафика и ограничением числа TCP соединений. Хорошим тоном будет передача всего необходимого для формирования страницы контента только при первом обращении, а все последующие операции, такие как отображение показаний с датчиков или настройку контроллера, производить через API. В этом нам поможет JQuery. А вот, чтобы ослабить болевые ощущения от передачи файлов с SPI Flash в браузер, стоит предусмотреть систему кэширования, например, Etag. Это позволит отдавать тяжелый контент единожды, а при последующих загрузках страницы просто подтверждать его актуальность на уровне Web сервера микроконтроллера и кэш браузера вступит в игру, неимоверно уменьшив время загрузки страницы! «Вы были правы в одном, Мастер: переговоры были недолгими.» © Звездные войны. Эпизод 1 Из-за того, что метеостанция с датчиками и контроллером должна располагаться на улице, жизненно необходимо предусмотреть возможность обновлять прошивку ESP через Web интерфейс. Аналогичным образом должны обновляться файлы Web сервера расположенные на SPI Flash. Этот и предыдущий пункт вкупе позволят обновлять функционал микроконтроллера из домашней сети или из интернета, если конечно в этом возникнет острая необходимость. Чтобы никто посторонний не могу вмешаться в работу устройства или изменить файлы Web сервера, последний должен хотя бы как-то себя защищать. Пускать в панель управления только после авторизации, блокировать доступ при попытках брутфорса пароля. В конце концов, контроллер обязан самостоятельно генерировать ключи (salt) для авторизации, дабы сделать алгоритм непредсказуемым и исключить потенциальный взлом, в случае если злодей завладеет исходниками проекта. Понятно, что кому она там нужна, эта метеостанция, если её не завязывать с умным домом, если только из-за спортивного интереса, но как говориться “Береженого Бог бережет”. Датчики стоит расположить по уму — в метеобудке, а вот контроллер в сухом и закрытом боксе. Объединить их между собой, как мне кажется, удобнее по I2C шине — минимум проводов, максимум удобства. Практически на всех вариантах плат ESP-xx имеется штатный светодиод, можно воспользоваться им как для индикации режимов и состояния микроконтроллера, так и для вывода какой-либо промежуточной информации. Что касаемо режимов работы ESP8266, как ни странно, но он должен находить домашнюю Wi-Fi сеть и подключаться к ней. Если вдруг звезды не были к нам благосклонны, и домашняя беспроводная сеть приказала долго жить, контроллер обязан перейти в режим точки доступа (AP) дабы к нему можно было подключиться с какого-либо устройства и перенастроить его на другую сеть. А вот пока последнее не произошло, ESP должен периодически сканировать эфир в поисках долгожданной домашней точки доступа и, если боги были к нам милосердны, и домашняя сеть появилась в эфире, незамедлительно переключиться в режим клиента (STA) и в пылу страсти воссоединиться с ней. Ну и естественно, как же без отправки данных на внешние ресурсы, сейчас без этого не обходится ни одна уважающая себя кофеварка, не говоря уже о метеостанции. Думаю, что основным блюдом станет протокол MQTT, это уже облегчает возможность интеграции с умным домом, стулом или той же кофеваркой. Ну а на закуску добавим поддержку «ThingSpeak» и «Народного мониторинга». При желании можно нарастить функционал, благо памяти у микроконтроллера еще много. Как я себе это представляю
Учтите, что на видео, данные с датчиков, эмитируются самим микроконтроллером, это нужно для наглядности. В жизни метеорологическая обстановка намного спокойнее слава Богу.
Перейдем к физической сборки устройства
Как по мне, так самый оптимальный вариант, это воспользоваться отладочной платой NodeMCU V3 и базой для неё. Таким образом, мы получим отличный комплект с разведенной на его борту всей необходимой обвязкой и возможностью питать устройство от 5 до 24 Вольт.

Читайте также  5. оповещение по телефонной линии

Отладочная плата на базе, и смотрится хорошо, и удобства хоть отбавляй.

Заливаем прошивку, образ SPI Flash и подключаем четырьмя проводами датчики. Справится даже ребенок.
Ссылки:
Базовая плата для NodeMCU V3 с преобразователем питания 5-24V в 5V Отладочная плата ESP8266 от NodeMCU Естественно никто не запрещает Вам развести свою плату. Если Вы это сделаете, скиньте нам свое творение, возможно мы перейдем на него. В идеале, все должно размещаться в метеобудке.
Датчики взятые за основу
Теперь настал момент озаботиться, где описанные выше ребята будут жить. В прошлый раз мы использовали для этих целей, найденную в подножном корме, электрическую распределительную коробку. Кроме дешевизны в этом решении нет ничего положительного.
В этот раз мы воспользуемся более серьезным вариантом – «Метеорологическая будка Стивенсона». Она способна защитить датчики от прямых воздействий окружающей среды, но при этом имеет открытую структуру со стенками в виде жалюзи. Удобно, красиво и самое главное – правильно!
Будка печатается на 3D принтере по эскизам опубликованным на Thingiverse неким kowomike, спасибо добрый человек! Архив с эскизами можно будет скачать в конце поста.

Фото готовой будки

Шпилька М8 крепится через зажимной хомут к мачте уличной антенны.
Примерка. Шпилька практически не укорачивалась, чтобы не закрывать будку параболической Wi-Fi антенной.
Хотя в моем случае все это сделано не правильно т.к это солнечная сторона дома. Доступа на теневую сторону дома у меня нет, поэтому приходиться довольствоваться тем, что имеем. По прошлой метеостанции мне говорили «на солнечной стороне все эти измерения — сферический конь в вакууме, слепи %описание-многА-букАв% и закрепи на теневой стороне дома».
Я пока живу в панельном многоквартирном доме, как и не малая часть нашей страны. Доступ к теневой стороне дома (а для меня, по факту, это окна в подъезде) — прямой вызов всем гопникам района трущимся рядом, любопытным соседям с бегающими глазками и всей элите человечества скрашивающей фоном мою унылую и слишком простую, по их мнению, жизнь. Думаю, что мысль я донес.

Датчики располагаются на разных уровнях. В основании находится датчик освещенности BH1750 и смотрит ровно вниз. Мне кажется, так он будет меньше пачкаться и покрываться пылью и при этом смотреть наружу сквозь минимальное количество препятствий для солнечного света. Вообще размещение этого датчика, это целая головная боль. Как не крути, все будет не то. Оставил так, ведь по сути важны не сами показания, а тенденция изменения. Хотя кого я пытаюсь обмануть, точность важна всегда! Предлагайте свои варианты.
Намного проще обстоят дела с датчиком атмосферного давления BMP180 и влажности SI7021, кстати, с последнего мы также будем забирать данные о температуре. Их размещаем в оставшемся свободном пространстве будки, благо его там с избытком, но не в конусе т.к пространство в нем менее проветриваемое.

Все хозяйство подключается между собой следующим образом
NodeMCU | ESP 07/12 | Датчики —————————— D2 | GPIO 4 | SDA D1 | GPIO 5 | SCL 3.3V | 3.3V | 3.3V GND | GND | GND ВАЖНО: при финальном монтаже устройства на его место службы, обязательно установите перемычку между пинами GPIO 0 (D3) и питанием 3.3 Вольта. Причины её установки описаны в закрепленном сообщении с описание обновления от 12.08.2017.
Сам микроконтроллер будет спрятан в уже знаменитую распределительную коробку, закрепленную на шпильке, чуть ниже будки Стивенсона. У меня все находится на стадии неторопливой сборки с попутным поиском более удачных идей.
Плата расширения, на которой будет установлена плата NodeMCU, закреплена через ножки для крепления компьютерных материнских плат в корпусах.

Разъемы для подключения внешних датчиков и питающей линии установил на местах где была пара штатных заглушек. Закрепил все через переходную пластину, выпиленную из куска фольгированного текстолита. Естественно, предварительно пластина была протравлена, а вся медь искоренена, ибо в этом случае она нам не друг.
Также была предусмотрена проставка из полиэтиленового поролона (используется в качестве упаковочного материала при транспортировке грузов) между текстолитом и корпусом, общей толщиной 5мм, а после затяжки крепежных винтов, его толщина не превышает 1мм. Это было сделано из-за опыта эксплуатации предыдущего (временного) бокса для этой метеостанции. Без проставки влага быстро найдет путь вовнутрь, и срок службы устройства снизится.
Производим примерку.
При окончательном монтаже обязательно необходимо удалить все не плотно прилегающие части полиэтиленового поролона, то есть те части, которые располагаются снаружи и не сдавлены крепежной текстолитовой пластиной. Это необходимо сделать для препятствования накоплению влаги в доступных для неё полостях. Также пришлось увеличить число крепежных болтов для более надежного прилегания текстолита, в противном случае он может выгибаться.
Все самое сложное позади, остается только вывести на один разъем шину i2c с питание 3.3 Вольта, а на другой подвести пины питания платы расширения. Но т.к у меня валялся «хвост» отрезанный когда-то от не рабочего блока питания маршрутизатора, и я не побрезговал им воспользоваться по прямому назначению.

Далее останется все подравнять, проверить качество монтажа, возможность замены платы NodeMCU, если это будет необходимо при эксплуатации и самое главное, дважды проверить, что и куда припаяно. Мои кривые руки и невнимательность уже наказывали меня, а т.к ждать новые запчасти долго, повторять не хочется.

Общий вид получился таким
А вот как все выглядит в боевых условиях. Кстати, могу предложить идею с помещением в бокс мешочка содержащий впитывающий влагу гель, они часто встречаются в коробках с обувью. Если все герметично, то он впитает остатки влаги, а если нет, то лишним уж точно не будет.

Arduino и Rasperry

Arduino и Rasperry

Вариант работы с народным мониторингом

Передавать данные на сайт народного мониторинга не просто, а очень просто и совсем не дорого, в итоге у меня вышло 11-12$, предлагаю свой вариант подключения к данному сервису с минимальными финансовыми затратами. Для построения данной системы нам понадобятся:

1.Собственно Arduino pro mini(4.5-4.8$) подойдет и Arduino Uno, но конечный вариант будет дороже


3.Цифровой датчик температуры DS18B20(1.5-2.0$)

4. Блок питания с выходом на 5 вольт для питания arduino и датчика температуры, а также 3.3 вольта для питания ENC28J60

5.Кабель для заливки скетча в arduino

Все вышеперечисленное хозяйство легко покупается у наших друзей из поднебесной и общие затраты вряд ли превысят 500 рублей.

Соединяем все это дело:

1.Подключаем ENC28J60 к Arduino

2. Подключаем датчик температуры линией данных на 9 pin 3. Заводим питание на все компоненты Скетч берем здесь там же подробно расписана его работа и регистрация на сайте народного мо ниторинга

Библиотеку для ENC28J60 здесь

Библиотека для DS18B20 здесь

В скетч вносим следующие изменения:

строку 8 #include rnet.h> запишем так #include ,

а строку 15 OneWire ds(2); так OneWire ds(9); соответственно

Читайте также  Два варианта модема: hamcomm и hamcomm+

датчик температуры включаем на 9 pin. Заливаем скетч, подключаем кабель к роутеру и наконец подключаем питание

Развел все на печатке, взял зарядку от мобильника на 5v, добавил на плату стабилизатор AS1117 3.3 с какой-то ненужной платы на 3,3v, Все можно упаковывать в коробочку.

Как и обещал выкладываю файлы печатной платы

1. В формате Sprint-Layout 5.0 тут

Обращаю внимание стабилизатор припаивается с задней стороны, там-же есть место для подтягивающего smd резистора, два электролита 25mf указаны в даташите на стабилизатор по этому и впаял. Контакты разведены под винтовые клемники(в наличии в тот момент небыло поэтому впаял просто штырьки). Имеется 1 проволочная перемычка. Питание беру 5 Вольт от зарядки мобильника.

Вариант работы с народным мониторингом : 15 комментариев

Отлично сделано. Я тоже размещаю данные на народном мониторинге как и ты, мы соседи с тобой(датчик на шоссе Космонавтов).
На сколько ты хорошо разбираешься в микроконтроллерах и протоколах? Если хорошо, я хотел бы у тебя проконсультироваться.

  1. sagis Автор записи 13.12.2013 в 23:28

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

Можно разводку платы под этот проект получить?

  1. sagis Автор записи 25.02.2014 в 08:07

ОК! Вечером выложу.

Здравствуйте, сделал себе такой же точно термометр но проблема в том что значения на сайт отправляются только часа 3 максимум, а потом все, пока не выключишь и опять не включишь. Подскажите что можно сделать, я в программировании полный чайник, можно ли как нибудь сделать чтоб ардуино периодически перезагружалась сама?

Вернее всего у вас проблемы с питанием, поначалу у меня тоже зависало, но после смены блока питания проблемы ушли. А так можно перезагружать arduino при достижении определенного значения millis()

Спасибо за ответ, по питанию уже сменил, не помогло все равно виснет.
А что добавить в скетч чтоб перезагружать ардуино если несложно подскажите, и в какое место вставить в скетче эти записи

Заменил ардуино, ивсе отлично заработало, вот бы никогда не подумал

У меня при компиляции размер hexа получается 32000 против 22000 на обычной библе и соответственно не лезет в про мини. У Вас так же было?

  1. sagis Автор записи 17.10.2014 в 19:37

нет в про мини нормально влезло, объем больше потому что 28j60 требует библиотеку побольше в объеме, точные цифры позже посмотрю

А в про мини шили хексом или через ардуиновскую прогу. Я думаю без загрузчика про мини должна влезть, если хексом через программатор залить, но будет ли работать?

попробуйте удалить из скетча отладочные ссылки на serial порт объем существенно уменьшится, чуть ужатый скетч который у меня и работает размер 28386 отправил вам на почту

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

Мониторинг температуры и влажности через Интернет с помощью Arduino

Измерение температуры и влажности регулярно производится во многих современных учреждениях: фермы, офисы, медицинские учреждения, промышленные склады и т.д. В связи с этим контроль (мониторинг) этих параметров является востребованной задачей, реализованной во многих электронных устройствах.

Ранее на нашем сайте мы уже рассматривали измерение температуры и влажности с помощью Arduino, а в этом проекте мы рассмотрим мониторинг температуры и влажности через сеть Интернет с помощью Arduino и сервиса (сервера) ThingSpeak. В этом проекте мы будем использовать плату Arduino Uno, датчик DHT11, WiFi модуль ESP8266 и ЖК дисплей. Температура в градусах Цельсия и относительная влажность в процентах будут показываться на ЖК дисплее, а также передаваться на сервер ThingSpeak, на котором через сеть Интернет можно будет посмотреть эти значения из любой точки мира.

Настройка ThingSpeak

Структурная схема работы нашего проекта представлена на следующем рисунке и она содержит 4 секции. Вначале с помощью датчика температуры и влажности DHT11 измеряются эти параметры атмосферы. Затем плата Arduino Uno считывает эти данные с DHT11 и преобразует их в нужную для нас форму, а затем она передает их на Wi-Fi модуль. После этого Wi-Fi модуль ESP8266 передает эти данные на сервер ThingSpeak. Затем сервис ThingSpeak анализирует эти данные и показывает их в удобной графической форме. Также дополнительно значения температуры и влажности показываются на экране ЖК дисплея.

Сервис ThingSpeak представляет собой достаточно удобную платформу для реализации различных проектов тематики интернета вещей (IoT) на Arduino. С помощью сервиса ThingSpeak мы можем просматривать (контролировать) наши данные через сеть Интернет из любой точки мира, также с его помощью мы можем управлять нашими системами (устройствами) через интернет. ThingSpeak собирает данные от датчиков, анализирует и визуализирует эти данные, а затем реагирует на различные события, которые могут привести к изменению этих данных. В этой части статьи мы рассмотрим как передавать данные на сервер ThingSpeak с использованием Wi-Fi модуля ESP8266 (купить на AliExpress).

1. Вначале нам необходимо создать аккаунт на ThingSpeak.com, заходим туда, жмем Sign In, а потом Get Started.

2. Затем идем в пункт меню ‘Channels’ (каналы) и создаем новый канал с помощью кнопки New Channel.

3. После этого увидите форму для создания нового канала, заполните там поля Name (имя) и Description (описание) по своему усмотрению. Затем напишите ‘Humidity’ (влажность) и ‘Temperature’ (температура) в Field 1 (поле 1) и Field 2 (поле 2) и поставьте галочки в чек-боксах напротив этих полей. Также поставьте галочку в чек-боксе ‘Make Public’ (сделать общедоступным) в форме ниже и сохраните канал (Save the Channel). Теперь новый канал для вас создан.

4. Теперь откройте вкладку ‘API keys’ чтобы записать свои ключи с этой вкладки. Нам будет нужен только ключ для записи (Write key). Скопируйте этот ключ в переменную char *api_key в тексте программы (приведен в конце статьи).

5. После этого кликните на ‘Data Import/Export’ и скопируйте Update Channel Feed GET Request URL, который будет примерно вида https://api.thingspeak.com/update?api_key=SIWOYBX26OXQ1WMS&field1=0.

6. Теперь необходимо открыть api.thingspeak.com используя функцию httpGet с postUrl в виде “update?api_key=SIWOYBX26OXQ1WMS&field1=0” и затем передать данные используя адрес обновления запроса.

Перед передачей данных необходимо отредактировать строку запроса или postUrl с полями данных температуры и влажности как показано в программном коде ниже. Здесь мы добавили в строку оба параметра, которые нам необходимо передать используя GET запрос к серверу, после этого необходимо использовать httpGet чтобы передать данные на сервер. Более подробно все эти процессы представлены в полном тексте программы, представленном в конце статьи.

Читайте также  Вибростол для испытания изделий

В рассматриваемом проекте плата Arduino передает сигнал старта (после которого начинаются измерения) на датчик DHT, а в ответ датчик DHT передает Arduino сигнал, содержащий необходимые данные измерений. Плата Arduino собирает и извлекает эти данные в два приема: сначала извлекается влажность, а потом извлекается температура. Далее эти данные обрабатываются и передаются на ЖК дисплей 16×2 и сервер ThingSpeak. Сервис ThingSpeak отображает данные температуры и влажности в виде графиков, пример которых показан на следующем рисунке.

Работа схемы

Схема устройства представлена на следующем рисунке.

ЖК дисплей на представленной схеме подключен к плате Arduino в 4-битном режиме. Контакты ЖК дисплея RS, EN, D4, D5, D6 и D7 подсоединены к цифровым контактам Arduino с номерами 14, 15, 16, 17, 18 и 19. Использование ЖК дисплея в данном проекте опционально – можно обойтись и без него.

Датчик DHT11 подсоединен к цифровому контакту 12 платы Arduino. Контакты Vcc и GND модуля ESP8266 подключены к контактам 3.3V и GND платы Arduino, контакт CH_PD также подсоединен к 3.3V. Контакты Tx и Rx модуля ESP8266 непосредственно подсоединены к контактам 2 и 3 платы Arduino. Библиотека последовательной связи (Software Serial Library) используется чтобы осуществлять последовательную связь на контактах 2 и 3 Arduino. Также об использовании Wi-Fi модуля ESP8266 совместно с Arduino можно прочитать в статье про передачу Email с помощью Arduino и модуля ESP8266.

Исходный код программы

В программе мы первым делом должны подключить необходимые библиотеки и инициализировать необходимые переменные.

#include»dht.h» // подключение библиотеки для работы с датчиком dht
#include
// библиотека для работы с ЖК дисплеем
LiquidCrystal lcd(14,15,16,17,18,19);
#include
Timer t;
#include // библиотека последовательной связи
SoftwareSerial Serial1(2, 3); // передача и прием последовательных данных будет производиться на контактах 2 и 3

После этого необходимо записать ваш API key и инициализировать некоторые строки (строковые переменые).

char *api_key=»SIWOYBX26OXQ1WMS»; // запишите здесь ваш API key с сервиса ThingSpeak
static char postUrl[150];
int humi,tem;
void httpGet(String ip, String path, int port=80);

В функции void loop() мы будем считывать значения температуры и влажности и затем показывать их на ЖК дисплее.

Функция void send2server() используется для передачи данных на сервер. Функция Send2server представляет собой подпрограмму обработки прерывания от таймера, вызываемую каждые 20 секунд. Когда мы будем вызывать функцию обновления (update function), подпрограмма обработки прерывания от таймера будет вызываться.

Домашняя метеостанция на базе Ардуино

Давненько хотелось сделать мини метеостанцию-надоело выглядывать в окно чтобы посмотреть на градусник за стеклом. Этот приборчик заменит гигрометр, барометр и термометр а также покажет текущее время. В данном посту я расскажу как быстро и просто собрать небольшую метеостанцию на базе Ардуино. Основой будет плата Arduino Nano можно применить другие платы- Arduino Uno, Arduino Pro mini). Данные атмосферного давления и температуры в помещении будем получать с датчика BMP180, а влажность и температуру на улице с датчика DHT11. Часы реального времени DS1302 будут указывать текущее время. Всю информацию выводим на двухстрочный дисплей LCD1602.

Датчик DHT11 передает информацию по одному проводу на ардуино. Питается напряжением 5 В. Он измеряет влажность в пределах от 20 до 80%. Температура измеряет в диапазоне от 0 до 50 о С.

Эта самоделка сделана на базе готовых плат и датчиков, поэтому ее можно повторить любому начинающему любителю поработать с паяльником. Заодно можно получить азы программирования Ардуино. Я программировал эту метеостанцию в программе визуального программирования FLPROG за 15 минут. Не нужно вручную часами писать скетчи, данная программа помогает начинающим (и не только) быстро освоить азы программирования устройств на основании платформы Ардуино.

Кому лень повозиться с программой — скетч ( только выставлять текущее время часов надо будет):

Применять такой прибор можно где угодно или дома, на природе или поместить в автомобиль. Есть возможность запитать схему от аккумуляторов, применив плату заряда, в итоге будет переносная модель метеостанции.

Всю информацию можно получить посмотрев в видео:

Перечень материалов и инструментов

-плата Arduino Nano
-двухстрочный дисплей LCD1602;
-часы реального времени DS1302;
-датчик атмосферное давления и температуры BMP180;
-датчик температуры и влажности DHT11;
-блок зарядки от телефона;
-любой подходящий корпус
-пинцет;
ножницы;
-паяльник;
-кембрик;
-тестер;
-соединительные провода;
-провод четырехжильный для выносного датчика.

Шаг первый. Делаем корпус для метеостанции

Подобрал пластмассовую коробочку из магазина Fix Price (всего то 17р). Предварительно вырезал в крышке окно для дисплея. Затем вырезал частично перегородки в коробке, сделал отверстия для USB разъема платы Arduino проем для датчика BMP180 Датчика BMP180 будет находится на наружной стороне корпуса, чтобы исключить лишний нагрев от электронной начинки находящейся внутри. После я покрасил корпус самоделки изнутри потому что пластик прозрачный. Коробка закрывается на защелку и в ней все элементы неплохо поместились.

Шаг второй. Сборка схемы прибора.

Далее надо скоммутировать по схеме все платы и датчики метеостанции. Делаем это с помощью монтажных проводов с соответствующими разъемами. Я не делал соединения на пайке ,так в перспективе при выходе какого то модуля из строя (или по другим причинам) можно легко его заменить. На винтовом разъеме подключается кабель датчика DHT11 идущий на улицу. Питание можно осуществить с разъема USB платы Ардуино на компьютер, или подав напряжение 7-12В на контакт VIN и GND.

Сначала я собрал схему вне корпуса и запрограммировал и отладил ее в программе FLPROG.

Фото блок схемы в программе FLPROG.

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

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

Всем спасибо за внимание, вам успехов и удачи и в вашей жизни и в творчестве!