Метеостанция своими руками

Добавил пользователь Дмитрий К.
Обновлено: 18.09.2024

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

Для создания метеостанции было использовано следующее "железо":

1. Мозговой центр с WiFi - ESP8266 CP2102

3. Модуль точных часов - DS3231

4. Сенсор Температуры, влажности и атмосферного давления - BME280

Ссылка на файлы прошивки и разводки платы в Sprint Layout: ссылка

Ссылка на видео с разъяснениями к прошивке:

Комплект всех компонентов выглядит так:

Для прошивки контроллера понадобится среда разработки Arduino IDE и прошивка. Ссылка на мою прошивку в конце статьи. Также в размещенных материалах имеется моя разводка платы для метеостанции.

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

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

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

На создание этого проекта меня подтолкнул "старший" коллега по работе, однажды высказав идею об удалённом мониторинге уличной температуры на строящейся даче, в том числе, и для последующей автоматизации газового котла. А поскольку у него на даче периодически выключают свет, то система должна работать полностью автономно. Идея родилась в ноябре 2018 года, и за два года выросла в целый проект со всеми вытекающими.

Список необходимых технических характеристик:

  • Измерение "заборной" температуры и влажности.
  • Контроль напряжения, приходящего с солнечных панелей.
  • Контроль зарядки и разрядки аккумулятора.
  • Построение графиков.
  • Возможно: анемометр и датчик дождя.

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

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

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

Версия 2.0

Немного расстроившись, принялся за обдумывание новой редакции. Ну а поскольку, на тот момент, ничего нового в голову не пришло, то просто добавил датчик освещённости и датчик контроля качества "забортного воздуха". Мы же все помним как горели торфяники в Подмосковье летом 2010 года, и страшные лесные пожары в Сибири летом 2019 года.


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

Собрать контроллер мало, нужно ещё установить его по месту службы. А для этого необходимо спроектировать и напечатать на 3D принтере недостающие компоненты. После некоторого времени проектирования в Fusinon 360, мне наконец-то удалось собрать проект в одно целое.


Далее осталось за малым - построить графики. На стареньком компьютере был поднят сервер MajorDoMo, а также брокер MQTT. Прошивку для ESP8266 я использовал от Tasmota.


По прошествии некоторого времени, второй вариант контроллера был собран и благополучно установлен на моей лоджии для тестирования. Результат меня, на тот момент времени, удовлетворил, и в таком виде контроллер прожил до марта 2020 года. Также были опубликованы фотографии в чате поддержки Tasmota. И неожиданно для меня, мой проект был опубликован в WIKI тасмоты, в разделе Projects and Tutorials.

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


Ну а поскольку я ленив для ЛУТ, то нарисовал и заказал плату в Еasyeda, попутно добавив третий контролер INA219, для контроля нагрузки.


Понимая, что мелкие SMD компоненты с моим зрением паять не получится, заказал себе электронный микроскоп.

По прошествии двух недель, заказанные на заводе платы пришли и я сел за пайку. Микроскоп привезли за 3 дня.

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


Схема проекта претерпела некоторые изменения:

  • х3 INA219.
  • x2 I2C sensor.
  • x2 UART sensor.
  • x1 USB load (5v/0.8A).
  • Input power 5v/12v.

Версия 3.1

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


И неожиданно для меня, мой проект был опять опубликован в WIKI тасмоты, в разделе Projects and Tutorials.

В "отместку", я выложил эту версию проекта в открытый доступ на Github, вместе с исходниками с Еasyeda и gerber файлами, для всех желающих. С оформлением, конечно, пришлось повозиться, ну да ничего. Тут, как говорится, добро пожаловать в "добрый" мир open source hardware, я вас предупредил!

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

OLED экран не понравился мне с самого начала, а значит, его следует заменить на что-то более изящное и мало потребляющее. Выбор пал на 2,9 дюймовый дисплей E-Ink (296х128, SPI), который также поддерживается прошивкой Tasmota.


Поскольку моя лоджия не отапливаемая, хоть и застеклённая, зимой на ней температура опускается до -15°C , а рабочая температура у E-Ink в диапазоне 0~50°C (согласно руководству пользователя), то возникла потребность отключать питание у экрана при температуре ниже 5°C, и без участия ESP8266 т.к. он будет в режиме сна с диапазоном 15 минут (для снижения энергопотребления).

Вишенка на торте (шина I2C)

Параллельно с описываемым проектом, мне выпало подключить датчики по шине I2C, необычность была в том, что требовалось два луча на 6 и 2 метра. А поскольку шина I2C имеет ограничение по ёмкости (не более 400 пФ), а не по длине (как я ранее думал), то применив ретрансляторы PCA9515A и витую пару (UTP 5e), мне удалось успешно решить задачу.

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

Итоги

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

  • Замена контроллера солнечных панелей на этот, у него есть возможность подключать нагрузку на 12V/8A и 5V/5A.
  • Последующая установка свинцового аккумулятора на 12 вольт (от охранной сигнализации 12V/7Ah).
  • Замена солнечных панелей, будут две на 18 вольт, размеры панелей оставлю прежние.

Обновления нужны для автономного питания рулонной шторы (на лоджии) из этого моего проекта.

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

Все 3D модели, если кто-то захочет их повторить, вместе с исходниками в формате Fusion 360, мной выложены на Thingiverse, найти их там можно просто набрав в поиске мой ник TrDA.

Предлагается методика изготовления погодной станции для дома или дачи. За основу возьмём плату Ардуино и набор сенсоров: температуры, влажности, давления и датчик углекислого газа. Данные будут выводиться на LCD дисплей, а питание осуществляться от блока питания для мобильного телефона или батареек.

    или иная совместимая плата; или другой;
  • датчик давления BMP085 или более современный BMP180, или иной; (опционально); или другой; ;
  • корпус для погодной станции;
  • кусок фольгированного стеклотекстолита;
  • винты для крепления компонентов;
  • персональный компьютер со средой разработки Arduino IDE.
  • соединительные провода;
  • разъём для подачи питания;
  • паяльник.

Инструкция по созданию домашней метеостанции на Arduino

1 Подбор корпусадля будущей метеостанции

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

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

Корпус для домашней самодельной метеостанции

Корпус для самодельной домашней метеостанции

2 Используемые компоненты

  • LCD-дисплей 1602 использует 6 пинов Arduino + 4 на питание (подсветка и знакосинтезатор).
  • Датчик температуры и влажности DHT11 подключается к любому цифровому пину. Для чтения значений будем использовать библиотеку DHT11.
  • Датчик давления BMP085 подключается по интерфейсу I2C к двум пинам Arduino: SDA – к аналоговому пину A4 и SCL – к аналоговому пину A5. Обратим внимание, что для питания на датчик подаётся напряжение +3,3 В.
  • Датчик углекислого газа MQ135 подключается к одному из аналоговых пинов.

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

Используя же все 3 датчика, у нас будут задействованы 7 цифровых и 3 аналоговых пина Ардуино, не считая питания, естественно.

3 Схема соединениякомпонентов метеостанции

Схема метеостанции показана на рисунке. Тут всё ясно.

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

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

4 Скетч метеостанции

Напишем скетч для Ардуино. Код по возможности снабжён подробными комментариями.

Скетч для метеостанции на Arduino (разворачивается)

Загрузим этот скетч в память контроллера платы Ардуино.

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

Печатная плата для домашней метеостанции

Печатная плата для домашней метеостанции

С помощью пайки установим датчики давления и газов.

Для установки платы Arduino Nano удобно использовать специальные адаптеры или гнёзда с шагом 2,54. Но за неимением этих деталей и из-за экономии пространства внутри корпуса, я установлю Ардуино также пайкой.

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

Предусмотрим места для подводки внешнего питания к нашей самодельной плате. Я буду использовать обычное зарядное устройство на 5 В от старого сломанного роутера. Плюс 5 вольт от зарядного устройства будут подаваться на пин Vin платы Arduino.

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

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

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

Установим печатную плату внутри корпуса и закрепим винтами. Подключим LCD-экран к ножкам Arduino согласно схеме.

Аккуратно закрываем корпус метеостанции.

6 Включение метеостанции

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

Домашняя метеостанция в работе

Домашняя метеостанция в работе

Выводы

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

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

Внешний вид станции показан на рисунках (Рисунок 1 и Рисунок 2).


Рисунок 1.
Внешний вид станции


Рисунок 2.
Внешний вид станции (обратная сторона)

Видео с демонстрацией работы станции представлено ниже:


Электрическая схема.

Схема электрическая принципиальная представлена на рисунке 3.

highslide.js

Рисунок 3.
Схема электрическая принципиальная.

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

При выборе сетевого источника питания следует учитывать, что пиковый ток потребления станции (во время измерения и при включенном дисплее) не превышает 100мА. Поэтому можно использовать практически любое зарядное устройство.

Печатные платы.

Печатные платы разработаны в программе Dip Trace. Они выполнены на одностороннем фольгированном стеклотекстолите. Расположение деталей на основной печатной плате показано на рисунке (Рисунок 4). На рисунке перемычки со стороны монтажа выделены цветными ломаными линиями. Печатная плата со стороны дорожек показана на рисунке (Рисунок 5).

highslide.js

Рисунок 4.
Печатная плата (вид со стороны радиодеталей).

highslide.js

Рисунок 5.
Печатная плата (вид снизу, зеркальное отображение).

Кнопки и переключатели пульта управления станцией установлены на отдельной печатной плате (Рисунок 6 и Рисунок 7).


Рисунок 6.
Печатная плата Пульта управления (вид сверху).


Рисунок 7.
Печатная плата Пульта управления (вид со стороны дорожек).

Гнездо для подключения USB кабеля установлено на отдельной плате, купленной на AliExpress (Рисунок 8).


Рисунок 8.
Плата с гнездом USB.

Монтаж.

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

Размещение радиодеталей на печатной плате показан на рисунке (Рисунок 9).

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