Персональную метеостанцию можно собрать всего из нескольких компонентов. Подойдёт Arduino Uno, Nano, Pro Mini или Mega. Для измерения температуры и влажности используется DHT11; если нужна более высокая точность, выберите DHT22.
Сравнение DHT11 и DHT22
DHT11
- Питание: 3–5 В, максимальный ток 2,5 мА.
- Влажность: 20–80%, точность ±5%.
- Температура: 0–50°C, точность ±2°C.
- Обновление: 1 Гц, то есть раз в секунду.
- Размер: 15,5 × 12 × 5,5 мм; 4 вывода с шагом 0,1 дюйма.
DHT22
- Питание: 3–5 В, максимальный ток 2,5 мА.
- Влажность: 0–100%, точность ±5%.
- Температура: −40…80°C, точность ±0,5°C.
- Обновление: 0,5 Гц, то есть раз в две секунды.
- Размер: 15,1 × 25 × 7,7 мм; 4 вывода с шагом 0,1 дюйма.
Данные выводятся на LCD 16×2 с интерфейсом I2C. Сначала определите адрес дисплея: обычно это 0x27 или 0x3F.
Подключение DHT11/DHT22
| Вывод датчика | Arduino Uno |
|---|---|
| GND | GND |
| 5V | 5V |
| DATA | Digital 7 |
Подключение LCD I2C
| Вывод LCD | Arduino Uno |
|---|---|
| GND | GND |
| 5V | 5V |
| SDA | A4 |
| SCL | A5 |
Схема и программный код ниже рассчитаны на эти подключения.
//Librarii DHT si LCD
#include <dht.h>
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define BACKLIGHT_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7
LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
dht DHT; //Declaram DHT
#define DHT11_PIN 7 //Declaram pinul la care este conectat DHT
void setup(){
Serial.begin(9600);
lcd.begin (16,2);
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
lcd.setBacklight(HIGH);
lcd.home ();
}
void loop()
{
lcd.clear();
lcd.setCursor(0,0);
int chk = DHT.read11(DHT11_PIN); //Citirea datelor de la senzor
lcd.print("Temp: ");
lcd.print(DHT.temperature); //Afisarea temperaturii in grade celsius
lcd.print(" C");
lcd.setCursor(0,1);
lcd.print("Humidity: ");
lcd.println(DHT.humidity); //Afisarea umiditatii in %
lcd.print(" %");
delay(1000); //Refreshing every 1s
}
Схема проекта
Скачать библиотеку ↓