Проект " метеостанция в домашних условиях". Автоматическая метеостанция на готовых модулях Как сделать метеостанцию своими руками

Наблюдение за погодой - весьма увлекательное занятие. Я решил построить свою погодную станцию на базе популярного .

Прототип метеостанции выглядит так:

Функции моей метеостанции:

  • измерение и отображение комнатной и наружной температур;
  • отображение текущего времени (часы и минуты);
  • отображение текущих фазы Луны и лунного дня;
  • передача результатов измерений на компьютер через последовательное соединение;
  • передача результатов измерений по протоколу MQTT с помощью приложения на компьютере.


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 ).

Продолжение следует

Сегодня будет подробный рассказ о внутреннем устройстве метеостанции, которую включил в работу. От идеи до её технической реализации прошло более года, за это время пришлось решить массу ожидаемых и неожиданных проблем. Теперь обо всём по порядку...


Начнем с грабель.

Грабли №1 . Наверное кто-нить помнит что в начале прошлого года я радиомодули на базе чипа nRF24L01+ c усилителем RFX2401C и в дальнейшем собирал

Увы, данная конструкция работать не захотела. Не смотря на все попытки, мне так и не удалось обеспечить надёжную двухстороннюю связь радиомодулей на значительных расстояниях. Конструкция отняла довольно много сил и времени, но, в силу объективных причин, пришлось отказаться от этого варианта.

И тогда решил достать из закромов опытно-экспериментальный маршрутизатор TP Link MR3220 c системой OpenWRT на борту.

Принципиальная схема метеостанции несколько отличается от той, которую разрабатывал . Первое отличие - применение вместо Arduino Pro Mini платы Arduino Nano. Это позволило выполнять удалённую перепрошивку микроконтроллера, что очень удобно когда физический доступ на объект затруднён

Грабли №2 Я применил китайский клон Arduino Nano v.3.0, о котором подробнее рассказывал . Но возникла неожиданная проблема - при открытии маршрутизатором USB-порта, ардуинка стала перезагружаться. Все возможные варианты конфигурирования USB порта командой stty результата не принесли. С FT232RL такой проблемы не наблюдалось. Пришлось подключить RC-цепочку R1C1 на свободный порт GPIO7 маршрутизатора, это схемное решение позволило блокировать перезагрузку в нормальном режиме работы микроконтроллера. При необходимости перепрошивки нужно вручную включать GPIO7.


Конфигурирование порта

echo "7" > /sys/class/gpio/export

Конфигурируем GPIO7 как выход

echo out > /sys/class/gpio/gpio7/direction

Включить GPIO7

echo 1 > /sys/class/gpio/gpio7/value

Выключить GPIO7:

echo 0 > /sys/class/gpio/gpio7/value

Проверить состояние порта:

cat /sys/class/gpio/gpio7/value

Так как точность термодатчиков семейства DS1820 при отрицательных температурах оставалась под вопросом, для точного измерения температуры решил дополнительно использовать медный термометр сопротивления ТСМ-50М совместно с измерительным преобразователем Ш79. Разумеется, предварительно откалибровал систему с использованием поверенных образцовых приборов и добился погрешности измерения не более 0.2 градуса в диапазоне температур -50...+50 градусов Цельсия.

Ш79 это уже достаточно древний, весьма надёжный советский преобразователь, построенный по классической МДМ-схеме с унифицированным токовым выходом 0...5 мА или напряжением 0...10 В. В данном случае использовал токовый сигнал.

Несмотря на простую принципиальную схему, столкнулся с огромным объемом механической работы. Одно дело когда схема собрана за полчаса на макетной плате и совсем другое - когда устройству нужно придать законченный вид.

Печатная плата метеоконтроллера

Контроллер поместил в гермобокс

Маршрутизатор и метеоконтроллер закрепил на боковой стенке Ш79.

Вид сбоку

И вся эта система помещается в металлический ящик

Внутренности ящика

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

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

Конструкция в собранном виде

Выносные датчики температуры и влажности расположены на отдельной печатной плате

Для защиты от атмосферных воздействий плата покрыта лаком ХСЛ

Сверху кожух закрывает крышка

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

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

О конструкции анемометра более подробно рассказывал .

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

Все выносные датчики соединяются с контроллером посредством 5 парного магистрального телефонного кабеля ТППэп длиной 100 метров. На конце кабеля распаял слегка модернизированную соединительную коробку КРТН-10.

Грабли №3 Для защиты контроллера от атмосферной статики и возможных грозовых перенапряжений хотел поставить защитные диоды 1.5КЕ7.5 на порты D2, D3, D4. Увы, собственная ёмкость данных диодов не позволила пропускать цифровые данные. Поэтому пришлось ограничиться установкой диода D1 по питанию +5V и заземлением экранной оболочки магистрального кабеля.

К данной коробочке подключаются сами датчики

Измерительная ячейка установлена на относительно открытом участке местности на высоте 3-х метров от поверхности земли, это на метр выше положенного по правилам, но сделал это намеренно, т.к. в нашей местности есть вероятность появления высоких сугробов.

Анемометр укреплён на высоте 5 метров, по хорошему нужно ставить выше, но с этим есть конструктивные сложности. Пусть пока поработает так.

Программная часть особо не изменилась: на маршрутизаторе работает php-скрипт отсылки данных на сервер narodmon

который каждые 5 минут запускается планировщиком cron

Программа ардуинки ждёт приема команды от скрипта и формирует пакет данных. Предусмотрел возможность ручной коррекции атмосферного давления для его приведения к уровню моря, метеостанции или аэродрома.

P.S. А вообще использование Wi-Fi для передачи метеоданных не оптимально, было бы лучше использовать УКВ-диапазон, собственно, так и сделано на автоматических метеостанциях. Это повысит дальность связи и снизит требования к месту установки, точнее к наличию прямой радиовидимости.

Принципиальную схему и печатные платы можно скачать

Здравствуйте уважаемые друзья сайта "Радиосхемы "! Ещё давно хотел собрать домашнюю метеостанцию , изначально планировалось сделать автономную конструкцию с ЖК индикатором и т.д., но когда руки уже почти потянулись к текстолиту, у меня произошла ситуация, верней в одной из компаний в которой я тружусь, а именно, в серверной комнате сломался кондиционер. Последствия могли бы быть очень печальны, если бы мне не понадобилось заехать туда по другим вопросам, но слава богу всё обошлось. После этой ситуации понял, что идея метеостанции требует срочной реализации, только совсем уже в другом виде. Итак, обо всём по порядку. Представляемая конструкция - это USB примочка к ПК, которая передаёт данные с датчиков по средствам UART - USB с интервалом 2 секунды, соответственно, на ПК установлена программа, которая помимо обработки и отображения полученных данных передаёт их, при желании, на WEB сервер, зайдя на который можно отслеживать все показания в режиме реального времени и как вы понимаете, находясь в любой точке мира. Блок передаваемых данных выглядит следующим образом:

  • +data
  • humidity:хх
  • tempepature:хх
  • pressure:ххх
  • -data

Перемычки JP1, JP2, JP3 предназначены для «зануления» определённых значений, то есть при установленной перемычке JP1 значение влажности будет всегда 0, при установленной JP2 значение температуры всегда будет 0 и при JP3 значение давления всегда 0.

Схема самодельной метеостанции

Схема очень проста и по сути состоит из 4 основных компонентов. Это МК, датчик атмосферного давления + температуры, датчик влажности и USB - UART преобразователь.

Сразу скажу, что все компоненты покупал на всем известном электронном аукционе, причём покупал сразу в виде готовых модулей. Поясню почему готовыми модулями, во первых - цена датчика (или микросхемы) отдельно и цена модуля ничем практически не отличается, во вторых - готовый модуль уже имеет всю необходимую обвязку, такую как подтягивающие резисторы, стабилизаторы и прочее, в третьих - это намного упрощает конструкцию, а соответственно и её реализацию. Теперь немного о каждом модуле по отдельности.

Датчик давления и температуры

Потрясающий во всех отношениях датчик атмосферного давления и температуры BMP180.


Несмотря на свои крошечные размеры, этот датчик позволяет выдавать удивительно точные показания, как температуры, так и атмосферного давления. Сам датчик имеет размеры ~3х3 мм, готовый модуль ~10х13 мм, питание датчика 3.3 вольта, поэтому на платке имеется стабилизатор. Интерфейс I2C .

DHT11 является датчиком влажности + температуры, довольно хорош в своей ценовой категории. Но есть небольшой минус, это - точность. Если погрешность по влажности вполне в пределах нормы, то с показаниями температуры всё не так хорошо, но нам и не нужны его данные по температуре т.к. температуру будем брать с BMP180. Штыри на модуле перепаяны на прямые, изначально модуль идёт с угловыми штырьками и к тому же они припаяны с другой стороны.

USB - UART преобразователь

Вообще микросхем и готовых USB - UART преобразователей огромное количество, я остановился на этом. Данный модуль работает на микросхеме FT232RL, а вот изготовитель этой микросхемы далеко не FTDI как заявлено на корпусе этой микросхемы, проще говоря, используемая микросхема - это китайская подделка. Но в этом нет ничего страшного, за исключением того, что компания FTDI решила бороться с подделками очень хитрым способом, они выпустили драйвера, которые затирают ID микросхемы на не оригинальных чипах, после чего подделка перестаёт работать. Для того чтобы этого не случилось - достаточно использовать драйвера НЕ ВЫШЕ версии 2.08.14 и тогда никаких проблем не будет, разницы в работе не оригинала вы не заметите. Если всё же это случилось и устройство перестало правильно определяться в диспетчере устройств, то ничего не потеряно, в любом поисковике вы найдёте решение этой проблемы за 5 минут, на этом я не буду останавливаться.

Для своих целей, мне пришлось немного допилить модуль, перепаяв на нём штырьки, с угловых на прямые, и с прямых на угловые.

Сделать это не повредив ПП достаточно просто, сначала необходимо тонкими кусачками разделить пластиковые втулочки между штырями, после чего выпаять по отдельности каждый штырь вместе с втулкой, затем убрав лишний припой - впаять уже нужные штыри с нужной стороны. Прошивать МК нужно вот с такими фюзами:

После того, как все модули будут допилены и готовы, можно приступать к сборке. Печатная плата в моём варианте имеет итоговый размер 45 х 58 мм, делал фоторезистивным способом, хотя в виду простоты - лут здесь тоже актуален. Все файлы для платы и прошивки скачайте в общем архиве .

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

Сборка метеостанции

Сборка прибора заняла пол часа, после чего был уже вполне работоспособный вариант устройства.

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

Следующий этап - это нанесение лака, для этого использую обычный, автомобильный аэрозольный лак, который используют для тонирования фар и прочего, стоит такой баллон около 150 рублей, продаётся в любом автомагазине. После высыхания получаю вот такой результат.

Всё, все этапы сборки метеостанции закончены, можно отклеивать бумагу.

А вот и готовый, полностью рабочий вариант устройства.

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

Программа

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

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

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

По желанию можете указать вариант запуска программы (свёрнутый/ не свёрнутый режим). Есть ещё один раздел - это логин, пароль, частота отправки и галочка разрешить отправку данных на WEB сервер. Здесь немного подробней. Эта настройка, при желании, разрешает отправку значений температуры, влажности и давления на глобальный WEB сервер meteolk.ru - это ресурс созданный специально под этот проект, по сути это просто личный кабинет, где содержится вся информация полученная метеостанцией и ничего кроме этого. Для того чтобы можно было пользоваться этим ресурсом необходимо сначала зарегистрироваться для возможности дальнейшей идентификации пользователя, для этого просто заходите на сайт и нажимаете «Регистрация ». Так сказать пользуйтесь на здоровье, мне не жалко. На странице регистрации указываете имя, логин и пароль.

Всё, на этом регистрация закончена, и учётные данные можно указывать в программе. Это можно сделать и позже, перейдя в настройки через «Меню», не обязательно при первом запуске. После того как будут произведены все настройки, нажимаете сохранить и в окне запуска программы нажимаете кнопку «повторить попытку ». Если всё нормально, то программа запуститься и появится основное окно, после этого создадутся файлы настроек и при последующих запусках, никаких настроек производить уже будет не нужно.

В меню «дополнительно » есть опция «считать данные с контроллера », здесь поясню. Каждые пол часа в оперативку микроконтроллера записываются значения температуры, влажности и давления, всего таких записей может быть 100, если получилось так, что программа не была запущена и вам нужно посмотреть статистику, то при помощи этой опции можно посмотреть данные, это 2-е суток, если таковые есть конечно. При помощи «стереть данные МК» вся собранная ранее статистика и хранящаяся в оперативке - затирается. Помимо текущих, отображаемых значений, есть ещё значения «макс.» и «мин.», это максимальные и минимальные значения, которые были зарегистрированы за время работы программы.
С программой всё, на остальных менюшках не буду останавливаться, думаю, что и так всё интуитивно понятно. Вернусь немного к личному кабинету. После регистрации, можно зайти под своей записью, кстати, можно также зайти под логином «test » и паролем «test », это ради ознакомления. Если у вас есть данные, то вы увидите вот такое окно:

При желании, данные можно посмотреть в графическом варианте, в виде графиков.

Вот и всё. Надеюсь на то, что мой проект вам понравиться и пригодится. Пока-пока! До новых встреч на сайте. Автор Виталий Анисимов . г. Калуга .

Обсудить статью ДОМАШНЯЯ USB МЕТЕОСТАНЦИЯ

Вспомнил на досуге о простой самоделке, которую встречал в журнале «Юный натуралист» и делал в восьмидесятых годах прошлого века.

С ее помощью было интересно предсказывать погоду, наблюдать на последующий день за точностью сделанных показаний.

Конечно, сравнивать эту конструкцию с метрологическими приборами не стоит, но в качестве грубого прогноза она вполне работоспособна.

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

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


Как работает самодельный барометр

Для предсказания погоды используется закрытое стеклом лампочки пространство с небольшим отверстием вверху. В эту емкость залита чистая вода. На нее воздействуют:

  • атмосферное давление через прорезь в стекле;
  • влажность воздуха;
  • температура окружающей среды.

Под комплексным действием этих факторов происходит испарение поверхностного слоя с конденсацией паров внутри стеклянного баллона лампочки без выхода через отверстие. По характеру образовавшегося конденсата, его форме и плотности, судят о предстоящей погоде, предсказывают состояние атмосферы на ближайшие 12÷24 часа или чуть дольше.

Необходимые инструменты

В обязательном порядке потребуется:

  • перегоревшая или целая лампа накаливания;
  • защитные перчатки;
  • надфиль или с алмазным сверлом;
  • один кристаллик марганцовки либо обломок от грифеля из химического карандаша - не всегда.

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

Технология изготовления

На руки надевают защитные перчатки. Они будут предохранять кожу от порезов и попадания мелких осколков стекла. Лампочка хрупкая, под случайным излишнем усилии она может развалиться на мелкие осколки. Работать с ней следует очень аккуратно.

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

Способы создания отверстия

Работа надфилем

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

Величину усилия необходимо контролировать: очень легко проточить большую щель или повредить хрупкое стекло. Работу выполняйте над емкостью, в которую будут падать стеклянные опилки. Это обезопасит уборку рабочего места.

Сверление отверстия в стекле

Этот метод позволяет сделать строго калиброванное отверстие круглой формы. Однако он требует практических навыков обработки стекол сверлами мелких диаметров. Работать можно дрелью или шуруповертом.

Обычное сверло для обработки металла должно быть хорошо заточено, а место сверления отмечено и очищено. Лампочку необходимо надежно зафиксировать, а дрель использовать на средних оборотах и постепенно снижать их величину. Отклонение сверла от вертикали, как и нажим, не допускается. Даже при выполнении этих требований высока вероятность повреждения колбы.

Поэтому для сверления отверстия подбирают специальные сверла с алмазным напылением наконечника. Работают ими очень осторожно.

Наполнение колбы водой

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

Самодельный барометр из лампочки в принципе готов к эксплуатации. Но для удобства использования его можно:

  • подкрасить воду прибора, например, раствором марганцовки. Конденсат станет лучше виден;
  • снабдить устройством подвешивания или подставкой.

О креплении самодельного барометра

Крепежный узел прибора изготавливают для эксплуатации в одном из двух вариантах:

  1. подвешивании на ручку или крючок;
  2. стационарной установке на подоконнике.

Петля для подвешивания

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

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

Подставка

Можно использовать подходящий по диаметру колпачок от бутылочки с косметикой или моющих средств.

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

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

Как расшифровать информацию и пользоваться прибором

Наблюдение за конденсатом

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

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

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

Особенности эксплуатации

Пользоваться самодельным барометром придется только в отапливаемом помещении. При отрицательной температуре вода и конденсат просто замерзнут. Располагают его на окне либо подоконнике. Желательно, чтобы оно было установлено с северной стороны здания. Считается, что так обеспечиваются более точные показания.

Объяснить это можно только тем, что такое окно меньше подвергается нагреву солнечными лучами, работает в более холодной части дома, точнее моделирует состояние погоды на улице.

О точности показаний

Наш организм, как и все живое, реагирует на изменения погоды. Особенное влияние на него оказывают давление и влажность воздуха. Поскольку они сменяются не мгновенно, а постепенно, то возникает возможность ее прогнозирования.

Для их отслеживания метеорологи используют:


Мы же значительно искажаем все эти процессы.

Исторически сложилось так, что под термином «барометр» люди стали понимать прибор, который позволяет предсказывать погоду по изменению атмосферного давления. Этому способствовало нанесение на анероидной шкале таких обозначений, как «Ясно», «Сухо», «Дождь» и других природных явлений.

Это довольно упрощенное представление о прогнозе метеорологических событий, но даже этот уровень наш самодельный прибор не сможет полностью охватить:

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

К тому же в последнее время в быту стали массово использоваться . А они тоже регулируют влажность в помещениях, влияют на работу самодельного барометра.

Однако даже с учетом этих условий в летнее время можно уверенно предсказывать поведение погоды с точностью до 70%. Зимой, благодаря действию отопления, этот показатель снижается, но не критично.

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

Этим не стоит пренебрегать, ведь изготовление самодельного барометра не составляет труда, занимает порядка десятка минут. Дети оценят вашу работу, получив обучающую игрушку-базу в виде развивающей внимание домашней метеостанции.

Сейчас предлагаю посмотреть видеоролик владельца MrSam0delkin «Барометр из лампочки».

Из завалявшихся деталей решил сделать небольшую метеостанцию. На сборку и написание прошивки для контроллера ушло два дня выходных. Еще пара дней ушла на написание, тестирование и отладку остального программного обеспечения. Текущая версия метеостанции измеряет температуру, влажность, давление, имеется связь с компьютером через USB порт от него же и питается, резервное питание от батареи 9 В. Данные отображает на LCD. Еще есть часы. Поскольку, не нашлось подходящего кварца (а покупать принципиально не хотел), сделал синхронизацию времени с компьютером.

Этот проект абсолютно не коммерческий, поэтому схему метеостанции, прошивку контроллера и все необходимое программное обеспечение можно скачать . Исходный код прошивки .

Станция собрана на макетной плате, поэтому чертеж печатной платы и не просите.

Использовались следующие основные компоненты:
ATMega8 - контроллер
MPX4115A - датчик давления
HIH-4000 - датчик влажности
DS18B20 - датчик температуры
WH1602A - дисплей

Я использовал LCD на PLED технологии, можно обыкновенные типа WH1602A. Датчики температуры и влажности вынесены на улицу в защитную коробочку.

Подключаем к компьютеру

Подключение к порту USB требует отдельного описания.

В принципе, можно было подключить и к COM порту, так проще. Но у меня он занят. Выбора нет - USB. Поскольку станция собиралась с чего было, то в ход пошел завалявшийся огрызок кабеля CA-42 для подключения мобильного телефона к компьютеру. Разъем к мобильному телефону ушел в дело, а тот конец, который подключается к компьютеру остался. В самом этом разъеме уже имеется микросхема для USB порта, а на выходе - стандартный UART, тот, который используется в мобильных телефонах и самый раз для контроллера, поэтому провода запаиваем напрямую, без каких либо преобразователей сигнала. После установки драйверов для этого кабеля, появляется виртуальный COM порт. Далее можем любой программой подключиться к нашей метеостанции, например HyperTerminal . Распайку кабеля специально не привожу, поскольку кабеля разные, могут отличатся. Использовать нужно 3 провода TX, RX, GND. Запитать устройство от кабеля, скорее всего, не получится. Я взял не нужный USB разъем и запитал с другого USB порта.

Для того чтобы можно было из командной строки отправлять команды и принимать ответ от метеостанции, была написана программа getfromcom.exe.

Метеостанция понимает только две команды:

AGOV - Возвращает текущие показания датчиков.

SETTIME [время в секундах с начала суток] - команда устанавливает время в метеостанции

Для получения данных выполняем getfromcom.exe COM6 AGOV

Для установки времени выполняем getfromcom.exe COM6 "SETTIME 72565"

COM6 - порт.
72565 - количество секунд с начала суток.

Автоматизация процесса

Теперь можно любой программой считать, обработать данные, отправить куда надо, синхронизировать время метеостанции. Я это сделал с помощью скриптового языка PHP. Во первых это быстро и всегда можно оперативно подправить скрипт и не искать куда делся исходный код. Во вторых, я постоянно работаю с PHP. Но Вы можете написать свою программу на любом удобном для Вас языке. Разумеется, для работы PHP придется его скачать (http://www.php.net/downloads.php) и установить на компьютере. Под Windows это делается элементарно. Скрипт getfromcom.php запускается из файла get_data.bat опрашивает метеостанцию, обрабатывает данные и отправляет на HTTP-сервер скрипту get_data.php. О скриптах на сервере поговорим чуть позже.

Спящий режим рабочего компьютера

Мой компьютер стоит в спящем режиме. Просыпается каждые 3 часа, опрашивает метеостанцию, отправляет данные на сервер и снова засыпает (можно и не выключать - кому как удобнее.). Делается это так: В планировщике задач указывается пакетный файл get_data.bat для выполнения и устанавливается опция "разбудить компьютер для выполнения этого задания".

Компьютер отправляется в спячку командой fShutdown.exe /hibernate
Теперь по указанному времени компьютер проснется и выполнит get_data.bat

Особенности get_data.bat

Команды:

devcon.exe enable PCIVEN_10EC
ping 127.0.0.1
RASPHONE -d Setilite

Запускают сетевое подключение и подымают VPN к моему провайдеру Интернет.

ping 127.0.0.1 - так я сделал необходимую паузу.

Соответственно, отключаем командами:

RASPHONE -h Setilite
devcon.exe disable PCIVEN_10EC

У Вас будет все по другому, поэтому в файле эти строки закомментированы.

После выхода из спячки компьютер начинал думать, что COM порт занят другой программой. Пришлось виртуальный COM порт перезагружать командой devcon.exe restart "USBVid_6547&PID_0232"
У Вас будет другой ID устройства.

Серверные скрипты:

Теперь о скриптах на сервере. Скрипт, который принимает данные: get_data.php
Скрипт сохраняет данные в файл pogoda.log. Вообще то, данные отправляются и в базу данных MySQL. Но для простоты, рассмотрим работу только с файлом. Принимая данные, скрипт проверяет подходит ли IP адрес отправителя. Разрешенные адреса перечислены в файле ip_allow.lst От "чужого" отправителя данные не принимаются.