Всех приветствую! Сегодня мы сделаем метеостанцию, которая выводит температуру, влажность, а также статусные уведомления о влажности, которые оценивают условия в помещении. Проект написан для использования внутри здания, комнаты, помещения, но вы можете переписать проект для использования на улице или в теплице.
Для работы нам понадобится
• Плата Arduino UNO (Nano, Leonardo и тд тоже можно использовать)
• Датчик DHT11 или DHT22
• I2C OLED 128x64 (у данного дисплея 4 пина)
Схема подключения

Так как я делал схему подключения впервые, может быть криво.
Пины для подключения
I2C OLED 128x64 |
Arduino Uno |
GND |
GND |
VCC(VDD) |
3v3 |
SCL(SCK) |
A5 |
SDA |
A4 |
DHT11 / DHT22 (пины считаются слева направо) |
Arduino Uno |
VCC |
5V |
DATA |
4 |
NC |
(не задействован) |
GND |
GND |
Библиотеки для кода
Для работы с кодом требуется установить библиотеки DHT.h и ASOLED.h
Библиотека ASOLED.h поддерживает русский, украинский, белорусский языки. Библиотека Wire.h предустановлена уже вместе с Arduino IDE
Код программы
Данный код предназначен для датчика DHT11, строка, которую нужно изменить для работы с датчиком DHT22 будет после кода. В коде указал, что за что отвечает.
float T = 0;
float H = 0;
#include <Wire.h>
#include "ASOLED.h"
#include "DHT.h"
DHT dht_4(4, DHT11);
void setup() {
LD.init();
LD.clearDisplay();
Serial.begin(9600);
dht_4.begin();
}
void loop() {
T = dht_4.readTemperature();
H = dht_4.readHumidity();
// Вывод температуры
LD.printString_12x16("", 0, 0);
LD.printNumber((long)T);
LD.printString_12x16("C°", 40, 0);
// Вывод влажности
LD.printString_12x16("", 80, 5);
LD.printNumber((long)H);
LD.printString_12x16("ВЛАГА", 0, 5);
// Очистка области сообщения (16 пробелов)
LD.printString_6x8(" ", 0, 11);
// Вывод сообщения в зависимости от влажности
if (H < 30) {
LD.printString_6x8("Опасная сухость", 0, 11);
}
else if (H < 40) {
LD.printString_6x8("Очень сухо", 0, 11);
}
else if (H < 55) {
LD.printString_6x8("Суховато", 0, 11);
}
else if (H < 70) {
LD.printString_6x8("Нормальная влага", 0, 11);
}
else if (H < 80) {
LD.printString_6x8("Высокая влажность", 0, 11);
}
else {
LD.printString_6x8("Опасная влага", 0, 11);
}
delay(2000); // Обновление данных каждые две секунды
}
Строка для замены (чтобы DHT22 работал):
8 строка:
DHT dht_4(4, DHT22);
А получилось у меня вот так:

Обозначения сообщений про влагу
Опасная сухость — воздух экстремально сухой, обязательное использование увлажнителя, избегайте длительного нахождения в помещении, есть риск пересыхания слизистых при таких условиях.
Очень сухо — влажность, некомфортная для человека, рекомендуется увлажнитель. Также контролируйте состояние кожи и дыхательных путей.
Суховато — умеренно сухой воздух, допустимый для кратковременного пребывания в помещении. Подходит для большинства людей, но чувствительным лицам стоит увлажнять воздух.
Нормальная влага — идеальный диапазон для здоровья и комфорта. Поддерживайте этот уровень (оптимален для дыхания, кожи и мебели).
Высокая влажность — повышенная влажность, возможна духота. Проветривайте помещение, включите осушитель или кондиционер.
Опасная влага — высокая влажность. Срочно проветрите помещение или включите осушитель, есть риск порчи мебели, электроники, стен и текстиля, книг и документов. Риск плесени.
А на этом всё!
Комментарии (10)
kumkurum
16.06.2025 09:37что-то она не шибко умная, сухо или влажно человек и сам поймёт, другое дело если б она связывалась с обогревателем или вентилятором или увлажнителем и нормализовала условия среды до оптимума, то да...
GeekTechno Автор
16.06.2025 09:37Постараюсь реализовать. Из похожих идей было подцепить мини ультразвуковой увлажнитель, но я отодвинул её в сторону подумав, что особой эффективности не будет.
k12th
16.06.2025 09:37Даже метеостанцию можно было бы сделать поинтереснее. Регулировать яркость дисплея в зависимости от освещенности. Обновлять изображение на мониторе так, чтобы пиксели не выгорали. Добавить датчик качества воздуха.
GeekTechno Автор
16.06.2025 09:37Возьму на заметку.
Соглашусь, слишком типичный пост получился (особо ничего нового помимо статусных уведомлений). На основе комментариев что нибудь сделаю и выкачу обновлённую метеостанцию.
Спасибо за идеи.
Dimanchik_ZX
16.06.2025 09:37Если это метеостанция, где измерение силы и направления ветра? Давления атмосферного? А так это просто гигрометр.
selfdoor
16.06.2025 09:37На схеме случайно не пропущен подтягивающий резистор номиналом 10кОм между выходами питания и сигналом? (если у нас голый датчик, а не модуль)
https://arduinomaster.ru/datchiki-arduino/datchiki-temperatury-i-vlazhnosti-dht11-dht22/
Isiirk
Чем эта публикация отличается еще от таких же 100500 на просторах интернет?