Температура влажности Arduino DTH22 с ЖК-дисплеем I2C 16x2
Компоненты и расходные материалы
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 1 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 1 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 1 |
Об этом проекте
В течение двух лет у моего сына (7) было желание завести домашнюю змею. Наконец купил парочку змей с террариумом. Чтобы змеи находились в комфортных условиях, нам необходимо следить за температурой и влажностью.
Поэтому мы купили аналоговый датчик влажности / температуры и обнаружили, что поддерживать оба уровня на хорошем уровне непросто. Поскольку я очень хотел начать проект с моей недавно купленной Arduino Uno, мне показалось хорошей идеей использовать датчик влажности / температуры и позволить Arduino автоматизировать температуру и влажность в террариуме. Поэтому я купил датчик влажности / температуры DTH22 и ЖК-дисплей I2C 16x2 и попробовал.
Это руководство является основой этого проекта. В этом руководстве нет никакой автоматизации. Просто использование DTH22 и ЖК-дисплея I2C.
Я видел другой учебник для этой цели, но в нем использовался ЖК-дисплей без I2C. Если у вас нет I2C, подключенного к ЖК-дисплею, ознакомьтесь с этим руководством от ThothLoki
Требуется оборудование
- Любой 5V Arduino (в данном случае Arduino Uno R3)
- Датчик влажности / температуры DTH22
- ЖК-дисплей 16x2 с установленным на нем разъемом I2C.
- Макет
- 6 перемычек типа папа / папа
- 4 перемычки "папа / мама".
Необходимые библиотеки
- Adafruit_Sensor
- DHT
- NewliquidCrystal
Прежде чем мы начнем
Мне нравится ЖК-дисплей 16x2 с установленным I2C, потому что он избавляет вас от проблем, связанных со всеми контактами, которые могут или не должны быть подключены к Arduino. Вам нужно всего 4 перемычки и все.
Дисплей имеет адрес I2C для приема команд или отправки сообщений. Обратной стороной является то, что вам нужно выяснить, какой адрес он использует, прежде чем продолжить. Я не буду вдаваться в подробности здесь, но на форуме Arduino вы можете прочитать все об этом.
В моем случае наше устройство использует адрес 0x3F , если ваше устройство также использует этот адрес, вам повезло, вы можете просто скопировать наш код.
Подключите макетную плату к Arduino
Датчик DHT22, а также ЖК-дисплей 1602 I2C используют источник питания 5 В. Поэтому я подключил вывод 5V на моем Arduino к красному + ряду на макете, а землю моего Arduino - к синему - на макете. Поскольку я хочу, чтобы цвета синхронизировались, в моей схеме я буду использовать красные кабели для 5 В и синие кабели для заземления. В реальной жизни я не использовал синий вместо земли, но белый ... я полагаю, я слишком много играл с автомобильной электроникой.
Я буду использовать желтый кабель для передачи данных, оранжевый кабель для SDA и серый кабель для SCL. Буква два будет на I2C.
Добавление датчика DHT22
Посмотрим на распиновку. Датчик DHT22 (как и DHT11) имеет четыре контакта. Я кладу датчик DHT22 на макетную плату лицевой стороной наружу. Таким образом, первый вывод (питание 5 В) будет справа (см. Схему).
Я использую небольшой красный соединительный кабель для подключения 5V VCC к 5V (+) ряду на макетной плате. И небольшая синяя перемычка для подключения заземления к ряду заземления (-) на макетной плате. Я взял длинный желтый кабель, чтобы подключить второй контакт, контакт данных, к Arduino. Поскольку это цифровые данные, я подключил их к порту данных 4 на Arduino. В других примерах вы, вероятно, увидите людей, использующих порт 7, оба будут работать. Я использовал порт 4, потому что я ожидал, что буду использовать больше портов данных, и хотел сохранить порт 7 на всякий случай. Вы также увидите это на схеме.

Добавление ЖК-дисплея 16x2 I2C
ЖК-дисплей 16x2 I2C также имеет 4 контакта. Глядя на картинку ниже слева направо:
- Земля
- VCC (5 В)
- ПДД
- SCL
Подключите первый (левый) контакт к заземляющему (-) ряду на макетной плате. Подключите второй контакт к красному ряду 5 В (+) на макетной плате. Я использую Arduino Uno, поэтому у него есть соединения I2C на A4 (SDA) и A5 (SCL). Итак, я подключил третий контакт к A4, а четвертый контакт - к разъему A5 на Arduino.

Код
Помните, что для экрана у вас может быть другой адрес для подключения. Мой I2C использует адрес 0x3F (см. Раздел «Перед тем, как начать»), поэтому будьте осторожны, мой код настроен для этого адреса.
Помните о необходимых библиотеках (Adafruit_Sensor, DHT, NewliquidCrystal). Загрузите эти библиотеки, разархивируйте их и поместите в директорию библиотек вашего проекта.
Затем загрузите код в свой Arduino и проверьте влажность и температуру вашего террариума (или серверного шкафа, или холодильника, или просто вашей гостиной).
Код
- hygroThermo.ino
hygroThermo.ino C / C ++
/ * Как использовать датчик DHT-22 с датчиком температуры и влажности Arduino uno Подробнее:http://www.ardumotive.com/how-to-use-dht-22-sensor-en.html Dev:Михалис Василакис // Дата:07.01.2015 // www.ardumotive.com * /// Библиотеки # include#include #include #include // Константы # определить DHTPIN 4 // к какому выводу мы подключены # определить DHTTYPE DHT22 // DHT 22 (AM2302) DHT dht (DHTPIN, DHTTYPE); //// Инициализировать датчик DHT для нормального Arduino 16 МГц // ВСЕГДА ИСПОЛЬЗУЙТЕ ЭТО С ЖК-дисплеем I2C и адресами 0x3F # define I2C_ADDR 0x3F # 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 7LiquidCrystal_I2C lcd (I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin); // Variablesint chk; float hum; // Сохраняет значение влажности float temp; // Сохраняет значение температурыvoid setup () {Serial.begin (9600); dht.begin (); lcd.begin (16,2); lcd.setBacklightPin (BACKLIGHT_PIN, ПОЛОЖИТЕЛЬНЫЙ); lcd.setBacklight (ВЫСОКИЙ);} недействительный цикл () {задержка (2000); // Считываем данные и сохраняем их в переменных hum и temp hum =dht.readHumidity (); temp =dht.readTemperature (); // Вывести значения температуры и влажности на серийный монитор Serial.print ("Humidity:"); Serial.print (гул); Serial.print ("%, температура:"); Serial.print (темп); Serial.println («Цельсия»); lcd.clear (); lcd.setCursor (0,0); lcd.print ("Температура:"); lcd.print (темп); lcd.print (""); lcd.print ((char) 223); lcd.print ("C"); lcd.setCursor (0,1); lcd.print ("Гуд:"); lcd.print (гул); lcd.print ("%"); задержка (2000); // Задержка 2 секунды}
Схема
Схема Fritzing schema_UcHE1qRu2t.fzz
Производственный процесс
- Связь Arduino I2C с Raspi 2 WIOT
- ЖК-панель с Arduino для симулятора полета
- Захват капель воды с помощью Arduino
- Регистратор данных температуры и влажности
- Игра с дисплеем Nextion
- Отображение изображения на ЖК-экране TFT с помощью Arduino UNO!
- BME280 Температура, влажность и давление на дисплее Nextion
- Осциллограф 10 Гц-50 кГц для самостоятельного изготовления на ЖК-дисплее 128x64
- u-blox LEA-6H 02 GPS-модуль с Arduino и Python
- Простой будильник с DS1302 RTC