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

Добавил пользователь Alex
Обновлено: 05.08.2024

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

Подразделы

Основа погодной станции – датчик BME280. В этом датчике, в отличие от датчика BMP280, имеется чувствительный элемент для измерения ещё и относительной влажности.

  • Абсолютное атмосферное давление (в мм рт. ст. или в кПа) .
  • Предыдущее значение абсолютного давления и разницу между текущим и предыдущим давлениями (в мм рт. ст. или в кПа) . Можно судить о скорости изменения давления.
  • Высоту (относительную, в метрах) .
  • Высоту относительно уровня моря (в метрах) .
  • Внутреннюю температуру с BME280 (в °С) .
  • Относительную влажность (в %) .
  • Внешнюю температуру (в °С, через DS18В20) + показывать минимальное и максимальное измеренное значение.

Для смены единиц измерения давления необходимо удержание кнопки Установка уровня 0 метров 2. 3 секунды, после отпускания кнопки – давление будет измеряться альтернативными единицами измерения.

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

Схема погодной станции была создана на основе: Arduino Pro Mini (можно использовать любую: Arduino UNO, Arduino Nano и подобные им) , датчике атмосферного давления и влажности BME280 (не путать с BMP280) и цифровом датчике температуры семейства DS1820.

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

Pic 1. Схема погодной станции

Датчик ф. Даллас семейства DS1820 и ему подобные имеет достаточную точность в широком диапазоне температур. Такой датчик я уже использовал при разработке МТР-1.2 – хороший, надёжный датчик. Если использовать герметичное исполнение, то можно измерять и температуру жидкостей, к примеру, воды.

Погодная станция может работать от встроенного аккумулятора Li-Ion +3.7 В, или от внешнего источника напряжением +6. +9 В, тогда, в этом случае, напряжение питания необходимо подавать на контакт RAW. При работе от аккумулятора, используется повышающий DC-DC преобразователь MT3608 (можно любой повышающий) . На его выходе установлено напряжение +4.5. +5 В. Во избежании повреждения Ардуино, BME280, TFT экрана – следует обратить внимание, что перед подключением преобразователя к устройству, необходимо заранее выставить на его выходе указанное напряжение.

Если у вас напряжение питания не точно +5.0 В, а, к примеру, +4.5 В, то для точного измерения напряжения питания аккумулятора необходимо в строке [462] указать ваше напряжение питания на контакте VCC Ардуино .

Используемый мной образец BME280 работает в диапазоне напряжений +1.8. +5 В, что избавляет от необходимости применять стабилизатор на +3.3 В. Если у вас образец BME280 на напряжение +3.3 В, то добавьте для него стабилизатор на требуемое напряжение.

Скетч

Скетч имеет подробные пояснения, надеюсь будет легко понять как работает программа. Основа скетча – предыдущие разработки и опыты по использованию датчиков BME280 и DS1820.

Опубликованый скетч является последней версией v3.13. Историю доработок смотрите в подразделе Доработки. Предыдущие версии и последнюю версию и используемые библиотеки можно скачать в подразделе Приложение.

Реализация

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

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

Основой послужила монтажная плата с металлизированными отверстиями, что удобно для двухстороннего монтажа. Печатную плату разрабатывать не стал, сберёг своё личное время . Это устройство единичное и не имеет смысла делать какие-то печатные платы. Размер монтажной платы 63 * 50 мм. Куплена в Китае.

С нижней стороны платы установлена панелька на 24 контакта для Arduino Pro Mini. Там же смонтирован преобразователь DC-DC MT3608, и плата для зарядки литиевого аккумулятора на основе TP4056. Преобразователь использовал покупной, какой был под рукой, но можно использовать любой, хоть бы и самодельный, который выдаёт на выходе напряжение от +4.5 В до +5 В.

На нижней стороне платы смонтированы конденсаторы С1 и С2.

Нижняя сторона платы

Pic 1. Нижняя сторона платы

С верхней стороны платы размещены: датчик BME280, TFT экран 1"8, аккумулятор 3,7 В 400 мАч.

Вся разводка выполнена цветными одножильными монтажными проводками.

Верхняя сторона платы

Pic 2. Верхняя сторона платы

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

Когда всё проверено, установите в панельки все компоненты. Подключите Ардуино к компьютеру и залейте в него программу.

Сборка верхней стороны платы

Pic 3. Сборка верхней стороны платы

Заставка при включении

Pic 4. Заставка при включении

Заставка при подключенном <i></p>
<p>DS1820</i>' data-lightbox='Arduino'>DS1820</i>
Pic 5. Заставка при подключенном DS1820

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

Смена единиц измерения давления происходит при удержании кнопки Установка уровня 0 метров . Удерживать 2. 3 секунды. При кратком нажатии на кнопку, происходит установка нулевого уровня для текущего атмосферного давления.

Измерение давления в кПа

Pic 6. Измерение давления в кПа

Основной режим измерения задан в мм рт. ст. Если вам необходимо чтобы погодная станция по умолчанию измеряла в кПа, то в программе в строке [184] установите флаг измерения в кПа flagPa = true ;.

Измерение давления в мм рт. ст.

Pic 7. Измерение давления в мм рт. ст.

Если подключен внешний датчик температуры DS1820, то на экране внизу дополнительно выводится строчка с измеренным значением с этого датчика. Дополнительно в верху экрана указывается, что используется датчик DS1820 (левее пиктограммы батарейки) . Значение температуры с датчика BME280 выводится мелким шрифтом, перед строкой со значением влажности (Humidity) .

Вывод температуры с внешнего датчика

Pic 8. Вывод температуры с внешнего датчика

Модуль закончен и вполне функционален. Удобен в использовании и легко можно его модернизировать, к примеру добавить ещё кнопочку, или обновить прошивку.

В процессе разработки соединений модуля

Pic 9. В процессе разработки соединений модуля

Для полного завершения этой конструкции требуется изготовить корпус. Как и прежде, буду его делать из пластика ABS. Когда корпус будет изготовлен, то добавлю фото, а пока так как есть.

Размеры получившегося модуля: 64 * 50 * 32 мм (ширина * высота * глубина) . Потом размеры несколько увеличатся за счёт толщины пластика корпуса.

Корпус

Закончил изготовление корпуса. Теперь погодная станция обрела законченный вид. Ниже на фото этапы изготовления корпуса. Хотелось его изготовить как можно меньше по габаритам. В итоге получился размерами 70 * 63 * 38 мм.

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

Начало изготовления

Pic 10. Начало изготовления

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

Pic 11. Модуль в нижней части корпуса DS1820' data-lightbox='Arduino'>DS1820" />
Pic 12. Вид слева на разъём для DS1820 Pic 13. Вид спереди на разъём для зарядки аккумулятора Pic 14. Вид справа

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

Вид на части корпуса и сам модуль

Pic 15. Вид на части корпуса и сам модуль

Всё собрано вместе. Подключен внешний датчик температуры DS1820. На экране видны все надписи.

Pic 16. Вид общий Pic 17. Вид на клавишу включения Pic 18. Вид на разъём для внешнего датчика температуры DS1820

Подключен блок питания для зарядки аккумулятора. Идёт процесс заряда.

Вид снизу. Идёт зарядка аккумулятора

Pic 19. Вид снизу. Идёт зарядка аккумулятора 2020-02-07

В этом руководстве показано, как создать веб-сервер на ESP32 для отображения показаний сенсорного модуля BME280. Датчик BME280 измеряет температуру, влажность и давление.

image_1.jpg

Необходимые компоненты

  • Плата ESP32 DOIT DEVKIT V1
  • Датчик bme280
  • Макетная плата
  • Соединительные провода

Модуль датчика BME280 считывает температуру, влажность и давление. Поскольку давление изменяется с высотой, вы также можете оценить высоту. Существует несколько версий этого сенсорного модуля, здесь используется версия, показанная на рисунке ниже.

image_3.jpg

Датчик может обмениваться данными, используя протоколы связи SPI или I2C (есть датчики, которые обмениваются данными по I2C, они поставляются с четырьмя контактами).

Чтобы использовать протокол связи SPI, необходимо использовать следующие контакты:

  • SCK - это SPI Clock pin
  • SDO - MISO
  • SDI - MOSI
  • CS - Выбор микросхемы

Для использования протокола связи I2C датчик использует следующие контакты:

  • SCK - это также SCL pin
  • SDI - это также SDA pin

схема

В данном проекте используется связь I2C. Датчик подключается к контактам ESP32 SDA и SCL, как показано на следующей принципиальной схеме.

image_4.jpg

Установка библиотеки BME280

Для считывания показаний с сенсорного модуля BME280 используется библиотека Adafruit_BME280. Чтобы установить библиотеку в Arduino IDE :

image_5.jpg

Установка библиотеки Adafruit_Sensor

Чтобы использовать библиотеку BME280, вам также необходимо установить библиотеку Adafruit_Sensor.

image_6.jpg

После установки библиотек перезапустите Arduino IDE.

Считывание температуры, влажности и давления

Чтобы ознакомиться с датчиком BME280, воспользуемся примером скетча из библиотеки

image_7.jpg

Библиотеки

Код начинается с включения необходимых библиотек

SPI связь

Поскольку используется связь I2C, необходимо объявить следующие строки:

Примечание: если используется связь SPI, нужно изменить определение контактов, чтобы использовать ESP32 GPIO. Для связи SPI на ESP32 можно использовать контакты HSPI или VSPI, как показано в следующей таблице.

SPI MOSI MISO CLK CS
HSPI GPIO 13 GPIO 12 GPIO 14 GPIO 15
VSPI GPIO 23 GPIO 19 GPIO 18 GPIO 5

Давление на уровне моря

Будет создана переменная SEALEVELPRESSURE_HPA.

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

В этом примере по умолчанию используется связь I2C. Как видите, просто нужно создать объект Adafruit_BME280 с именем bme.

Если использовать SPI, нужно закомментировать эту строку и раскомментировать одну из следующих строк в зависимости от того, используется аппаратный или программный SPI.

setup()

В setup() запускается последовательная связь

Значения печати

В цикле loop() функция printValues ​​() считывает значения из BME280 и печатает результаты в последовательном мониторе.

Функции считывания температуры, влажности, давления и оценки высоты

  • bme.readTempera () - считывает температуру в градусах Цельсия;
  • bme.readHumidity () - считывает абсолютную влажность;
  • bme.readPressure () - считывает давление в hPa (hectoPascal = миллибар);
  • bme.readAltitude (SEALEVELPRESSURE_HPA) - считывает высоту в метрах на основе давления на уровне моря.

Загрузите код в ESP32 и откройте Serial Monitor со скоростью 9600 бод. Вы должны увидеть показания, отображаемые на Serial Monitor.

Датчики атмосферного давления bmp180, bmp280, bme280 – частые гости в инженерных проектах. С их помощью можно предсказать погоду или измерить высоту над уровнем моря. Сегодня именно эту линейку можно назвать самыми популярными и недорогими сенсорами для ардуино. В этой статье мы расскажем принцип действия датчиков, схему подключения к различным платам Arduino и приведем примеры программирования скетчей.

Принцип действия барометра на BMP280, BMP180, BME280

Барометр ардуино

Барометр – устройство, измеряющее атмосферное давление. Электронные барометры используются в робототехнике и различных электронных устройствах. Наиболее распространенными и доступными являются датчики давления от фирмы BOSH: это BMP085, BMP180, BMP280 и другие. Первые два очень похожи между собой, BMP280 – это более новый и усовершенствованный датчик.

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

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

  • Габариты 2 х 2,5 х 0,95 мм.
  • Давление 300-1100гПа;
  • Температуры от 0С до 65 С;
  • Поддержка интерфейсов I2C и SPI;
  • Напряжение питания 1,7В – 3,6В;
  • Средний ток 2,7мкА;
  • 3 режима работы – режим сна, режим FORCED (проведение измерения, считывание значения, переход в спящий режим), режим NORMAL (перевод датчика в циклическую работу – то есть устройство самостоятельно через установленное время выходит из режима сна, проводит измерения, считывает показания, сохраняет измеренные значения и переходит снова в режим сна).

Датчик BMP180 – это дешевый и простой в применении сенсорный датчик, который измеряет атмосферное давление и температуру. Используется обычно для определения высоты и в метеостанциях. Состоит устройство из пьезо-резистивного датчика, термодатчика, АЦП, энергонезависимой памяти, ОЗУ и микроконтроллера.

Датчик bmp180

Технические характеристики датчика BMP180:

  • Пределы измеряемого давления 225-825 мм рт. ст.
  • Напряжение питания 3,3 – 5В;
  • Ток 0,5мА;
  • Поддержка интерфейса I2C;
  • Время срабатывания 4,5мс;
  • Размеры 15 х 14 мм.

Датчик bme280 содержит в себе 3 устройства – для измерения давления, влажности и температуры. Разрабатывался для малого потребления тока, высокой надежности и долгосрочной стабильной работы.

Датчик bme280

Технические характеристики датчика bme280:

Если сравнивать все устройства между собой, то датчики очень похожи. По сравнению со своим предшественником, к которым относится BMP180, более новый датчик BMP280 заметно меньше по размерам. Его восьмиконтактный миниатюрный корпус требует аккуратности во время монтажа. Также устройство поддерживает интерфейсы I2C и SPI, в отличие от предшественников, которые поддерживали только I2C. По логике работы датчика изменений практически нет, была только усовершенствована температурная стабильность и увеличено разрешение АЦП. Датчик BME280, измеряющий температуру, влажность и давление, также похож на BMP280. Отличие между ними заключается в размерах корпуса, так как BME280 имеет датчик влажности, который немного увеличивает габариты. Количество контактов и их расположение на корпусе совпадают.

Варианты подключения к Arduino

Подключение датчика BMP180 к Ардуино. Для подключения понадобятся сам датчик BMP180, плата Ардуино UNO, соединительные провода. Схема подключения показана на рисунке ниже.

Землю с Ардуино нужно соединить с землей на датчике, напряжение – на 3,3 В, SDA – к пину А4, SCL – к А5. Контакты А4 и А5 выбираются с учетом их поддержки интерфейса I2C. Сам датчик работает от напряжения 3,3 В, а Ардуино – от 5 В, поэтому на модуле с датчиком установлен стабилизатор напряжения.

Подключение BMP 280 к Ардуино. Распиновка и вид сверху платы изображены на рисунке.

Датчики давления Arduino bmp280, bmp180, bme280

Сам модуль датчика давления выглядит следующим образом:

Датчики давления Arduino bmp280, bmp180, bme280

Для соединения с Ардуино нужно подключить выходы следующим образом: соединить землю с Ардуино и на датчике, VCC – на 3,3В, SCL / SCK – к аналоговому контакту А5, SDA / SDI – к А4.

Подключение датчика BME280. Расположение контактов и распиновка у датчика BME280 такая же, как у BMP280.

Датчики давления Arduino bmp280, bmp180, bme280

Так как датчик может работать по I2C и SPI, подключение можно реализовать двумя методами.

При подключении по I2C нужно соединить контакты SDA и SCL.

Датчики давления Arduino bmp280, bmp180, bme280

При подключении по SPI нужно соединить SCL с модуля и SCK (13й контакт на Ардуино), SDO с модуля к 12 выводу Ардуино, SDA – к 11 контакту, CSB (CS) – к любому цифровому пину, в данном случае к 10 контакту на Ардуино. В обоих случаях напряжение подключается к 3,3В на Ардуино.

Датчики давления Arduino bmp280, bmp180, bme280

Описание библиотеки для работы с датчиком. Пример скетча

Для работы с датчиком BMP180 существуют различные библиотеки, упрощающие работу. К ним относятся SFE_BMP180, Adafruit_BMP085. Эти же библиотеки подходят для работы с датчиком BMP080. Для датчика bmp280 используется похожая библиотека Adafruit_BMP280.

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

Затем нужно получить информацию об атмосферном давлении.

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

Датчик BME280 также показывает давление и температуру, дополнительно он может считывать показания о влажности, который по умолчанию выключен. При необходимости можно произвести настройки датчика и начать считывать показания о влажности. Диапазон измерения от 0 до 100%. Библиотека, которая нужна для работы с датчиком, называется Adafruit_BME280.

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

Возможные ошибки при подключении и устранение их

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

Также при использовании “китайских” датчиков можно столкнуться с нестандартными I2C или SPI адресами. В этом случае рекомендуется просканировать все присоединенные устройства с помощью одного из популярных скетчей и выяснить, по какому адресу откликается ваш датчик давления.

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

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

Заключение

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

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

Похожие публикации

Kitsum

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


При всей привлекательности микроконтроллера ESP8266 с его большим объемом памяти, железной поддержкой Wi-Fi и массой разных плюшек, он не лишен недостатков. Самый основной - ограниченное количество поддерживаемых одновременных TCP соединений равное 5. Если превысить этот лимит, то контроллер потеряет связь с окружающим миром, при этом watchdog будет думать, что все в порядке, а следовательно, даже не попытается нам помочь. Будем стараться это помнить!
Стоит начать с концепции
Доступ к данным метеостанции нужно получать без установки внешних приложений и под любой операционной системой. Для этих целей подойдет практически любой современный браузер. Меня всем устраивает Chrome. Раз уж за основу взят HTTP протокол, стоит озаботиться экономией трафика и ограничением числа TCP соединений. Хорошим тоном будет передача всего необходимого для формирования страницы контента только при первом обращении, а все последующие операции, такие как отображение показаний с датчиков или настройку контроллера, производить через API. В этом нам поможет JQuery. А вот, чтобы ослабить болевые ощущения от передачи файлов с SPI Flash в браузер, стоит предусмотреть систему кэширования, например, Etag. Это позволит отдавать тяжелый контент единожды, а при последующих загрузках страницы просто подтверждать его актуальность на уровне Web сервера микроконтроллера и кэш браузера вступит в игру, неимоверно уменьшив время загрузки страницы! "Вы были правы в одном, Мастер: переговоры были недолгими." © Звездные войны. Эпизод 1 Из-за того, что метеостанция с датчиками и контроллером должна располагаться на улице, жизненно необходимо предусмотреть возможность обновлять прошивку ESP через Web интерфейс. Аналогичным образом должны обновляться файлы Web сервера расположенные на SPI Flash. Этот и предыдущий пункт вкупе позволят обновлять функционал микроконтроллера из домашней сети или из интернета, если конечно в этом возникнет острая необходимость. Чтобы никто посторонний не могу вмешаться в работу устройства или изменить файлы Web сервера, последний должен хотя бы как-то себя защищать. Пускать в панель управления только после авторизации, блокировать доступ при попытках брутфорса пароля. В конце концов, контроллер обязан самостоятельно генерировать ключи (salt) для авторизации, дабы сделать алгоритм непредсказуемым и исключить потенциальный взлом, в случае если злодей завладеет исходниками проекта. Понятно, что кому она там нужна, эта метеостанция, если её не завязывать с умным домом, если только из-за спортивного интереса, но как говориться “Береженого Бог бережет”. Датчики стоит расположить по уму - в метеобудке, а вот контроллер в сухом и закрытом боксе. Объединить их между собой, как мне кажется, удобнее по I2C шине - минимум проводов, максимум удобства. Практически на всех вариантах плат ESP-xx имеется штатный светодиод, можно воспользоваться им как для индикации режимов и состояния микроконтроллера, так и для вывода какой-либо промежуточной информации. Что касаемо режимов работы ESP8266, как ни странно, но он должен находить домашнюю Wi-Fi сеть и подключаться к ней. Если вдруг звезды не были к нам благосклонны, и домашняя беспроводная сеть приказала долго жить, контроллер обязан перейти в режим точки доступа (AP) дабы к нему можно было подключиться с какого-либо устройства и перенастроить его на другую сеть. А вот пока последнее не произошло, ESP должен периодически сканировать эфир в поисках долгожданной домашней точки доступа и, если боги были к нам милосердны, и домашняя сеть появилась в эфире, незамедлительно переключиться в режим клиента (STA) и в пылу страсти воссоединиться с ней. Ну и естественно, как же без отправки данных на внешние ресурсы, сейчас без этого не обходится ни одна уважающая себя кофеварка, не говоря уже о метеостанции. Думаю, что основным блюдом станет протокол MQTT, это уже облегчает возможность интеграции с умным домом, стулом или той же кофеваркой. Ну а на закуску добавим поддержку "ThingSpeak" и "Народного мониторинга". При желании можно нарастить функционал, благо памяти у микроконтроллера еще много. Как я себе это представляю
Учтите, что на видео, данные с датчиков, эмитируются самим микроконтроллером, это нужно для наглядности. В жизни метеорологическая обстановка намного спокойнее слава Богу.
Перейдем к физической сборки устройства
Как по мне, так самый оптимальный вариант, это воспользоваться отладочной платой NodeMCU V3 и базой для неё. Таким образом, мы получим отличный комплект с разведенной на его борту всей необходимой обвязкой и возможностью питать устройство от 5 до 24 Вольт.

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

Заливаем прошивку, образ SPI Flash и подключаем четырьмя проводами датчики. Справится даже ребенок.
Ссылки:
Базовая плата для NodeMCU V3 с преобразователем питания 5-24V в 5V Отладочная плата ESP8266 от NodeMCU Естественно никто не запрещает Вам развести свою плату. Если Вы это сделаете, скиньте нам свое творение, возможно мы перейдем на него. В идеале, все должно размещаться в метеобудке.
Датчики взятые за основу
Теперь настал момент озаботиться, где описанные выше ребята будут жить. В прошлый раз мы использовали для этих целей, найденную в подножном корме, электрическую распределительную коробку. Кроме дешевизны в этом решении нет ничего положительного.
В этот раз мы воспользуемся более серьезным вариантом – "Метеорологическая будка Стивенсона". Она способна защитить датчики от прямых воздействий окружающей среды, но при этом имеет открытую структуру со стенками в виде жалюзи. Удобно, красиво и самое главное – правильно!
Будка печатается на 3D принтере по эскизам опубликованным на Thingiverse неким kowomike, спасибо добрый человек! Архив с эскизами можно будет скачать в конце поста.

Фото готовой будки

Шпилька М8 крепится через зажимной хомут к мачте уличной антенны.
Примерка. Шпилька практически не укорачивалась, чтобы не закрывать будку параболической Wi-Fi антенной.
Хотя в моем случае все это сделано не правильно т.к это солнечная сторона дома. Доступа на теневую сторону дома у меня нет, поэтому приходиться довольствоваться тем, что имеем. По прошлой метеостанции мне говорили "на солнечной стороне все эти измерения - сферический конь в вакууме, слепи %описание-многА-букАв% и закрепи на теневой стороне дома".
Я пока живу в панельном многоквартирном доме, как и не малая часть нашей страны. Доступ к теневой стороне дома (а для меня, по факту, это окна в подъезде) - прямой вызов всем гопникам района трущимся рядом, любопытным соседям с бегающими глазками и всей элите человечества скрашивающей фоном мою унылую и слишком простую, по их мнению, жизнь. Думаю, что мысль я донес.

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

Разъемы для подключения внешних датчиков и питающей линии установил на местах где была пара штатных заглушек. Закрепил все через переходную пластину, выпиленную из куска фольгированного текстолита. Естественно, предварительно пластина была протравлена, а вся медь искоренена, ибо в этом случае она нам не друг.
Также была предусмотрена проставка из полиэтиленового поролона (используется в качестве упаковочного материала при транспортировке грузов) между текстолитом и корпусом, общей толщиной 5мм, а после затяжки крепежных винтов, его толщина не превышает 1мм. Это было сделано из-за опыта эксплуатации предыдущего (временного) бокса для этой метеостанции. Без проставки влага быстро найдет путь вовнутрь, и срок службы устройства снизится.
Производим примерку.
При окончательном монтаже обязательно необходимо удалить все не плотно прилегающие части полиэтиленового поролона, то есть те части, которые располагаются снаружи и не сдавлены крепежной текстолитовой пластиной. Это необходимо сделать для препятствования накоплению влаги в доступных для неё полостях. Также пришлось увеличить число крепежных болтов для более надежного прилегания текстолита, в противном случае он может выгибаться.
Все самое сложное позади, остается только вывести на один разъем шину i2c с питание 3.3 Вольта, а на другой подвести пины питания платы расширения. Но т.к у меня валялся "хвост" отрезанный когда-то от не рабочего блока питания маршрутизатора, и я не побрезговал им воспользоваться по прямому назначению.

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

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

Kitsum

Kitsum

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