Сенсор температуры и влажности на DHT11 и выводом на LCD 1602A V1.0

Технические параметры:
• Напряжение питания: 3-5 В
• Определяемая влажность: 20-80% ± 5%
• Определяемая температура: 0-60º ± 2%
• Частота опроса: ≤ 1 Гц
• Размеры: 15.5 x 12 x 5.5 мм
• Определяемая влажность: 20-80% ± 5%
• Определяемая температура: 0-60º ± 2%
• Частота опроса: ≤ 1 Гц
• Размеры: 15.5 x 12 x 5.5 мм
lib/dht
в директорию libraries
своего Arduino IDE.)
Экран LCD 1602A V1.0:
• Напряжение питания: 3-5В
• Разрешение: 16 символов х 2 строки
• Количество контактов: 16
• Язык: Английский
• Входные данные: 4-бит или 8 бит интерфейс
Подключение:
Экран LCD 1602A V1.0:
Вывод Обозначение Назначение вывода
1 GND Общий вывод (0В)
2 UCC Напряжение питания (5В/3В)
3 Uо Управление контрастностью
4 A0 Адресный сигнал — выбор между передачей данных и команд управления
5 R/W Выбор режима записи или чтения
6 E Разрешение обращений к индикатору (а также строб данных)
7 DB0 Шина данных (8 ми битный режим)(младший бит в 8 ми битном режиме)
8 DB1 Шина данных (8 ми битный режим)
9 DB2 Шина данных (8 ми битный режим)
10 DB3 Шина данных (8 ми битный режим)
11 DB4 Шина данных (8 ми и 4 х битные режимы)(младший бит в 4 х битном режиме)
12 DB5 Шина данных (8 ми и 4 х битные режимы)
13 DB6 Шина данных (8 ми и 4 х битные режимы)
14 DB7 Шина данных (8 ми и 4 х битные режимы) (старший бит)
15 +LED + питания подсветки
16 –LED – питания подсветки
Моё подключение к Arduino:
LCD 1 - Земля
LCD 2 - Питание +5В
LCD 3 - Земля
LCD 4 - Arduino 4
LCD 5 - Земля(Режим записи)
LCD 6 - Arduino 5
LCD 11 - Arduino 10
LCD 12 - Arduino 11
LCD 13 - Arduino 12
LCD 14 - Arduino 13
LCD 15 - Питание +5В
LCD 16 - Земля
Моё подключение к Arduino:
LCD 1 - Земля
LCD 2 - Питание +5В
LCD 3 - Земля
LCD 4 - Arduino 4
LCD 5 - Земля(Режим записи)
LCD 6 - Arduino 5
LCD 11 - Arduino 10
LCD 12 - Arduino 11
LCD 13 - Arduino 12
LCD 14 - Arduino 13
LCD 15 - Питание +5В
LCD 16 - Земля
Датчик DHT11:
Подключается к любом аналоговому порту. (A0, Питание +5В, Земля)
1. Микроконтроллер говорит о том, что хочет считать показания. Для этого он устанавливает сигнальную линию в 0 на некоторое время, а затем устанавливает её в 1
2. Сенсор подтверждает готовность отдать данные. Для этого он аналогично сначала устанавливает сигнальную линию в 0, затем в 1
3. После этого сенсор передаёт последовательность 0 и 1, последовательно формирующих 5 байт (40 бит). В первых двух байтах передаётся температура, во третьем-четвёртом — влажность, в пятом — контрольная сумма, чтобы микроконтроллер смог убедиться в отсутствии ошибок считывания
Благодаря тому, что сенсор делает измерения только по запросу, достигается энергоэффективность: пока общения нет, датчик потребляет очень небольшой ток.
Скетч загружаемый на Arduino:
#include <LiquidCrystal.h> //Загрузка библиотеки для LCD экрана
#include <dht.h> //Загрузка библиотеки для DHT11/DHT22 датчика
DHT sensor = DHT(); //Создаём объект-сенсор
/*
Инициализирует объект-экран, передаём использованные
для подключения контакты на Arduino порядке:
RS, E, DB5, DB6, DB7, DB8
**/
LiquidCrystal lcd(4,5,10,11,12,13);
void setup(){
lcd.begin(16,2); //Устанавливаем размер экрана(символов, строк)
sensor.attach(A0); //методом attach объявляем к какому контакту подключен сенсор.
lcd.print("Loading..."); //Вывод сообщения на экран
delay(5000); // Ждем 5 секунд до готовности сенсора к работе
lcd.clear(); // Отчищаем экран
}
void loop(){
sensor.update(); // метод update заставляет сенсор выдать текущие измерения
switch (sensor.getLastError())
{
case DHT_ERROR_OK:
char msg[128];
lcd.clear(); //Отчистка экрана для новых показаний
lcd.print("HUM:"); //Вывод надписи
lcd.setCursor(5, 0); // Установка курсора в 6 клетку 1 строки
lcd.print(sensor.getHumidityInt()); //Считывание и вывод влажности
lcd.print("%");
lcd.setCursor(0, 1);
lcd.print("TEMP:");
lcd.setCursor(5, 1);
lcd.print(sensor.getTemperatureInt());//Считывание и вывод температуры
lcd.print("C");
break;
case DHT_ERROR_START_FAILED_1:
lcd.clear();
lcd.print("start failed 1");//Возникает когда нет соединения с сенсором
break;
case DHT_ERROR_START_FAILED_2:
lcd.clear();
lcd.print("start failed 2");//Возникает когда не может связаться с сенсором(не загруженна библиотека dht)
break;
case DHT_ERROR_READ_TIMEOUT:
/*
Периодически возникающая ошибка чтения с датчика (Error: read timeout),
как я понял, возникает она у всех по разному и с разными интервалами
скорей всего это зависит от самого датчика.
**/
lcd.setCursor(15,0); // Отображает в верхнем углу дисплея Х, чтобы
lcd.print("X"); // на экране сохранялись предыдущие показания
break;
case DHT_ERROR_CHECKSUM_FAILURE:
lcd.clear();
lcd.print("checksum error");// Неверная контрольная сумма.
break;
}
delay(4000); //Время обновления показаний (ниже 2-3сек сенсор работает с ошибками)
}
Комментариев нет:
Отправить комментарий