Простая погодная станция для мира вещей (своими руками)

Наблюдения за погодой — не всегда интересный процесс. Особенно, когда записываешь показания вручную, как это делал когда-то мой прадед. Сегодня автоматическими станциями, которые могут регистрировать всё и сразу, вряд ли удивишь. Но несложное устройство, собранное своими руками, ещё может принести удовлетворение. Сегодня речь пойдёт о связке ESP-12F с датчиком DHT11.

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

Маленькое достижение в математике, конечно, грело душу, но хотелось чего-то более изящного и удобного. В связи с чем датчик был выпаян, и соединён с купленным недавно модулем ESP-12F. Смысл этого действия был прост: передавать данные с датчика в реальном времени на сайт, где отображался бы живой график, а все данные при необходимости можно было бы скачать.

Изобретать велосипед мне не пришлось. Конечно же, такие решения уже были реализованы до меня, оставалось только собрать кирпичики и заточить под свои нужды. Как и в предыдущих статьях, я сделал упор на ESPlorer и Lua. Схема до безобразия проста, аккумулятор от старого мобильника опущен:

В качестве хранилища данных можно выбрать любой сайт, вплоть до своего собственного, но есть в сети и такие, которые заточены специально под интернет вещей. Например, thingspeak.com. Бесплатный аккаунт позволяет хранить до трёх миллионов точек данных, а ежедневная нагрузка выходит около восьми тысяч записей. Для данных о температуре и влажности, собираемых раз в минуту, этого вполне достаточно (2х60х24=2880). На этом сайте и был создан канал с двумя полями. Кстати, вводимые названия полей используются только для отображения, в коде они называются field1 и field2.

Код состоит из двух файлов.

В dht11.lua (взят у OK1CDJ) описана работа с модулем, включая выгрузку данных. От себя там изменена строка запроса согласно обновлённым требованиям сайта. Естественно, api_key нужно ввести свой, я оставил в этом месте подчёркивания. Процедура опроса датчика и передачи данных зациклена и выполняется раз в минуту (60000 мс в последней строке кода, можно изменить).

В init.lua — подключение к точке доступа (SSID и пароль у каждого свои) и вызов dht11.lua.

Эти два файла загружаются через переходник USB-COM, для будущих экспериментов я оставил проводники RX/TX, завернув их в изоленту. При включении жмём кнопку сброса, и если модуль ещё подключён к компьютеру, то он в терминале отчитается, какой адрес получил, и раз в минуту будет выбрасывать данные на экран. Это чисто для контроля работоспособности.

Через минуту на сайте уже будет первая точка графика. А дальше —

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

Интересно, что на Thingspeak люди выкладывают даже данные о счётчиках воды в квартире. А что — удобно ведь, каждый месяц передавать данные не нужно было бы…

Должен сказать, что DHT11 — не лучший датчик. В проекте с STM32 он определённо врал о влажности, а в этом — иногда выдаёт какие-то сбойные значения. Возможно, причина тут в питании — он очень не любит падения напряжения ниже трёх вольт, а уж колебаний — тем более. Поэтому лучше бы взять BMP280: в нём хоть и нет влажности, зато есть давление, и он стабильный. А измеряя давление можно сделать ещё и альтиметр или вариометр… но это оставлю для будущих статей. Пока нужно ещё коробочку с вентиляцией правильную сделать: и от дождя защитить, и от прямых солнечных лучей.


Protected by Copyscape Online Plagiarism Test
Вы не можете высказаться или оставить ссылку здесь...

Обсуждение закрыто.

Powered by WordPress | Thanks to NewWpThemes | Александр Божок