Измерение температуры и влажности с помощью DHT11 и Arduino (обучение работе с Proteus)

Данная статья написана специально для обучения работе с симулятором Proteus и предназначена для понимания того, как использовать готовые Arduino-скетчи в виртуальной среде без подключения реального оборудования. В качестве примера используется датчик DHT11 и LCD-дисплей 16×2, что позволяет одновременно отработать работу с датчиками, индикацией и загрузкой прошивки в Proteus.

Proteus - температура и влажность DHT11

Проект подходит как для новичков, так и для тех, кто уже знаком с 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 — мигание светодиода

📁 Скачать примеры