Метеостанция для дома своими руками из подручных материалов

Обновлено: 20.05.2024

Просматривая разные проекты метеостанций, заметил одну тенденцию. Это или датчик температуры и влажности, чаще всего всеми любимый китайский DHT-11 или DHT-22, к которым добавляют либо датчик освещенности (Метеостанция на Arduino с визуализацией данных) либо давления (Ethernet метеостанция), или покупное-навороченное за много сотен долларов (Автоматическая метеостанция на даче)

Так как лично для меня — метеостанция без измерения направления и скорости ветра не метеостанция, а потратить порядка 700USD на по большому счету игрушку я не готов, то решено было сделать похожее на «дорогое-навороченное» но занедорого.

image

Электроника

image

  1. Датчик температуры — LM35. Включен с возможностью измерения отрицательных температур
  2. Куда уж без него — датчик влажности и температуры DHT11
  3. Датчик давления — HP03SA
  4. Датчик освещенности — фоторезистор LXD5516
  5. Датчик скорости ветра — обычный датчик Холла

Теперь о измерении направления ветра. Было много вариантов, от оптических энкодеров — заводских (дорого) или самодельных в виде нескольких пар светодиодов и фотодиодов, и диска с кодом Грея (сложно и много компонентов), до магнита и 4-8 герконов (слишком просто и неточно). В итоге выбор пал на AS5040 – магнитный энкодер. Так как особая точность не нужна, то аналоговый выход энкодера подключен к ADC микроконтроллера.

image

Микроконтроллер — PIC16F88. Выход — RS485 в внутреннюю сеть умного дома, о котором этот цикл статей. Вся электронная часть собрана на трех платах.

image

На этом с электроникой все, никаких нюансов, ничего интересного, все по даташитам. Переходим к механике.

Механика

К сожалению, напечатать корпус на 3D принтере возможности нет, а у заводских корпусов с водонепроницаемостью беда практически у всех. К тому же подшипники и все остальное — тела вращения, значит круглый корпус будет самым логичным выбором. Пришлось обратить взор на другие сферы — на водоснабжение. В качестве корпуса взята соединительная муфта «на 32» для канализации, и два патрубка для размещения в них подшипниковых узлов. Из латуни были выточены две заглушки, в которых запрессованы по два подшипника 626.

image

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

image

В то время как у основной массы продающихся — разные полюса на разных сторонах.

image

Но, оказалось, что нужные магниты находятся на шпинделях двигателей CD/DVD приводов.

image

В собранном виде подшипниковые узлы выглядят так

image

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

image

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

image

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

image

Собираем, подключаем и прикручиваем повыше

image

Интерфейс

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

image

Температура текущая, минимум, максимум, направление изменения. Давление, аналогично. Влажность. Ветер — направление и роза ветров. Цифры нужны скорее для отладки, показывают сколько времени в каком секторе был флюгер. Скорость ветра, время, показания датчика освещенности (без калибровки, то что измерил ADC) и датчик дождя. Все данные и обработка — ведутся в микроконтроллере метеостанции.

Второй тип интерфейса — на основе виджетов. Тут данных меньше, температура, влажность, давление, скорость и направление ветра

image

И куда уж без Android Wear — на часах

image

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



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

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

Весь дальнейший функционал был определен небольшим мозговым штурмом. Наличие подсветки, безусловно, плюс, но как быть ночью и вечером? Я решил установить ИК-сенсор, реагирующий на приближение. При подходе к прибору на комфортное расстояние включается подсветка, в иное время экран по умолчанию не горит. Использование ИК подтолкнуло к реализации управления прибором также по ИК-каналу — через пульт (поначалу были опасения о взаимных помехах, но они не подтвердились). Вполне естественно для такого устройства наличие часов.

В качестве основы для системы была выбрана Arduino, которую я только начинал осваивать. Саму Arduino я рассматриваю сейчас (да и тогда), как фреймворк — в первую очередь программный, позволяющий быстро строить необходимую систему, подключая при необходимости плагины-библиотеки. Да, мы можем писать и на чистом С/С++, но в большинстве рядовых задач это дает лишь незначительный прирост производительности, практически незаметный на фоне простоты и удобства загрузки скетчей в Arduino, а также обширнейшей коллекции библиотек для работы с различным железом. (Само собой, что есть особые задачи, но сейчас речь не о них).
В аппаратной же реализации я предпочитаю использовать синюю плату Arduino только на этапе прототипирования на «макетке», а по окончанию разработки устройств обычно проектирую одну-единственную плату с микроконтроллером и всем остальным. Так было и в тот раз.

Также я поинтересовался ценами на индивидуальное производство дисплеев. Минимальная цена за 1 экземпляр монохромного ЖК (как в типовой метеостанции) по ценам того времени была порядка 1 000 евро, для некоммерческого проекта в единичном экземпляре я счел такой ценник нецелесообразным.


В качестве ИК-датчика был выбран Sharp GP2Y0A02YK0F. Немаловажной характеристикой в моем случае являлась дальность обнаружения объектов, у этого датчика она равна 1.5 м, в то время как у многих других сенсоров она не превышает 30 см. Как показала себя эксплуатация, для небольшого экрана 16х2 полтора метра — действительно оптимальное расстояние.

В качестве датчика давления был выбран Bosch BMP085, работающий по I2C, влажности HH10D — с частотным выходом. Забегая вперед, скажу, что сейчас я бы ни в коем случае не использовал последний, а предпочел бы исключительно I2C-варианты, например HTU21D.

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

ИК-приемник был взят наиболее типовой, типа TSOP382. Пультом для метеостанции стал пульт от какого-то видеорегистратора. Зуммер (она же пищалка) — самый обычный пьезоизлучатель.


В качестве часов реального времени я выбрал DS1307, также работающую по I2C, кроме того, у меня была крошечная микросхема флеш-памяти 24AA256 на 64 Кб с I2C-интерфейсом. Ее я добавил в проект из чистого любопытства — попробовать работу с внешней памятью, записывая в нее данные о погодных условиях. Питание для проекта – внешнее, от блока питания. На входе стоит преобразователь/стабилизатор напряжения LM7805, сам узел питания очень похож на используемый в Arduino (хотя и не является клоном).

Разработку я выполнял итерациями, так намного проще выполнять отладку и знакомиться с новой для себя областью. На самом первом этапе с термометра DS18B20 считывались данные и выводились на ЖК-экран. На следующем — значения температуры должны были превращаться в RGB-код для подсветки.

Все дело в том, что итоговое значение относительной влажности рассчитывается по формуле, одним из аргументов которой является частота меандра на выходе датчика. Измерение частоты выполняется при помощи аппаратного таймера микроконтроллера. В 328, к сожалению, таких таймеров всего лишь три, и большая их часть уже задействована при ШИМе для подсветки дисплея. (Сейчас уже не помню все детали, возможно, что-то пропустил).

Из этой ситуации было несколько выходов. Если бы я разрабатывал устройство сегодня, я бы однозначно использовал только I2C-сенсоры. Другим вариантом было использовать более мощный микроконтроллер. Я же тогда выбрал третий вариант — установить отдельный микроконтроллер для работы со звуком (пищалка) и подсветкой дисплея (напомню, это был в первую очередь образовательный проект, и мне было интересно попробовать организовать взаимодействие между двумя МК). В него же перешла функция преобразования температуры в цвет, что облегчило на пару килобайт прошивку главного МК (в Atmega328 размер памяти программы составляет всего лишь 32Кб, моя прошивка в итоге вплотную приблизилась к этому пределу). Взаимодействие между МК было все так же организовано по I2C.

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

Пульт использовал какой-то свой проприетарный протокол. Я не стал заниматься его реверс-инжинирингом, мне было вполне достаточно шестнадцатеричного представления каждой кнопки, получаемого мной от библиотеки IRRemote. Для флеш-памяти я выбрал запись данных погоды каждые 10 минут, при длине записи в 16 байт этого хватает на 4 месяца.

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

После этого законченная функционально метеостанция пробыла в виде Arduino и макетных плат где-то с неделю. За это время тестов обнаружилась возможность зависания (вызванная нарушением герметичности уличного датчика температуры). Конструкцию датчика я переделал (сегодня я бы брал только фабричный, например, такой ), но и саму возможность зависаний хотелось исключить в принципе. Кроме того, я предположил, что через 49 дней непрерывной работы произойдет переполнение функции millis(), что, в связи с особенностями алгоритма прошивки, также приведет к зависанию. Вещь должна быть надежной! Поэтому последним штрихом в системе стала активация watchdog таймера, в итоге любое зависание гарантированно не продлится более чем 2 сек + 5 сек на reboot (да, в наш цифровой век даже метеостанции нужно время на загрузку.

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

Я начал с похода в ближайший радиомагазин и выбора корпуса. Из 20-30 различных вариантов мне приглянулся тот, что на рисунке в начале статьи – из-за минимума требуемой переделки, из-за возможности удобно закрепить снаружи корпуса дальномер, так, чтобы он сильно не выпирал, из-за хорошей вентиляции (а значит, более точных показаний температуры в комнате). Сегодня, наверное, я бы заказал печать на 3D-принтере и сделал что-то вот в этом стиле:


(Сложно найти похожую картинку, а в 3D -моделировании я не профи. Экран располагается в верхней части, все остальное в подставке). И, разумеется, никаких проводов — 433МГц для сенсоров и Wi-Fi для связи с ПК.

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

На Хабре очень любят тему изготовления печатных плат, поэтому здесь сделаю отступление. С ЛУТом я знаком, но у меня нет желания/возможности делать платы, в том числе связываться с химией (хлорное железо та еще вещь). Зато при универе есть небольшое опытное производство, где по очень умеренным ценам (~$3 за кв.дм. на то время) могут изготовить практически любую двустороннюю ПП. Технология – фоторезист, отверстия – от 0.6мм, минимальная ширина дорожки – вроде бы 0.2мм (точно не крупнее, сейчас уже не вспомню). К сожалению, никаких паяльных масок, металлизации переходных отверстий за такую цену ждать не приходится, но это все решаемо. В конце концов, для прототипирования (а платы готовят за день-два) и мелкосерийного производства можно обойтись и без масок (имхо; пайку подразумеваю вручную и крупную).

Впрочем, когда я делал заказ, то про металлизацию переходных отверстий я не подумал. Eagle благополучно использовал ножки элементов в качестве таковых, и обошелся всего лишь 2-3 отдельно стоящими соединениями между слоями. Человек на выдаче обратил на это внимание и любезно предложил тончайший провод для создания переходов в отверстиях для элементов (то есть, сначала через отверстие к верхней и нижней контактной площадке припаивается проводок, после чего в него уже вставляется сама ножка элемента). Я попробовал так действовать, но результаты и объем дополнительной работы не внушали оптимизма. Пришлось перетрассировать плату, создав зоны запрета для расположения via вблизи всех PTH-элементов. Тут автоматический трассировщик доводить работу до конца отказался, и мне пришлось разводить оставшиеся цепи вручную (желания и времени менять систему проектирования уже не было). Сами переходные отверстия в итоге делались точно по такой же технологии, но их количество я свел к минимуму. Паять вновь заказанную плату было несравненно проще.

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

А не хватает наклейки на переднюю панель (особенно после прорезки окна в ней). Самоклеющаяся бумага – отличная вещь для подобных задач. То, что получилось – на титульном фото, строго не судите:) После этого внешний вид устройства изменился радикально…

Вот так (вкратце) выглядел у меня путь разработки моего первого устройства. За кадром осталось много кода, много решений различных мелких возникавших по ходу задач. Главное, что я приобрел для себя – это опыт разработки, набитые «шишки», понимание принципов работы, плюс бонусом стала сама метеостанция. Уникальная и единственная в своем роде.


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



Рендер, реальная плата без паяльной маски. Не показан держатель литиевой батареи, пьезоизлучатель, DIN-разъем (питание, связь с ПК, датчики) и разная мелочевка. Кроме того, в реальном устройстве микроконтроллеры стоят в панельках.

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



После недолгого фантазирования был сформирован набор датчиков:

• температуры
• влажности
• давления
• направления и скорости ветра
• осадков
• ионизирующего излучения
• освещенности

Один из вариантов реализации — сборка из готовых модулей (процессорная плата + шилды) — мне не нравился из-за следующих минусов:

• отсутствие гибкости
• монструозность конструкции
• энергопотребление
• скучно

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

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

Исходя из перечня датчиков сформировалась следующая блок-схема:


Внешние датчики

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


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

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

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

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


Для измерения влажности и температуры используется датчик SHT15. Выбран как самый точный из доступных у нашего любимого поставщика компонентов. Этот датчик имеет похожий на I2C интерфейс, но не поддерживает адресацию, поэтому его пришлось подключить к отдельной шине I2C_2. Отличия в интерфейсе привели к программной реализации его опроса. Датчик SHT15 устанавливается снаружи устройства, это требует длинных проводов, и дополнительные устройства на той же шине могут привести к некорректной работе. Для правильного измерения влажности и температуры требуется защитить датчик от прямых солнечных лучей и осадков. Можно было соорудить защиту из подручных материалов, но т.к. планировалось продемонстрировать метеостанцию на выставке Радэл, требования к внешнему виду были строгими. В итоге мы остановились на защите от Vaisala, ее стоимость велика, но и выглядит она соответствующе.


Схема устройства

Был выбран микроконтроллер STM32F207VC. Конечно, с такой задачей справится микроконтроллер и попроще, но задача развлекательная, цена для единичного изделия не критична, да и к тому же данный микроконтроллер мы широко применяем в своих разработках – экономия времени при проектировании.

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

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

Датчик давления от ST LPS25. MEMS датчик с цифровым выходом.

Датчик освещенности OPT3001 со спектральной чувствительностью близкой к человеческому глазу. Не совсем подходящий для данной задачи, т.к. при измерении мощности солнечной радиации используются датчики с более широким спектральным диапазоном, с захватом ИК и УФ. Однако мне достаточно было определять освещенность в виде темно/светло.

Акселерометр LSM303D. Идея использовать его как детектор кражи при автономной работе. Из интересных функций — определение свободного падения и генерация прерывания для МК.

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

3 интерфейса UART задействованы следующим образом:

• Внешний проводной интерфейс. Установлен преобразователь UART-RS485 c гальванической развязкой. Применяется решение от Texas Instruments на базе микросхемы ISO3086T. Данная микросхема имеет в своем составе драйвер трансформатора, что позволяет питать выходную часть конвертера без дополнительного источника.

• GSM модуль SIM900. Можно было подобрать что-нибудь более современное с 3G и малопотребляющее, но этот был на полке и в библиотеке компонентов PCB CAD.

• GPS модуль для получения точного времени, выбран по тем же соображениям.

В качестве «чего бы еще поставить» на свободные пины, нашелся красивый графический OLED дисплей с разрешением 128*64. Да, конечно, дисплей внутри станции ни к чему, но через прозрачную крышку корпуса он смотрится очень красиво и полезен при установке для контроля правильности соединений.

Из-за любви к газоразрядным приборам в списке датчиков появился детектор ионизирующего излучения на счетчике Гейгера СБМ-20. Он детектирует гамма-излучение. Хотелось поставить СБМ-19, он имеет большую чувствительность, за счет большего объема камеры, но по этой же причине он не влез в приглянувшийся мне корпус.

Для работы счетчика Гейгера необходимо питание 400 вольт. Источник высокого напряжения выполнен по бестрансформаторный схеме на основе MC33063AD. Спорное решение, но хотелось попробовать из 5 вольт сделать 400 именно по этой схеме. Из особенностей — нужен высоковольтный транзистор с малым пороговым напряжением затвора, например ZVN0545.

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

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



Для работы с солнечной батареей используется специальная микросхема step-up преобразователя с встроенной функцией MPPT (отслеживание точки максимальной мощности). Этот способ используется для получения максимально возможной мощности на выходе фотомодулей.

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

После трассировки плата приобрела следующий вид:


Был выбран вместительный корпус с прозрачной передней крышкой. Очень кстати пришлась опция от производителя — элемент для выравнивания давления (на фото ниже находится слева от разъемов). Он обеспечивает равенство давлений внутри и снаружи корпуса, что необходимо для датчика давления, расположенного внутри, а также обеспечивает большую герметичность прибора при перепадах давления. Для подключения внешних датчиков, питания и связи используются промышленные разъемы M12. Разъем M12 обеспечивает высокую герметичность и надежное электрическое соединение. Для установки корпуса на стойку отлично подошел крепеж для водопроводных труб.


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

Было быстро написано встроенное ПО, для начала ограничились опросом всех датчиков, выводом параметров на дисплей и обменом данными по проводному интерфейсу RS-485. Для ПК была написана программа, реализующая обмен со станцией и вывод параметров.


Для подключения к компьютеру спроектировали переходник USB — RS485 с инжектором питания. В SoldWorks был спроектирован корпус, он выполнен из прозрачного листового пластика для возможности созерцания внутренностей. Изготовлен он в ближайшей рекламной мастерской при помощи лазерной резки. Получилось весьма неплохо, на мой взгляд.


В качестве источника применяется сетевой AC-DC преобразователь на 24В. Преобразователь USB — UART основан на всеми любимой FTDI FT232, UART- RS485 на таком же решении от Texas Instruments, что и в самой метеостанции.

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

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

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


Опыт эксплуатации

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


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

Так же проблемой было найти рабочий счетчик Гейгера. В запасах лежало две штуки СБМ-20, но оба оказались не рабочими. Сейчас в устройстве установлен не идентифицированный крошечный счетчик Гейгера, который можно увидеть на плате в левом нижнем углу.

На данном этапе все силы сосредоточены на доделке программного обеспечения и поднятии веб сервера для погодной станции. Было найдено открытое программное обеспечение WeeWX, оно умеет общаться с большинством метеостанций, писать их показания в базу данных, генерировать HTML страницы с графиками и текущими показаниями и т.д. Для WeeWX написан драйвер реализующий наш протокол обмена.

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

Выглядит эта конструкция следующим образом.


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

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

Отдельно хочу поблагодарить ana_lazareva за активное участие в создании метеостанции.

Соавтор(ы): Bess Ruff, MA. Бесс Руфф — аспирантка Университета штата Флорида, работает над получением степени PhD по географии. Получила степень магистра экологии и менеджмента в Калифорнийском университете в Санта-Барбаре в 2016 году. Проводила исследования для проектов по морскому пространственному планированию в Карибском море и обеспечивала научную поддержку в качестве дипломированного участника Группы устойчивого рыболовства.

Количество источников, использованных в этой статье: 7. Вы найдете их список внизу страницы.

Вам надоело ежедневно проверять прогноз погоды и вы хотите предсказывать ее самостоятельно? В этом вам помогут такие метеорологические приборы, как барометр, анемометр, пращевой психрометр, флюгер и дождемер. [1] X Источник информации Эти приборы можно сделать самостоятельно с помощью подручных средств и подробных инструкций.

Изображение с названием Make Weather Instruments Step 1

  • Если столбик ртути или стрелка барометра поднимаются, это означает, что погода будет ясной и сухой. Если же ртуть или стрелка опускаются, намечается пасмурная и дождливая погода. [3] X Источник информации

Изображение с названием Make Weather Instruments Step 2

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

Изображение с названием Make Weather Instruments Step 3

Накройте банку из-под кофе полиэтиленовой пленкой. Закрепите пленку резинкой по краям, чтобы она не выпускала воздух из банки.

Изображение с названием Make Weather Instruments Step 4

Положите соломинку горизонтально поверх банки. При этом один конец соломинки должен располагаться в центре банки, а второй выступать за ее край. [4] X Источник информации

Изображение с названием Make Weather Instruments Step 5

Сделайте на карточке метки высокого и низкого давления. Разделите карточку на две части и сверху напишите «высокое давление». В нижней части карточки напишите «низкое давление».

Изображение с названием Make Weather Instruments Step 6

Поставьте карточку рядом с банкой. Установите карточку вертикально рядом с банкой так, чтобы выступающий край соломинки совпадал с линией, разделяющей области высокого и низкого давления. После того как вы вынесете барометр на улицу, по положению соломинки вы сможете определить, растет или падает давление. Можно прикрепить карточку скотчем к камню или другому устойчивому предмету. [5] X Источник информации

Метеостанция

Метеостанция построена на Picaxe микроконтроллере от Revolution Education Ltd и состоит из двух основных частей: наружный блок, который посылает свои данные каждые 2 секунды, используя передатчик на частоте 433МГц. И внутренний блок, который отображает полученные данные на 20 х 4 ЖК-дисплее, а также атмосферное давление, которое измеряется локально во внутреннем блоке.

Структурная схема метеостанции

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

График станции

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

Уличные датчики

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

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

Измерение температуры, пожалуй, проще всего. Для это используется датчик DS18B20. Для измерения влажности был использован HIH-3610, выдающий напряжение 0.8 - 3.9В при влажности 0% до 100%

Подключение DS18B20 и HIH-3610

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

DS18B20 и HIH-3610 на плате

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

Датчик температуры обеспечивает точность ± 0.5 °C. Датчик влажности обеспечивает точность до ± 2%, так что это не очень важно, сколько знаков доступно после запятой!

Пример участка из программного обеспечения, работающего на ПК.

Температура

Влажность

Расчет показаний датчика влажности

Расчеты взяты из документации датчика Honeywell HIH-3610. На графике показывана стандартная зависимость при 0 °C.

График HIH-3610

Напряжение с датчика измеряется на входе АЦП (B.7) микроконтроллера Picaxe 18M2. В коде, показанном выше, значение, которое представлено в виде числа от 0 до 255 (т.е. 256 значений), хранится в переменной b1.

Наша схема питается от 5В, так что каждый шаг АЦП равен:
5/256 = 0.0195 В.

На графике видно начально значение АЦП 0.8 В:
0.8 / 0.0195 = 41

Взяв значения из графика, наклон графика (с учетом смещения) примерно:
Напряжение выхода / % относительной влажности или
(2.65 - 0.8) / 60 = 0.0308 В в% RH
(В документации 0.0306)

Рассчитаем кол-во шагов АЦП на 1% влажности:
(В на % RH) / (шаг АЦП)
0.0308 / 0.0195 = 1.57

% RH = значение с АЦП - смещение АЦП / (шаги АЦП в % RH), или
% RH = значение с АЦП - 41 / 1.57

Итоговая формула расчет для микроконтроллера будет выглядеть: % RH = значение с АЦП - 41 * 100/157

Защитный корпус

Изготовление корпуса

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

Изготовление корпуса

К целым частям прикрепите два деревянных бруска 20мм х 20мм сверху и с низу, и прикрутите к ним другие части.

Изготовление корпуса

Обрежьте одну из частей с одной целой стороной по размеру и приклейте ее к внутренней стороне одной из сторон. Убедитесь, что планки приклеены так, что образуют вместе "^" форму. Сделайте так со всеми сторонами.

Изготовление корпуса

Измеритель скорости и направления ветра

Механическая часть

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

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

12мм вставка из фанеры (marine ply) находится между трубой из ПВХ и диском из нержавеющей стали в верхнем конце трубы. Подшипник приклеен к диску из нержавеющей стали и удерживается нержавеющей пластиной.

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

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

Лопасти

Остальные три отверстия на фотографии предназначены для лопастей. Лопасти длиной 80 мм дают радиус поворота 95мм. Чашки 50 мм в диаметре. Для них я использовал обрезанные флаконы от одеколона, которые имеют почти сферическую форму. Я не уверен в их надёжности, поэтому сделал их легкозаменяемыми.

Электронная часть

Схема и плата

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

Анемометр

Калибровка анемометра

Анемометр - один из трех датчиков, который необходимо откалибровать (два других – счетчик осадков и датчик атмосферного давления)

Фотодиод обеспечивает два импульса за один оборот. В простой «последовательной» системе, к которой я стремился (все датчик опрашиваются поочередно), должен быть компромисс между длиной времени, затрачиваемого на опрос каждого датчика (в данном случае, подсчет импульсов) и отзывчивость системы в целом. В идеале, на полный цикла опроса всех датчиков должно уйти не более 2-3 секунд.

Калибровка анемометра

На фото выше проверка датчика при помощью мотора с регулируемыми оборотами.

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

Если бы мы имели 100% КПД и лопасти вертелись-бы со скоростью ветра, то:
Радиус ротора = 3.75"
Диаметр ротора = 7.5" = 0.625 фута
Длина окружности ротора = 1.9642 фута

1 фут/мин = 0.0113636 м/ч,
1.9642 фут/мин = 1 об = 0.02232 м/ч
1 м/ч = 1 / 0.02232 об

1 м/ч = 44.8 об
? м/ч = об / 44.8
= (об/мин * 60) / 44.8

Поскольку за поворот выходит два импульса
? м/ч = (импульсов в секунду * 30) / 44.8
= (импульсов в секунду) / 448

Датчик направления ветра - механическая часть

В датчике направления ветра, вместо алюминиевой пластины используется магнит, а вместо оптоэлектронного узла - специальная микросхема AS5040 (магнитный энкодер).

AS5040

На фото ниже показан 5мм магнит, установленный на торце центрального винта. Выравнивание магнита относительно микросхемы очень важно. Магнит должен быть точно по центру на высоте около 1мм над микросхемой. Как только все будет точно выровнено, датчик будет работать правильно.

Магнит

Датчик направления ветра - электронная часть

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


Оба метода имеют свои преимущества и недостатки. Основным преимуществом является то, что они оба просты в реализации. Недостатком является то, что они подлежат износу - особенно потенциометры. Альтернативой использованию герконов будет использовать датчика Холла для решения механического износа, но они по-прежнему ограничиваются 8 различными позициями . В идеале, я хотел бы попробовать что-то другое и в конечном счете решил о AS5040 - поворотном магнитном датчике IC. Хотя это устройство для поверхностного монтажа (которого я стараюсь избегать), оно имеет ряд преимуществ, которые делают ее использование привлекательным!

Он имеет несколько различных форматов вывода, два из которых наиболее подходит для нашей цели. Наилучшая точность достигается с помощью SSI интерфейса. AS5040 выдает импульсы длиной от 1 мкс при 0° и до 1024 мкс при 359,6°

Схема подключения AS5040

Печатная плата

Датчик в сборе

Проверка калибровки датчика направления ветра:

Калибровка датчика

Измеритель уровня осадков

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

Насколько это возможно, я сделал дождемер из пластика и нержавеющей стали, основание сделано из алюминия толщиной 3 мм для жесткости.

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

Дождемер

На данный момент, я оставил его с прозрачными стенками (потому что интересно наблюдать это работает!). Но я подозреваю, что нужно покрасить его белой краской, чтобы отражать тепло летом, во избежание испарения. Я не мог найти маленькую воронку, поэтому пришлось сделать её самому. Обратите внимание на проволоку внутри воронки и по центру желоба. Это поможет остановить поверхностное натяжение воды в воронке и помогает капать воде. Без проволоки, дождь имел бы тенденцию к "водовороту", и его траектория была-бы непредсказуемой

Воронка

Оптодатчики крупным планом:

Оптодатчики

Электронная часть дождемера

Схема дождемера

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

Использование отдельного чипа позволяет использовать его для создания достаточно точной 1-часовой задержки для того, чтобы считать ведра в час.

Калибровка

Picaxe 18м2 получает текущее количество ведерок в час и выводит его на дисплей и компьютер.

В качестве отправной точки, я использую следующие данные:
Воронка диаметров 120мм и емкость площадью 11,311мм2
1 мм дождя = 11,311мм3 или 11,3 мл.
Каждое ведро это 5,65 мл. Таким образом, 2 ведра 2 х 5,65 = 11,3 мл (или 1 мм) осадков. Одно ведро = 0,5 мм осадков.

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

Наружный блок

Схема внешнего блока

Для вышеприведенной схемы и схемы 08М Picaxe для датчика используется одна и та же топология печатной платы. Устройство питается от аккумулятора 12V 7Ah через стабилизатор 7805.
Я использовал набор RF Connect kit для беспроводной связи на 433 МГц. Комплект содержит пару специально запрограммированных PIC контроллеров. Комплект беспроводных модулей в ходе испытаний зарекомендовал себя как достаточно надежный.

Печатная плата

Печатная плата внешнего блока

На ПП установлен 08М Picaxe и 18м2. Каждый из них имеет свой собственный разъем программирования. Отдельные разъемы, каждый со своим +5 В, предназначены для каждого датчика - за исключением температуры и влажности.

Обратите внимание, что я нарисовал чертёж в Paintshop Pro поэтому я не могу гарантировать точность расстояния между выводами.

Печатная плата

Плата с датчиками

Наружный блок

Внутренний блок

Схема внутреннего блока

Во внутреннем блоке используетя 18м2 Picaxe, датчик давления и ЖК-дисплей. Также есть стабилизатор напряжения 5В.

Датчик давления

После нескольких неудачных попыток, я остановился на MPX4115A. Хотя другие датчики имеют диапазон измерения немного больше, они труднодоступны. Кроме того, другие датчики, как правило, работают от 3,3В и требуют дополнительный стабилизатор. MPX4115A выдает аналоговое напряжение от 3,79 и до 4,25В пропорционально давлению. Хотя это почти достаточное разрешение для обнаружения 1 мбар изменения давления, после некоторого обсуждения на форуме, я добавил АЦП MCP3422. Он может работать в 16-битном режиме (или выше) по сравнению с 10-битном режиме Picaxe. MCP3422 может быть связан (как в нашей схеме) в дифференциальный режим с аналоговым входом от датчика. Основным преимуществом является то, что это позволяет корректировать выход датчика, тем самым легко компенсировать ошибки MPX4115A и обеспечить простой способ калибровки датчика.

Схема регулятора напряжения

Сборка внутреннего блока

Плата внутреннего блока

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

Плата внутреннего блока

Плата немного больше, чем это необходимо, чтобы вписаться в пазы в алюминиевом корпусе.
Я сознательно сделал разъем для программирования немного "внутрь" от края платы, чтобы предотвратить его прикосновение к корпусу. Вырез для ЖК-дисплея производится высверливание и подгонкой до точных размеров.

Корпус

На фото показано всё уже установленное в корпус.

Штырьки на плате делают сложным её установку в корпус, поэтому мне пришлось отпаять их и припаять дисплей к плате проводами.

Фото метеостанции

Внешний блок - код Picaxe

Использовано памяти = 295 байт из 2048

Счетчик количества осадков - 08M код

Внутренний блок - код Picaxe

Использовано памяти = 764 байт из 2048

Программное обеспечение для ПК

Weather 1.1

Программное обеспечение, работающее на ПК было написано с использованием Borland Delphi 7. Оно довольно примитивно в его нынешнем виде, но это, по крайней мере, показывает связь Picaxe с компьютером.

Графики могут быть выбраны для показа в период 1 час или 12 часов. Графики можно прокручивать вперёд-назад с помощью мышки. Они могут быть сохранены. Для этого необходимо кликнуть по ним правой кнопкой мыши и указать имя и файл значения. Можно настроить ограниченный набор APRS данных, записываемых раз в минуту на одну строку файла APRS.TXT и которые сохраняются в той же папке, где находится Weather.exe. Отмечу, что температура в градусах по Фаренгейту и осадки в 1/100ths на дюйм.

Читайте также: