Портативный монитор температуры и влажности на Arduino с LCD 16x2
Компоненты и материалы
| Компонент | Количество |
|---|---|
| Arduino UNO R3 (или любой 5В) | 1 |
| Датчик температуры и влажности DHT11 (4 пина) | 1 |
| LCD 16x2 с RGB-подсветкой (Adafruit) | 1 |
| Резистор 10 кОм (подтяжка DHT11) | 1 |
| Потенциометр 10 кОм (контраст LCD) | 1 |
| Тактильная кнопка | 1 |
| Power Bank (порт USB) | 1 |
| USB A-B кабель, плата для прототипирования, перемычки | 1 |
О проекте
Простой портативный термогигрометр для поиска сквозняков и настройки вентиляции. Питание от Power Bank — полностью автономный. Кнопка включает подсветку LCD для чтения в темноте.
Внимание: используемый автором LCD снят со старой пожарной сигнализации — у него нестандартная распиновка (пины 15/16 перед пином 1, 15=GND, 16=5V). В схеме Fritzing показана стандартная распиновка. Проверьте даташит вашего дисплея!
Схема подключения (стандартный LCD HD44780)
| LCD пин | Подключение |
|---|---|
| 1 (VSS) | GND |
| 2 (VDD) | 5V |
| 3 (VO) | Средний контакт потенциометра 10к (крайние: 5V и GND) |
| 4 (RS) | Arduino D12 |
| 5 (RW) | GND |
| 6 (EN) | Arduino D11 |
| 7-10 (D0-D3) | Не подключены (4-битный режим) |
| 11 (D4) | Arduino D5 |
| 12 (D5) | Arduino D4 |
| 13 (D6) | Arduino D3 |
| 14 (D7) | Arduino D2 |
| 15 (A/LED+) | 5V (через резистор 220Ом если нет токоограничения) |
| 16 (K/LED-) | Кнопка -> GND (кнопка управляет подсветкой) |
DHT11: Pin1 -> 5V + 10кОм на Pin2; Pin2 -> Arduino D8 + 10кОм на Pin1; Pin3 -> NC; Pin4 -> GND.
Arduino: GND -> минус шины, 5V -> плюс шины. Соедините шины питания перемычками.
Код
Требуется библиотека Adafruit DHT Sensor Library (через Library Manager или GitHub).
// Портативный термогигрометр на Arduino UNO + DHT11 + LCD 16x2
#include <LiquidCrystal.h>
#include "DHT.h"
#define DHTPIN 8 // пин данных DHT11
#define DHTTYPE DHT11 // тип датчика
// LCD: rs, en, d4, d5, d6, d7
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
DHT dht(DHTPIN, DHTTYPE);
void setup() {
lcd.begin(16, 2);
dht.begin();
lcd.print("Temp: Humidity:"); // заголовок на строке 0
}
void loop() {
delay(500); // DHT11 не любит частые опросы (>1 сек рекомендуется, но 500мс работает)
lcd.setCursor(0, 1); // строка 1 (вторая)
float h = dht.readHumidity(); // влажность %
float f = dht.readTemperature(true); // температура °F (true = Фаренгейт)
if (isnan(h) || isnan(f)) { // проверка на ошибку чтения
lcd.print("ERROR");
return;
}
lcd.print(f); // температура
lcd.setCursor(7, 1); // позиция для влажности
lcd.print(h); // влажность
}
Сборка и запуск
- Соберите схему на плате для прототипирования.
- Подключите Power Bank к Arduino через USB.
- На дисплее появится заголовок «Temp: Humidity:».
- Нажмите тактильную кнопку — загорится подсветка.
- Через секунду появятся показания температуры (°F) и влажности (%).
Применение
- Поиск сквозняков у окон и дверей.
- Контроль микроклимата в комнатах, теплицах, серверных.
- Основа для будущего проекта на ATtiny84 с собственным PCB (планируется автором).
Улучшения
- Добавить переключение °C/°F кнопкой.
- Использовать DHT22 (AM2302) для большей точности и диапазона.
- Добавить логирование на SD-карту или отправку по Bluetooth/WiFi (ESP8266/ESP32).
- Сделать корпус для печати на 3D-принтере.
Производственный процесс
- Создайте автоматизированную аэропоническую систему с Raspberry Pi и датчиком влажности
- Создание игры в реальном времени на Arduino Nano с гироскопом MPU-6050 и OLED-дисплеем
- Многопозиционная система датчиков температуры для интеграции в умный дом
- Датчик CO2 K30: мониторинг качества воздуха в реальном времени на Arduino
- Простой ИК-датчик препятствий на Arduino: ИК-светодиод и фотодиод
- Интеграция ёмкостного сканера отпечатков DFRobot с Arduino или ESP8266
- Веб-управляемый IoT-индикатор на Arduino, Yaler и IFTTT
- Магнитная левитация на отталкивании с Arduino: Простая схема и DIY-руководство
- Высокопроизводительный регистратор данных для метеозонда на Arduino
- Надёжные будильник на DS1302 RTC и Arduino UNO — сборка и код