Pull to refresh

Ethernet метеостанция 2 – Продолжение…

Reading time 4 min
Views 40K
Приветствую всех! Долговое время не имел возможности поведать общественности о том, во что же все же превратился мой проект.
Наконец дошли руки для написания еще одной статьи.

В первой моей статье, «Ethernet погодная станция», было поведано о проекте создания домашней метеостанции с определенным заделом на расширение функционала в будущем. На текущий же момент из проекта данное изделие перешло в раздел полноценного устройства. Работающего по принципу 24/7 и добросовестно сообщающего мне и моему семейству о состоянии погоды. Сразу скажу, что многое было изменено.

Изначально была идея использовать домашний сервер, но в дальнейшем, я все же пришел к тому, что будет более функционально и доступно использовать облачные сервисы для отображения и хранения данных. И тут я наткнулся на статью одного из читателей «Хабра» Евгения Богера evgeny_boger «Демонстрация работы Wiren Board Smart Home», где описывалось применение замечательного сервиса Ninja Blocks. На нем я и решил реализовать отображение данных.

На текущий момент это выглядит так:



Больше графиков








Сразу сделаю оговорку, на графиках видна небольшая нелинейность данных, нечто вроде «дребезга». Пока данную проблему мне устранить не удалось, возможно это либо из за большого промежутка логирования данных (раз в 60 сек.). Или просто определенная погрешность датчиков. Если кто подскажет решение, буду признателен. А для особо внимательных можно увидеть что измерение давления идет в «КВтч», это потому, что как ни странно, я ни нашел в Ninja Blocks графика для отображения данных о давлении. Поэтому для «цветовой» дифференциации и попросту визуального восприятия я использовал график отображения потребляемой мощности. Так же видно два графики внутренней температуры. Это обусловлено тем, что BMP085 так же имеет возможность измерения температуры, и я использовал его как контрольный датчик.

Скажем несколько слов о самом коде:

Работать с самим сервисом Ninja Blocks с точки зрения кода очень просто и удобно.
Для начала необходимо создать аккаунт на самом облаке. Для этого идем по адресу: «Ninja Blocks»

Создаем аккаунт.

Теперь у нас есть уникальный код, «токен», для использования в самом коде, чтобы идентифицировать наше устройство.

Стоит добавить что нам необходим для Arduino Virtual Block Token.

Теперь переходим к написанию кода.
Изначально указываем нужную библиотеку, при написании скетча:
 #include <NinjaBlockEthernet.h> 

Далее прописываем соединение с сервером самого облака Ninja Blocks:
    NinjaBlock.host = "api.ninja.is";
    NinjaBlock.port = 80;
    NinjaBlock.nodeID = "ETHERSHIELDBLOCK";  // - Уникальное имя вашего устройства;
    NinjaBlock.token = "уникальный код";// - Уникальный код вашего устройства получаемый при регистрации;
    NinjaBlock.guid = "0";

А потом указываем какие данные отправлять и какой график использовать для их отображения.
На примере температуры это выглядит так:
void loop() 
  {
    float t1 = dht.readTemperature();
{  
      NinjaBlock.deviceID=(31); // - Указание используемого графика;
      NinjaBlock.send(t1);
  }

Полный перечень возможных графиков и их описание можно найти здесь «Перечень графиков». Увы, но графической подсказки отображения нет. Я лично, искал требуемый, методом перебора нужных.
Еще надо сказать, что указанный в коде график появляется автоматический в разделе «Dashboard»:


Вот вкратце как работать с данным сервисом.
Итоговый код приводить я не стал, т.к. он не отличается чем то оригинальным. Если кому то будет интересно, вышлю.

Само же изделие, на текущий момент, имеет вот такой вид:



Подробные фото корпуса с вент. отверстиями










Станция оформлена в полноценный корпус, снабжена внешним БП в 5В. Как видно из фото имеет два индикатора, для оценки работы, «зеленый»питание, «красный»передача данных. Сразу скажу что собиралось все не по принципу «заводского» изделия, а по старому русскому принципу «я тебя слепила из того что было!». Но, однако, все же была попытка слепить из... сделать «как надо».

Немного о параметрах измерения самих метеоданных
Это все же метеостанция и было бы не верно не упомянуть о диапазонах измерямых ее параметров.

Измерение параметров внутри помещения:
• Диапазон измерения влажности 0%..100%
• Диапазон измерения температуры -40 ~ +80℃

Измерение параметров снаружи помещения:
• Диапазон измерения влажности 0%..100%
• Диапазон измерения температуры -40 ~ +80℃

Измерение параметров давления воздуха:
• Диапазон измеряемых давлений, mbar 300 — 1100

Более точные параметры BMP085
  1. Абсолютная точность, mbar (в лучшем/худшем случае) ±2.5 / ±4.0
  2. Относительная точность, mbar (в лучшем/худшем случае) ±0.2/±0.5
  3. Максимальное разрешение, mbar/m (давление/высота) 0.01
  4. Диапазон измеряемых температур, °С 0 — 65
  5. Абсолютная точность, °С (в лучшем/худшем случае) ±0.5/±2.0
  6. Максимальное разрешение, °С 0.1
  7. Средний ток потребления (1 семпл/с), µA (min/max) 3/12



Отдельное слово хочется сказать о размещении внешнего датчика. Над его размещением я долго думал. Вначале датчик ютился в обычной монтажной коробке, по соседству с датчиком от «заводской» метеостанции:


Но это было временно. Да и выглядело довольно ужасно. В итоге решение было найдено. И для размещения внешнего датчика было создано вот «это»:

Да, и зачем так много гаек 0_о? Нет, не в качестве противовеса, а просто для вида))) Достаточно и одной было бы)

Теперь оба датчики соседствую вот таким образом:


Кому будет интересен процесс создания сия чуда, домашние окрестили это просто «ёлочкой», то пошаговое фото в архиве в приложении АРХИВ ФОТО. Изначально прошу прощения за качество, фото делалось в процессе.
А еще, данная «ёлочка» ночью имеет довольно эстетичную кислотно-зеленую внутреннюю подсветку! Которую прекрасно видно с земли. Ну это так, больше «лирика», для распугивая особо впечатлительных соседей)

В заключении:
В итоге имеем полноценную, не очень дорогостоящую, вполне работоспособную метеостанцию.
Которая дает данные о температуре и влажности внутри и снаружи помещения, а так же данные о давлении воздуха. Так же доступ к этим данным может быть осуществлен с любого устройства имеющего выход в интернет благодаря сервису Ninja Blocks.

Что дальше?!?
Сейчас есть идеи сделать проект более масштабным, написать виджет для платформы Android. Реализовать доступность данных не только мне, но и остальным жителям района и города в целом. Ведь погода с конкретной точки горазда точнее, чем погода с «gismeteo» или иных ресурсов, имеющих глобальные данные.

Использованные материалы:
«Ethernet погодная станция»
«Демонстрация работы Wiren Board Smart Home»

P.S.
Кому интересно буду рад ответить на все вопросы. Исходники кода могу выслать.
Tags:
Hubs:
+13
Comments 23
Comments Comments 23

Articles