– Влажность:
Диапазон измерения 20÷90%.
Погрешность ±5%.
Разрешающая способность 1%.
– Температура:
Диапазон измерения 0÷50 о С.
Погрешность ±2 о С.
Разрешающая способность 1 о С.
4. Измерение давления и температуры датчиком BMP-180 .
– Давление:
Диапазон измерения 225÷825 мм рт. ст.
Погрешность ±1 мм рт. ст.
Разрешающая способность 1 мм рт. ст.
– Температура:
Диапазон измерения -40,0÷85,0 о С.
Погрешность ±1 о С.
Разрешающая способность 0,1 о С.
5. Циклическая анимированная смена показаний.
6. Режим "кукушки". Ежечасный короткий звуковой сигнал. Если активирован и только в дневное время.
7. Озвучивание нажатия на кнопки. Короткий звуковой сигнал только в дневное время.
8. Сохранение настроек в энергонезависимой памяти микроконтроллера.
Настройка.
1. Вход в настройки и листание меню производится кнопкой MENU .
2. Переключение параметра для настройки в пределах одной страницы меню кнопкой SET .
3. Установка параметра кнопками PLUS / MINUS . Кнопки работают по одиночному нажатию, а при удержании производится ускоренная установка.
4. Устанавливаемый параметр мигает.
5. Через 10 сек от последнего нажатия на кнопки прибор перейдет в основной режим, настройки запишутся в память.
6. Страницы меню.
CLOC :
– сброс секунд.
– установка минут.
– установка часов.
– установка ежесуточной коррекции точности хода. В старшем разряде символ c . Диапазон установки ±25 сек.
ALAr :
– минуты срабатывания будильника.
– часы срабатывания будильника.
– активация будильника. В старшем разряде символ A . В младших On , если работа будильника разрешена, OF – если запрещена.
– активация режима "кукушки". В старших разрядах символы cu . В младших On , если работа "кукушки" разрешена, OF – если запрещена.
DiSP :
– продолжительность индикации времени. На индикаторе d xx . Диапазон установки
– продолжительность индикации влажности. На индикаторе H xx . Диапазон установки 0 ÷ 99 сек. Если установлен 0, то параметр отображаться не будет.
– продолжительность индикации температуры, измеренной датчиком влажности. На индикаторе tHxx . Диапазон установки 0 ÷ 99 сек. Если установлен 0, то параметр отображаться не будет.
– продолжительность индикации давления. На индикаторе P xx . Диапазон установки 0 ÷ 99 сек. Если установлен 0, то параметр отображаться не будет.
– продолжительность индикации температуры, измеренной датчиком давления. На индикаторе tPxx . Диапазон установки 0 ÷ 99 сек. Если установлен 0, то параметр отображаться не будет.
– скорость анимации. В старшем разряде символ S . Диапазон установки 0 ÷ 99. Чем меньше величина, тем выше скорость.
LiGH :
niGH - установки ночного режима.
– минуты включения ночного режима.
– часы включения ночного режима.
– яркость индикатора в ночном режиме. В старшем разряде символ n . Диапазон установки 0 ÷ 99. Яркость индикатора соответствует ночному режиму.
dAY - установки дневного режима.
– минуты включения дневного режима.
– часы включения дневного режима.
– яркость индикатора в дневном режиме. В старшем разряде символ d . Диапазон установки 0 ÷ 99. Яркость индикатора соответствует дневному режиму.
Работа прибора.
1. В основном режиме происходит циклическая смена информации на индикаторе. Установлена следующая последовательность вывода: время – влажность (в старшем разряде символ H ) – температура измеренная датчиком влажности – давление (в старшем разряде символ P ) – температура измеренная датчиком давления. Если продолжительность отображения какого-либо параметра установлена в 0, то на индикатор он выводиться не будет.
2. Из основного режима можно переключить индикацию кнопками PLUS /MINUS .
3. В случае ошибки считывания данных с датчика DHT11 при индикации температуры и влажности на индикатор выводятся прочерки.
4. Если будильник активирован (см. настройки), при отображении времени в младшем разряде включена точка. В заданное время включается звуковой сигнал - ежесекундные двойные сигналы в течении одной минуты. Звуковой сигнал может быть досрочно отключен нажатием на любую кнопку. При срабатывании будильника на индикатор в течении 30 секунд выводится время.
5. Ежесуточно (в 0 часов 0 минут и 30 сек) производится цифровая коррекция времени. , DS1307 .
4. Тип индикатора (общий анод или катод) выбирается джампером. Если джампер установлен, то выбран индикатор с общим анодом.
5. На схеме показаны два индикатора, устанавливается только одни.
6. Пищалка должна быть со встроенным генератором. В зависимости от ее тока потребления, возможно понадобится установка усилителя (транзисторного ключа).
В ходе обсуждений и доработок в теме форума появилось несколько разных версий этого проекта.
По возможности обновленные материалы будут выкладываться здесь. Краткие описания в архивах
Благодарность studiotandem за подготовку материалов и тестирование прошивок.
Захотелось иметь свою метеостанцию, которая передает показания с датчиков на карту народного мониторинга (ищется в гугле за 5 секунд). Оказалось это не так сложно, как кажется. Рассмотрим, что было сделано.
Для данного действия я взял себе Arduino Uno и Ethernet Shield w5100 для нее. Все это заказывалось из Китая на Aliexpress.
Так же там заказал себе датчики: DHT22, DHT11, DS18B20, BMP280 (в планах еще датчики газа, дыма…)
Покурив форумы, гугл, яндекс, я нашел неплохой вариант скетча — https://student-proger.ru/2014/11/meteostanciya-2-1/
Там же в комментариях человек выкладывал дописанный скетч с датчиками освещенности, газа. Я взял их за основу.
В тех скетчах не было поддержки 280-го датчика давления, пообщались с автором, он заменил 180 на 280. Все заработало прекрасно (спасибо ему за это огромное)
Ниже приведу пример итогового скетча, что получился у меня.
В данный момент у меня подключены датчики:
DHT22 — 1шт.
DHT11 — 1шт.
BMP280 — 1шт.
DS18B20 — 2шт.
ВНИМАНИЕ! Перед тем как заливать скетч, не забудьте изменить MAC-адрес устройства, чтобы не пересекаться с другими (например взять Mac-адрес вашего мобильного телефона и изменить в нем последние буквы/цифры, что не «будоражило» вашу локальную сеть!
Примерная схема подключения (картинка взята на просторах интернета от данного скетча):
По техническим причинам у меня не получается выложить скетч прямо сюда. Поместил его в архив. Ссылка на него строчкой выше.
Как видно, показания есть, идут исправно, для примера выложу пару скриншотов со своих датчиков:
Наблюдение за погодой - весьма увлекательное занятие. Я решил построить свою погодную станцию на базе популярного .
Прототип метеостанции выглядит так:
Функции моей метеостанции:
Hex
-файл
прошивки для (версия от 9 мая 2018 года) -
.
Как прошить hex
-файл в плату Arduino
, я описал .
Микроконтроллер Arduino Nano 3.0
"Сердцем" моей метеостанции является микроконтроллер eBay
):
Для управления индикацией и опросом датчиков я использую таймер 1 Arduino , вызывающий прерывания с частотой 200 Гц (период - 5 мс).
Индикатор
Для отображения измеряемых показаний датчиков и текущего времени я подключил к Arduino
четырехразрядный светодиодный индикатор Foryard FYQ-5643BH
с общими анодами (аноды одинаковых сегментов всех разрядов объединены).
Индикатор содежит четыре семисегментных разряда и две разделительные (часовые) точки:
Аноды индикатора подключены через токограничивающие резисторы к выводам Arduino :
разряд | 1 | 2 | 3 | 4 |
вывод | A3 | A2 | D3 | D9 |
Катоды сегментов подключены к выводам Arduino :
сегмент | a | b | c | d | e | f | g | p |
вывод | D7 | D12 | D4 | D5 | D6 | D11 | D8 | D13 |
Сегмент индикатора светится, если на аноде соответствующего разряда высокий потенциал (1), а на катоде - низкий (0).
Я использую динамическую индикацию для отображения информации на индикаторе - в каждый момент времени активен только один разряд. Активные разряды чередуются с частотой 200 Гц (период отображения 5 мс). При этом для глаз мерцание сегментов незаметно.
Датчик температуры DS18x20
Для возможности удаленного измерения температуры я подключил датчик , который обеспечивает измерение наружной температуры в широких пределах. Датчик подключается к шине 1-Wire и имеет три вывода - питание (VCC ), данные (DAT ), земля (GND ):
вывод датчика | VCC | DAT | GND |
вывод Arduino | 5V | A1 | GND |
Между выводами VCC и DAT я включил подтягивающий резистор сопротивлением 4,7 кОм.
Для перевода между градусами Цельсия и Фаренгейта можно использовать такую табличку:
Я разместил датчик за окном дома в пластиковом корпусе от шариковой ручки:
\
В профессиональных метеостанциях для защиты термометра от прямых солнечных лучей и обеспечения циркуляции воздуха используется экран Стивенсона (англ. Stevenson screen
):
Датчик давления и температуры BMP280
Для измерения атмосферного давления традиционно используют ртутные барометры и барометры-анероиды.
В ртутном барометре
атмосферное давление уравновешивается весом столба ртути, высота которого и ипользуется для измерения давления:
В барометре-анероиде
используется сжатие и растяжение коробки под действием атмосферного давления:
Для измерения атмосферного давления и комнатной температуры в своей домашней метеостанции я использую датчик - маленький SMD
-датчик размером 2 x 2,5 мм, основанный на пьезорезистивной технологии:
Платка с датчиком приобретена на торговой площадке eBay
:
Датчик подключается к шине I2C (контакт данных - SDA/SDI , контакт синхронизации - SCL/SCK ):
вывод датчика | VCC | GND | SDI | SCK |
вывод Arduino | 3V3 | GND | A4 | A5 |
Adafruit - файлы Adafruit_Sensor.h , Adafruit_BMP280.h , Adafruit_BMP280.cpp .
Единицы измерения атмосферного давления
Датчик через функцию readPressure
выдает значение атмосферного давления в паскалях. Основной единицей измерения атмосферного давления служит гектопаскаль
(гПа) (1 гПа = 100 Па), аналогом которого является внесистемная единица "миллибар
" (мбар) (1 мбар = 100Па = 1гПа). Для перевода между часто используемой внесистемной единицей измерения давления "миллиметр ртутного столба
" (мм рт. ст.) и гектопаскалями используются соотношения:
1гПа = 0,75006 мм рт. ст. ≈ 3/4 мм рт.ст.; 1 мм рт.ст. =1,3332 гПа ≈ 4/3 гПа.
Зависимость атмосферного давления от высоты над уровнем моря
Атмосферное давление может быть представлено как в абсолютной, так и в относительной форме.
Абсолютное давление
QFE
(англ. absolute pressure
) – это актуальное атмосферное давление, не учитывающее поправку над уровнем моря.
Атмосферное давление уменьшается примерно на 1 гПа при повышении высоты на 1 м:
Барометрическая формула позволяет определить коррекцию показаний барометра для получения относительного давления (в мм рт. ст.):
$\Delta P = 760 \cdot (1 - {1 \over {10^ { {0,0081350 \cdot H} \over {T + 0,00178308 \cdot H} }}})$ ,
где $T$ - средняя температура воздуха по шкале Ранкина, °Ra
, $H$ - высота над уровнем моря, футы.
Перевод градусов Цельсия в градусы Ранкина:
$^{\circ}Ra = {^{\circ}C \cdot 1,8} + 491,67$
Барометрическая формула используется при барометрическом нивелировании - определении высот (с погрешностью 0,1 - 0,5 %). В формуле не учитывается влажность воздуха и изменение ускорения свободного падения с высотой. Для небольших перепадов высоты эту экспоненциальную зависимость можно с достаточной точностью аппроксимировать линейной зависимостью.
Относительное давление
QNH
(англ. relative pressure
, Q-code Nautical Height
) – это атмосферное давление, учитывающее поправку к среднему уровню моря (англ. Mean Sea Level,
MSL
) (для ISA
и температуры 15 градусов Цельсия), и первоначально выставляется с учётом высоты, на которой находится метеостанция. Его можно узнать из данных метеослужбы, показаний откалиброванных приборов в публичных местах, аэропорту (из сводок METAR
), из Интернета.
Например, для расположенного рядом аэропорта Гомель (UMGG
) я могу посмотреть сводку фактической погоды METAR
на ru.allmetsat.com/metar-taf/russia.php?icao=UMGG :
UMGG 191800Z 16003MPS CAVOK M06/M15 Q1014 R28/CLRD// NOSIG
,
где Q1014
- давление QNH
на аэродроме равно 1014 гПа.
Историю сводок METAR
можно получить на aviationwxchartsarchive.com/product/metar .
За нормальное относительное давление воздуха QNH
принимается давление 760 мм рт. ст. или 1013,25 гПа (при температуре 0ºС, под широтой 45º Северного или Южного полушария).
Я выставил для барометра-анероида давление QNH
с помощью винта настройки чуткости:
Прогноз погоды
Анализ изменения давления позволяет строить прогноз погоды, причем его точность тем выше, чем более резко меняется давление. Например, старое эмпирическое правило мореплавателей гласит - падение давления на 10 гПа (7,5 мм рт. ст.) за период 8 часов говорит о приближении сильного ветра.
Откуда же возникает ветер? Воздух стекается к центру области низкого давления, возникает ветер - горизонтальное перемещение воздуха из областей высокого давления в области низкого давления (высокое атмосферное давление выдавливает воздушные массы в область низкого атмосферного давления). Если давление очень низкое, ветер может достигать силы шторма . При этом в области пониженного давления (барическая депрессия или циклон) теплый воздух поднимается вверх и формирует облака, которые часто приносят дождь или снег .
За направление ветра в метеорологии принимается направление, откуда дует ветер:
Это направление сводится к восьми румбам.
Для предсказания погоды на основе атмосферного давления и направления ветра часто используется алгоритм Zambretti .
Датчик влажности
Для определения относительной влажности воздуха я использую модуль DHT11
(приобретен на торговой площадке eBay
):
Датчик влажности DHT11 имеет три вывода - питание (+ ), данные (out ), земля (- ):
вывод датчика | + | out | - |
вывод Arduino | 5V | D10 | GND |
Для работы с датчиком я использую библиотеку от Adafruit - файлы DHT.h , DHT.cpp .
Влажность воздуха характеризует количество водяного пара, содержащегося в воздухе. Относительная влажность
показывает долю влаги в воздухе (в процентах) по отношению к максимальному возможному количеству при текущей температуре. Для измерения относительной влажности служит :
Для человека оптимальный интервал влажности воздуха - 40 ... 60 %.
Часы реального времени
В качестве часов реального времени я применил модуль RTC DS1302
(платка с часиками приобретена на торговой площадке eBay
):
Модуль DS1302 подключается к шине 3-Wire . Для использования этого модуля совместно с Arduino разработана библиотека iarduino_RTC (от iarduino.ru ).
Плата с модулем DS1302 имеет пять выводов, которые я соединил с выводами платы Arduino Nano :
вывод RTC | VCC | GND | RST | CLK | DAT |
вывод Arduino | 5V | GND | D2 | D1 | D0 |
Для сохранения верных показаний часов при отключенном питании в гнездо на плате я вставил батарейку CR2032 .
Точность моего часового модуля оказалась не слишком высокой - часы спешат примерно на одну минуту за четверо суток. Поэтому я сделал сброс минут на "ноль" и часа на ближайший при удержании кнопки, подключенной к выводу A0 Arduino, после включения питания метеостанции. После инициализации вывод A0 используется для передачи данных через последовательное соединение.
Передача данных на компьютер и работа по протоколу MQTT
Для передачи данных через последовательное соединение к Arduino подключается USB -UART преобразователь:
Вывод Arduino используется для передачи данных в формате 8N1 (8 бит данных, без бита четности, 1 стоп-бит) со скоростью 9600 бит/с. Данные передаются пакетами, причем длина пакета - 4 символа. Передача данных осуществляется в "bit-bang " режиме, без использования аппаратного последовательного порта Arduino .
Формат передаваемых данных:
Параметр | 1-й байт | 2-й байт | 3-й байт | 4-й байт |
наружная температура | o | пробел либо минус | десятки градусов либо пробел | единицы градусов |
комнатная температура | i | пробел либо минус | десятки градусов либо пробел | единицы градусов |
атмосферное давление | p | сотни мм р. ст. | десятки мм рт.ст. | единицы мм рт. с. |
относительная влажность | h | пробел | десятки процентов либо пробел | единицы процентов |
текущее время | десятки часов | единицы часов | десятки минут | единицы минут |
MQTT
Golang
приложение - клиент протокола MQTT
, отправляющую принятую от метеостанции информации на сервер (MQTT
-брокер) :
Сервис позволяет создать акаунт с бесплатным тарифным планом "" (ограничения: 10 соединений, 10 Кб/с):
Для мониторинга показаний метеостанции при этом можно использовать Android
-приложение :
Питание
Для питания метеостанции я использую зарядное устройство от старого мобильного телефона Motorola
, выдающее напряжение 5 В с током до 0,55 А и подключаемое к контактам 5V
(+) и GND
(-):
Также можно использовать для питания батарейку напряжением 9 В, подключаемую к контактам VIN
(+) и GND
(-).
Эксплуатация метеостанции
При запуске происходит инициализация и проверка датчиков.
При отсутствии датчика DS18x20 выдается ошибка "E1", при отсутствии датчика - ошибка "E3".
Затем запускается рабочий цикл метеостанции:
Видео работы моей метеостанции доступно на моем -канале: https://youtu.be/vVLbirO-FVU
Отображение температуры
При измерении температуры индицируется две цифры температуры и для отрицательной температуры знак "минус" (с символом градуса в крайнем правом разряде);
для наружной температуры знак градуса отображается вверху:
для комнатной температуры - внизу:
Отображение давления
При измерении давления индицируются три цифры давления в мм ртутного столба (с символом "P
" в крайнем правом разряде):
Если давление резко упало, то вместо символа "P
" в крайнем правом разряде отображается символ "L
", если резко выросло - то "H
". Критерий резкости изменения - 8 мм рт. ст. за 8 часов:
Так как моя метеостанция отображает абсолютное давление (QFE ), то показания оказываются несколько заниженными по сравнению со сведениями в сводке METAR (в которой приводится QNH ) (14 UTC 28 марта 2018 года):
Отношение давлений (по сведениями ATIS ) составило ${1015 \over 998} = 1,017$. Возвышение аэропорта Гомель (код ИКАО UMGG ) над уровнем моря составляет 143,6 м. Температура по данным ATIS составляла 1 °C .
Показания моей метеостанции практически совпали с абсолютным давлением QFE по сведениями ATIS !
Максимальное/минимальное давления (QFE ), зарегистрированные моей метеостанцией за все время наблюдений:
Отображение относительной влажности воздуха
Относительная влажность воздуха отображается в процентах (в двух правых разрядах отображается символ процента):
Отображение текущего времени
Текущее время отображается на индикаторе в формате "ЧЧ:ММ", причем разделительное двоеточие мигает раз в секунду:
Отображение фаз Луны и лунного дня
Первые два разряда индикатора отображают текущую лунную фазу, а следующие два - текущий лунный день:
У Луны выделяются восемь фаз (приведены английские и русские (синим цветом - неточные) названия):
На индикаторе фазы отображаются пиктограммами:
фаза | пиктограмма |
растущий серп (полумесяц) | |
убывающий серп (полумесяц) |
Передача данных на компьютер
Если соединить метеостанцию с USB
-UART
преобразователем (например, на базе микросхемы CP2102
), подключенным к USB
-порту компьютера, то можно с помощью терминальной программы наблюдать передаваемые метеостанцией данные:
Я разработал на языке программирования golang
программу, ведущую журнал метеонаблюдений и отправляющую данные в сервис , и их можно просматривать на Android
-смартфоне с помощью приложения :
По данным журнала метеонаблюдений можно, например, строить график изменения атмосферного давления:
пример графика с заметным минимумом давления
пример графика с незначительным ростом давления
Планируемые доработки:
В метеостанциях для измерения скорости ветра используется трехчашечный анемометр (1), а для определения направления ветра - флюгер (2):
Также для измерения скорости ветра используются термоанемометры с нитью накала
(англ. hot wire anemometer
). В качестве нагреваемой проволоки можно использовать вольфрамовую нить накала от лампочки с разбитым стеклом. В промышленно выпускаемых термоанемометрах датчик обычно располагается на телескопической трубке:
Принцип действия этого прибора заключается в том, что тепло отводится от нагревательного элемента вследствие конвекции воздушным потоком - ветром. При этом сопротивление нити накала определяется температурой нити. Закон изменения сопротивления нити накала $R_T$ от температуры $T$ имеет вид:
$R_T = R_0 \cdot (1 + {\alpha \cdot (T - T_0)})$ ,
где $R_0$ - сопротивление нити при температуре $T_0$, $\alpha$ - температурный коэффициент сопротивления (для вольфрама $\alpha = 4,5\cdot{10^{-3} {^{\circ}{C^{-1}}}}$).
С изменением скорости воздушного потока изменяется температура при неизменном токе накала (анемометр с постоянным током, англ. CCA ). Если температура нагревательного элемента поддерживается постоянной, то ток через элемента будет пропорционален скорости воздушного потока (анемометр с постоянной температурой, англ. CTA ).
Продолжение следует
Сегодня, чтобы собрать рабочий прототип базовой домашней метеостанции не нужно обладать сильными навыками программирования (в нашем случае и подавно) или схемотехники. Достаточно умения «гуглить» и толики желания сделать что-то своими руками. В этом материале я расскажу и покажу, как за вечер собрать домашнюю метеостанцию с подключением к сети. Базовый бюджет - всего 10 долларов.
Текст может содержать и наверняка содержит грамматические, орфографические, пунктуационные и другие виды ошибок, включая смысловые. Я всячески прошу читателей указывать на эти ошибки с помощью системы ORPHUS. Для этого достаточно выделить необходимый участок текста и нажать комбинацию клавиш CTRL+Enter.
Основой нашего будущего устройства является отладочная плата NodeMCU на базе модуля ESP8266. Я взял ее на Gearbest , но при желании вы можете поискать оную и на других площадках.
Для соединения модулей можно использовать шлейф с BLS-разъемами ($0.9) или беспаечную макетную плату с набором соединительных проводов ($3.74).
Несмотря на доступные 4 вывода, подключается наш датчик всего по 3 проводам: питание +5В (1 вывод), земля (4) и линия передачи данных (2). Питание для датчика берем либо с пина VUSB, либо с 3V, если первого на вашей плате не оказалось. Линию данных подключаем к порту GPIO14 (пин D5).
Напомню, что навыков программирования в нашем случае не нужно абсолютно никаких. Прошивку для модуля будем генерировать с помощью сайта WiFi-IoT.ru , автором которого является Максим Малкин, также известный по проекту домашней автоматизации homes-smart.ru . Для начала попросту регистрируемся на WIFi-IoT и подтверждаем почту.
Перед сборкой прошивки необходимо подготовить приобретенный модуль к работе и очистить его от возможного предустановленного китайского ПО. Для этого нам понадобится рабочий USB-microUSB кабель и компьютер или виртуальная машина с Windows. После регистрации на сайте вы попадете на англоязычную страницу «Getting started » с пояснениями по подготовке модуля к работе. Скачивайте файлы с ПО из первых двух пунктов инструкции.
Теоретически, после подключения модуля к компьютеру, Windows должна сама отыскать драйвера и установить их. На случай, если этого не произойдет, попробуйте идентифицировать на плате микросхему (отличается большим количеством «ножек») возле microUSB порта. Вероятнее всего это будут CP2102 или CH340 (драйвера к ним доступны по ссылкам).
После установки драйверов повторно подключаем нашу плату к компьютеру и запускаем программу NodeMCU Flasher, которую скачали ранее. В выпадающим списке выбираем присвоенный нашему устройству COM-порт. Скорее всего он будет один, в противном случае его номер можно уточнить в диспетчере устройств Windows. Во вкладке Config указываем расположение загруженного ранее blank-файла с расширением.bin.
Для NodeMCU параметры во вкладке Advanced необходимо выставить в соответствии с нижеприведенным скриншотом, после чего возвращаемся на стартовую страницу и нажимам кнопку Flash. О завершении процесса прошивки программа просигнализирует зеленой галочкой в левом нижнем углу.
После данных манипуляций модуль готов к загрузке прошивки, которую нам еще предстоит скомпоновать. Идем в конструктор и отмечаем необходимые нам пункты:
Нажимаем клавишу «Скомпилировать» внизу страницы и на выходе получаем готовое к установке ПО. Скачиваем одним файлом.
Далее повторяется процесс с прошивкой blank-файла, только вместо него выбираем уже загруженную на компьютер прошивку. После завершения процесса полностью перезагружаем модуль (отключаем и подключаем заново USB-кабель) и отправляемся в админ-панель роутера в поисках модуля. Так как мы не использовали предварительное присвоение статического IP, роутер должен сам выдать ему адрес. Напомню, что админ-панель обычно находится по адресу 192.168.0.1 или 192.168.1.1. Моему модулю роутер выдал адрес 192.168.1.142. После перехода по этому IP попадаем в веб-интерфейс нашей метеостанции. Предварительно необходимо будет ввести стандартный логин «esp8266» и пароль «0000» во всплывающем окне.
Теперь нужно указать модулю к какому порту подключен датчик, чтобы первый смог считывать его показания. Делается это на странице «Hardware». Соответствующей отметкой активируем первый датчик, а в строке GPIO указываем 14-й порт. Произойдет инициализация и на главной странице интерфейса появится отображение температуры и влажности. Ура!
Напоследок не забудьте на странице «Main» изменить пароль для входа в систему и часовой пояс для отображения времени. Также необходимо перевести модуль на статический IP-адрес (кнопка внизу страницы), чтобы после перезагрузки роутера ваша метеостанция не «потерялась». Если разбираетесь в настройках своего роутера, то лучше сделать бессрочную аренду IP-адреса для модуля, вместо установки статического IP.
Прототип готов, теперь перейдя по установленному IP-адресу можно посмотреть температуру и влажность в месте, где вы установили датчик.
Но просто смотреть температуру не интересно. Необходима визуализация данных, чтобы можно было проследить какие-то тенденции в изменении показаний. Для этого регистрируемся в сервисе метрик Thingspeak.com и в своем профиле создаем новый канал.
На открывшееся странице заполняем название канала, отмечаем первых два поля field и записываем туда значения «temp» (первое поле) и «humidity / temp» (второе).
Теперь снова займемся модулем. В конструкторе прошивок в дополнение ко всем предыдущим отметкам добавляем «Thingspeak.com», компилируем прошивку и прошиваем по аналогии. К сожалению, все настройки на модуле придётся произвести заново, т.к. OTA-обновления с сохранением оных доступны только в платной версии ПО (цена вопроса всего 100 рублей на модуль).
Возвращаемся на страницу созданного нами канала в сервисе Thingspeak.com и открываем вкладку «Api Keys». Нам понадобится код из поля «Write Api Key». Его нужно скопировать и вставить в соответствующее поле на странице «Servers» в веб-интерфейсе нашей метеостанции, предварительно не забыв установить отметку на «Enable Thingspeak.com send.».
Показания будут отправляться каждые 5 минут. А выглядеть это в итоге будет следующим образом:
Внешний вид графиков поддается редактированию, так что вы вольны творить! 🙂
Наверное кто-то спросит: «Почему итоговый результат отличается от представленного на приведенной выше и заглавной картинках?». Как минимум потому, что информации в этом материале новичкам в теме точно хватит на вечер-другой, а подключение дисплея и барометра потребуют наличия базовых навыков пайки и соответствующего оборудования. Если вы заинтересованы в дальнейшем совершенствовании метеостанции и моих заметках по этой теме, то обязательно напишите об этом в комментариях.
Данный проект разработан как автоматическая метеорологическая станция на солнечных батареях. Цель была конструирование небольшой, компактной метеорологической станции со следующими требованиями:
В процессе разработки удалось решить большинство этих требований. В настоящее время метеостанция имеет термометр, гигрометр, УФ-излучения и датчик давления. Являясь частью сети WeatherUnderground, метеорологическая станция помогает предсказывать местную погоду. Вот полная схема метеорологической станции, увеличить которую можно сохранив на своём ПК:
Метеостанции потребляет 1 миллиампер. Резервный аккумулятор тут всего лишь 1000 м/ч — литий-полимерная батарея. По сравнению со старыми метеостанциями где батареи герметичные свинцово-кислотные на 5 А/ч — это прогресс. Размеры печатной платы 100 мм х 75 мм и вот как она выглядела, когда всё было сделано на макетке, а следующее фото в готовом виде:
Блок на 433 МГц обеспечивает беспроводную связь для обмена данных. На данный момент устройство прикрепляется непосредственно на крыше, и выкладывает данные на WeatherUnderground каждые 11 минут.
Питание схемы выполнено с помощью регулятора напряжения MAX604. Этот регулятор был довольно дорогим ($7.00), но зато имел очень малое падение напряжения, что делает его очень эффективным. Тут использован этот регулятор, чтобы 3,7-4,2 вольтовую батарею Li-po батарею преобразовать в идеальные 3.3 В.
Для того чтобы зарядить аккумулятор, установлен TP4056 модуль. Этот модуль является очень эффективным, и он способен работать от 5 В входного питания. Ещё в наличии была небольшая, 5 В солнечная панель, которая в состоянии зарядить аккумулятор через TP4056 даже при недостаточном освещении.
Для того чтобы загрузить данные в сеть, пришлось писать специальное приложение для компьютера. Программное обеспечение было написано на C# с помощью Visual Studio. Скачать файлы проекта вы можете в .