Основа погодной станции – датчики BME280 и DS18B20. В датчике BME280, в отличие от датчика BMP280, имеется чувствительный элемент для измерения ещё и относительной влажности, однако программа позволяет использовать и датчик BMP280. В этом случае относительная влажность не измеряется, а в её позиции выводится значение 50%.
Цифровой датчик ф.Даллас DS18B20 позволяет измерять внешнюю температуру с высокой точностью. В итоге устройство может измерять, обрабатывать и показывать:
Абсолютное атмосферное давление*(в мм рт. ст. или в кПа).
Предыдущее значение абсолютного давления и разницу между текущим и предыдущим давлениями (в мм рт. ст. или в кПа). Можно судить о скорости изменения давления.
Высоту (относительную, в метрах).
Высоту относительно уровня моря (в метрах).
Внутреннюю температуру с BME280*(в °С).
Относительную влажность*(в %).
Внешнюю температуру*(в °С, через DS18В20) + показывать минимальное и максимальное измеренное значение.
Все настройки производятся в меню настроек, в которое можно перейти при длительном нажатии на кнопку MENU. Выход из меню настроек так же по длительному нажатию на эту кнопку.
Возможности
Две системы измерения: мм рт.ст. | кПа.
Барограф в двух системах измерения.
МЕНЮ настроек: 9 параметров настройки.
Сохранение параметров в EEPROM.
Управление тремя кнопками:
Кнопка 1:LIGHT / MENU.
Краткое нажатие: Регулировка яркости
Долгое нажатие: Переход к МЕНЮ настройки
Кнопка 2:Set "0" / <<*.
Краткое нажатие: Обнуление высоты
В режиме МЕНЮ: Уменьшение значения
Кнопка 3:BAROGRAPH / >>*.
Краткое нажатие: Переход к экрану #2 Барографа и обратно к экрану #1
В режиме МЕНЮ: Увеличение значения
Долгое нажатие: Обнуление массива барографа
Схема погодной станции
Схема погодной станции была создана на основе: Arduino Pro Mini(можно использовать любую: Arduino UNO, Arduino Nano и подобные им где установлен микроконтроллер ATMega328P), датчике атмосферного давления и влажности BME280(не путать с BMP280) и цифровом датчике температуры семейства DS18B20.
Погодная станция может работать от встроенного аккумулятора Li-Ion +3.7 В, или от внешнего источника напряжением +5В (+5В на контакт VCC). При работе от аккумулятора, используется повышающий DC-DC преобразователь на MT3608(можно любой повышающий). На его выходе установлено напряжение +5 В.
Во избежании повреждения Ардуино, BME280, TFT дисплея – следует обратить внимание, что перед подключением преобразователя к устройству, необходимо заранее выставить на его выходе указанное напряжение!
Используемый мной образец BME280 работает в диапазоне напряжений +1.8...+5 В, что избавляет от необходимости применять стабилизатор на +3.3 В. Если у вас образец BME280 на напряжение +3.3 В, то добавьте для него стабилизатор на требуемое напряжение.
Внешнее питание +5В подаётся на Ардуино через разъём USB-micro.
Pic 1. Схема погодной станции v5.2.3-v5.3+
Скетч
Скетч имеет подробные пояснения, надеюсь будет легко понять как работает программа. Основа скетча – предыдущие разработки и опыты по использованию датчиков BME280 и DS1820.
Последняя версия скетча – v5.3.3 от 2025-10-26. В ней сделана доработка и устранение некоторых неточностей и оптимизация кода, а также сделана динамическая шкала давления в Барографе.
/*********************************************************
Основа этого проекта:
2023-02-01 Mr.ALB v3.18.7 Погодная станция на BME280/BMP280
+ DS18B20 + Барограф + Меню настройки
Сайт проекта:
http://www.mralb.ru/sections/programming/arduino_12.php
Новый проект:
2022-08-10 Mr.ALB v5.0 Полная переделка на новые алгоритмы
управление с помощью 3-х кнопок
2022-10-15 Mr.ALB v5.0 Процесс создания новой версии
2024-04-08 Mr.ALB v5.1 Точность DS18B20 на 12бит
2024-08-01 Mr.ALB v5.2 Полная переделка всего...
меню, точность перевода систем измерения, улучшен функционал,
вывод ROM с DS18xx, при отключении DS18xx стирание его
значений с дисплея, настройка периода измерений в Барографе
2024-08-02 Mr.ALB v5.2.1 Автоматическая смена экранов, если
param.v[0]==0. Каждый экран (1|2) показывается 1 минуту.
В этом режиме возможно кнопкой [PLUS] вручную менять экраны
по желанию, однако автоматическая смена экранов продолжается
2024-08-02 Mr.ALB v5.2.2 Устранение неточностей
2024-08-29 Mr.ALB v5.2.3 Оптимизация схемы под плату
2024-10-11 Mr.ALB v5.2.4 Оптимизация программы
2024-10-20 Mr.ALB v5.2.5 Оптимизация программы
2025-03-22 Mr.ALB v5.2.6 Доработка + оптимизация
2025-04-26 Mr.ALB v5.3.0 Барограф - динамическая шкала,
Убрал из меню максимальное и минимальное,
т.к. они в Барографе выбираются исходя
из текущих измерений давления.давления..
Обновление влажности в барографе.
2025-05-01 Mr.ALB v5.3.1 Оптимизация сетки давления в Барографе
2025-09-17 Mr.ALB v5.3.2 Сохранение предыдущего в EEPROM стр.2058
2025-10-26 Mr.ALB v5.3.3 Улучшено измерение аккумулятора,
оптимизация кода.
Для подбора коэффициентов использовать
AREF_voltmetr.ino
Для BMP280:
Скетч использует 30528 байт (99%) памяти устройства
Глобальные переменные используют 890 байт (43%) памяти
оставляя 1158 байт для локальных переменных.
2025-03-22 v5.2.6
Скетч использует 30712 байт (99%) памяти устройства.
Всего доступно 30720 байт.
2025-05-01 v5.3.1
Скетч использует 30690 байт (99%) памяти устройства.
Всего доступно 30720 байт.
Глобальные переменные используют 854 байт (41%) памяти,
оставляя 1192 байт для локальных переменных
2025-09-17 v5.3.2
Скетч использует 30648 байт (99%) памяти устройства
Глобальные переменные используют 854 байт (41%) памяти
2025-10-26 v5.3.3
Скетч использует 30672 байт (99%) памяти устройства.
Глобальные переменные используют 858 байт (42%) памяти
Для BME280:
2025-03-22 v5.2.6
Скетч использует 29592 байт (96%) памяти устройства.
Всего доступно 30720 байт.
Глобальные переменные используют 866 байт (42%) памяти,
оставляя 1182 байт для локальных переменных
2025-05-01 v5.3.1
Скетч использует 29576 байт (96%) памяти устройства.
Всего доступно 30720 байт.
Глобальные переменные используют 830 байт (40%) памяти,
оставляя 1218 байт для локальных переменных
2025-09-17 v5.3.2
Скетч использует 29554 байт (96%) памяти устройства.
Глобальные переменные используют 830 байт (40%) памяти
2025-10-26 v5.3.3
Скетч использует 29628 байт (96%) памяти устройства.
Глобальные переменные используют 834 байт (40%) памяти
Хотелось ещё чего добавить, но уже предел места...
забито под завязку :-) переходить на ESP32, там места много!
------------
ПОДКЛЮЧЕНИЕ:
Аппаратное подключение TFT 1.8' 128*160:
красный
TFT 1.8" Соединитель OLD_CXEMA NEW_CXEMA
------- ------------ --------- ---------
1 VCC -------------- +5V +5V
2 GND -------------- GND GND
3 CS ----[R 1k]---- 9 8
4 RST ----[R 1k]---- 10 9
5 A0(DC) ----[R 1k]---- 8 7
6 SDA(DIN)----[R 1k]---- 11 11
7 SCK ----[R 1k]---- 13 13
8 LED ----[R 100]-- 3~(PWM) 10~
Контакты TFT 3-7 подключать через резисторы 1к...2к
Аппаратное подключение TFT 1.8' 128*160:
синий
TFT 1.8" Соединитель NEW_CXEMA
------- ------------ ---------
1 RST ----[R 1k]---- 9
2 CS ----[R 1k]---- 8
3 D/C ----[R 1k]---- 7
4 DIN ----[R 1k]---- 11
5 CLK ----[R 1k]---- 13
6 VCC -------------- +5V
7 BL ----[R 100]--- 10~
8 GND -------------- GND
Контакты TFT 1-5 подключать через резисторы 1к...2к
DS18B20 ARDUINO OLD_CXEMA NEW_CXEMA
------- ----------------- ---------
1 GND - GND GND
2 OUT - D4, R 4.7k к VCC D5 R 4.7k к VCC
3 VCC - GND +5V (измерение точнее)
BME280 I2C:
-----------
SDA - A4
SCL - A5
VCC - 3.3V/+5V - зависит от модуля
GND - GND
КНОПКИ: NEW_CXEMA
------- ---------
BUT1 - 5 2 // Кнопка [SET | Light]
BUT2 - 6 3 // Кнопка [ - | Set_Level_0]
BUT3 - 7 4 // Кнопка [ + | Barograph]
MrALB_sketch39_Pro_mini_v5.3_HEX.rar
https://disk.yandex.ru/d/gQiqHLBju3BP6Q
MrALB_sketch39_TFT_128x160_BME280_DS18B20_v5.3.3_HEX.rar
Arduino Nano, BME280, R1=218.2k, R2=51.13k
https://disk.yandex.ru/d/4Rhah704t5hfXA
Сайт проекта:
https://mralb.ru/sections/programming/arduino_39.php#content_center
**********************************************************/#define NEW_CXEMA // Новая схема/********************************************************* Выбор датчика давления: BMP280 - 1 | BME280 - 0 ---------------------------------------------*/#define TYPESENSORPRESS 0
#if (TYPESENSORPRESS==1)
#define BMP // Выбор датчика = BMP | BME 280#else#define BME // Выбор датчика = BMP | BME 280#endif/*********************************************************/// Название программы:constchar*prog[] =
{
"Mr.ALB",// 0 Автор программы"v5.3.3",// 1 Версия"2025-10-26",// 2 Дата версии#ifdef BMP
"BMP280",// 3 ТИП датчика#else"BME280",// 3 ТИП датчика#endif"BAROGRAPH",// 4 НАЗВАНИЕ"SETTINGS",// 5 Заголовок меню настроек
};
//=======================================================// ПОДКЛЮЧЕНИЕ БИБЛИОТЕК#include<Wire.h>// для I2C#include<EEPROM.h>// для EEPROM// Определение интервалов времени#define TIME_DELTA 1800 // Проверка нажатия кнопки#define TIME_CHECK 5000 // Период проверки значений#define TIME_KNP 180 // Задержка для кнопки
...
В настоящее время скетч не публикуется, если вы заинтересованы в повторении этой погодной станции, то за небольшую плату вышлю архив с полным скетчем, или есть возможность безплатно загрузить весь скетч в виде HEX файл в вашу Arduino Pro mini или Arduino Nano архивы смотрите в Приложении.
Реализация
Конструкция этой версии собрана на монтажной односторонней плате размерами 50*70 мм. На неё установлены все модули и приклеен двухсторонним скотчем аккумулятор. Корпус придётся делать новый, однако, если у вас уже есть предыдущий вариант погодной станции версии от v3.16, то можно не изготавливать новый корпус, а перепрограммировать уже предыдущую версию, только потребуется в скетче произвести переключение кода на старую схему через комментирование определения.
// Настоящая настройка скетча на новую плату
092 #define NEW_CXEMA // Новая схема
// Для настройки на старую плату v3.16-v3.18 сделать так:
092 // #define NEW_CXEMA // Новая схема
Собранная плата погодной станции. Дисплей установлен в разъём на плате.
Pic 2. Погодная станция v5.2.3. Собранная плата
Ниже на фото дисплей снят и видно расположение модулей погодной станции: Arduino Pro Mini, датчик BME280, модуль заряда аккумулятора на TP4056, Повышающий преобразователь на МТ3608, разъём внешнего питания, три кнопки управления.
Pic 3. Погодная станция v5.2.3. Дисплей снят
Монтаж проводками на контакты монтажной платы. Так как это устройство единичное, то нет смысла делать печатную плату.
Pic 4. Погодная станция v5.2.3. Вид нижней стороны платы
На экране #1 выводятся все измеренные параметры: давление, высота, влажность и температуры.
Pic 5. Погодная станция v5.2.3. Экран #1
На экране #2 выводятся барограф – график изменения давления от времени, которое настраивается в меню настроек.
Pic 6. Погодная станция v5.2.3. Экран #2 – Барограф
В меню настроек выбранный параметр подсвечивается жёлтым цветом. Перемещение по пунктам настроек при кратком нажатии на кнопку MENU. Изменение параметра через кнопки MINUS – убавить и PLUS – прибавить. Если в первом параметре Mode установлен 0, то происходит автоматическая смена экранов с информацией.
Pic 7. Погодная станция v5.2.3. Меню настроек
На фото видно, что погодная станция имеет небольшие размеры и легко поместится в карман. Внешний датчик подключен и с него выводится температура.
Pic 8. Погодная станция v5.2.3. Сравнительные размеры
Аккумулятор от старого телефона. Ёмкость около 800 мАч. Для кратковременного использования хватает надолго, если нужна непрерывная работа длительно, то можно подключить к любой зарядке телефона с напряжением 5В.
Pic 9. Погодная станция v5.2.3. Вид снизу на аккумуляторPic 10. Погодная станция v5.2.3. Вид сбокуPic 11. Погодная станция v5.2.3. Общий видPic 12. Погодная станция v5.2.3. Указательные этикетки
При включении погодной станции выводится заставка, на которой указывается название, автор, версия прошивки, дата прошивки.
Pic 13. Погодная станция v5.2.3. Включение
Если до включения погодной станции к ней подключен датчик DS18B20, то после начальной заставки выводится информация на подключенный DS18B20, а именно: чип, точность измерения, измеренная температура, из ROM - индивидуальная информация по датчику.
Pic 14. Погодная станция v5.2.3. Включение
При работе погодной станции от аккумулятора, в верхнем правом углу дисплея выводится пиктограмма батарейки и указывается текущее напряжение на аккумуляторе.
Pic 15. Погодная станция v5.2.3. Работа от аккумулятора
Версия v5.3.1
Оказывается можно ещё улучшить программу. Итак, в Барографе шкала давления сделана динамической. Верхний уровень давления на графике Барографа пиринимается за (p_max + 1 mmHg), а нижний уровень принимается за (p_min - 1 mmHg). Что это позволяет? Во-первых, шкала давления растягивается и на графике видны малейшие колебания текущего давления даже если производить измерения очень часто, к примеру, через 15 минут, как показано на фото ниже. Во-вторых, из меню настроек можно убрать два параметра: Максимальное и минимальное давления. Необходимость в них отпадает. Верхний и нижний уровень графика уже ничем не ограничены и при изменении давления в широком диапазоне шкала будет всегда автоматически подстраиваться под текущие значения. Значения p_max, p_min определяются из значений в массиве Барографа как максимальное и минимальное значения.
2025-05-01Pic 16. Погодная станция v5.3.1 Динамическая шкала давления
Для полного завершения новой конструкции с новой схемой требуется изготовить корпус, однако для себя я продолжаю использовать предыдущую конструкцию со старой схемой, переписав в ней программу.
Проект закончен, те небольшие неточности, которые были выявленны во время эксплуатации погодной станции, были устранены. На данный момент проект считаю завершённым.