Измерение температуры и влажности с помощью DHT11 и Arduino (обучение работе с Proteus)
Данная статья написана специально для обучения работе с симулятором Proteus и предназначена для понимания того, как использовать готовые Arduino-скетчи в виртуальной среде без подключения реального оборудования. В качестве примера используется датчик DHT11 и LCD-дисплей 16×2, что позволяет одновременно отработать работу с датчиками, индикацией и загрузкой прошивки в Proteus.
Проект подходит как для новичков, так и для тех, кто уже знаком с Arduino, но только начинает осваивать симуляцию микроконтроллеров.
Назначение проекта
В рамках данного проекта Arduino:
- считывает температуру и влажность с датчика DHT11;
- отображает значения на LCD-дисплее 16×2;
- дублирует данные в Serial Monitor;
- работает в симуляции Proteus без физической платы.
Необходимые компоненты
- Arduino UNO;
- Датчик температуры и влажности DHT11;
- LCD-дисплей 16×2 (HD44780-совместимый);
- Резистор 10 кОм (подтяжка линии DATA датчика);
- Proteus 8 или 9 с установленной Arduino-библиотекой.
Подключение DHT11
Подключение датчика выполняется по стандартной схеме:
- VCC (pin 1) → 5V Arduino;
- DATA (pin 2) → цифровой пин 8 Arduino;
- GND (pin 4) → GND Arduino;
- Резистор 10 кОм между VCC и DATA.
Подключение LCD 16×2
LCD-дисплей используется в 4-битном режиме:
- RS → пин 7;
- E → пин 6;
- D4 → пин 5;
- D5 → пин 4;
- D6 → пин 3;
- D7 → пин 2;
Принцип работы программы
В скетче используются библиотеки DHT.h и LiquidCrystal.h. После запуска:
- инициализируется последовательный порт;
- настраивается LCD-дисплей 16×2;
- инициализируется датчик DHT11.
В основном цикле программа считывает температуру и влажность, проверяет корректность данных и выводит значения на дисплей и в Serial Monitor. Обновление происходит каждые 500 мс, что соответствует возможностям датчика DHT11.
Arduino-скетч
#include "DHT.h"
#include <LiquidCrystal.h>
#define DHTPIN 8
#define DHTTYPE DHT11
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println("DHT11 test!");
lcd.begin(16, 2);
dht.begin();
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(t) || isnan(h)) {
Serial.println("Failed to read from DHT");
} else {
lcd.setCursor(0, 0);
lcd.print("Temp. = ");
lcd.print(t);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Hum% = ");
lcd.print(h);
lcd.print(" %");
Serial.print("Hum%: ");
Serial.print(h);
Serial.print(" % ");
Serial.print("Temp.: ");
Serial.print(t);
Serial.println(" C");
}
delay(500);
}
Запуск проекта в Proteus
Для запуска проекта в Proteus выполните следующие шаги:
- распакуйте архив с проектом;
- откройте файл .pdsprj через меню File → Open Project;
- убедитесь, что в свойствах Arduino указан путь к .hex файлу;
- нажмите кнопку Run Simulation;
- наблюдайте показания на LCD-дисплее.
Важно: Arduino к компьютеру подключать не требуется — симуляция полностью выполняется внутри Proteus.
Файлы проекта
В конце статьи доступен архив, в котором находятся:
- .ino — исходный код Arduino;
- .hex — скомпилированная прошивка для Proteus;
- .pdsprj — проект Proteus.
Данный пример рекомендуется использовать как основу для дальнейших экспериментов с датчиками и индикацией в Proteus.
<-- Блок для переноса на другие страницы -->Если что-то не работает
Если вы только начинаете работу с Proteus, не понимаете отдельные шаги или у вас возникают ошибки при запуске проекта, рекомендуем сначала ознакомиться с базовым уроком.
В нём подробно разобран первый проект в Proteus —
от создания проекта до запуска симуляции на примере мигания светодиода:
Первый проект в Proteus — мигание светодиода