цифровая электроника
вычислительная техника
встраиваемые системы

 
» » » STM32F103C8 и датчик температуры и влажности DHT11: принцип работы, схема подключения, код

STM32F103C8 и датчик температуры и влажности DHT11: принцип работы, схема подключения, код

Автор: Mike(admin) от 5-07-2019, 05:35

DHT11 – это датчик температуры и влажности, который, как следует из названия, используется для измерения температуры и влажности воздуха в конкретной среде или в замкнутом пространстве. Датчик обычно используется для мониторинга параметров окружающей среды во многих приложениях, таких как сельское хозяйство, пищевая промышленность, больницы, автомобили, метеостанции и т. д.


STM32F103C8 и датчик температуры и влажности DHT11

Датчик может измерять температуру от 0 °C до 50 °C с точностью до 1 °C. Он обычно используется в контролируемых средах, таких как системы вентиляции тепла, камеры температуры и т. д. для контроля температуры и принятия корректирующих мер. Диапазон измерения влажности составляет от 20% до 90% с точностью до 1%. Влажность указывает на количество водяного пара, присутствующего в воздухе. Значение влажности должно поддерживаться в контролируемом диапазоне во многих случаях, например, при производстве и хранении чайных порошков в помещении должна поддерживаться правильная влажность, иначе чай потеряет свой вкус и запах. Уровень влажности в жилых помещениях также должен поддерживаться в комфортных пределах. Идеальное значение влажности для максимального комфорта составляет от 50% до 65%. В данном примере мы узнаем, как связать популярный датчик температуры и влажности DHT11 с микроконтроллером STM32.


Прежде чем начать процедуру сопряжения датчика с микроконтроллером, давайте немного узнаем о датчике DHT11. Как обсуждалось ранее, датчик DHT11 используется для измерения температуры и влажности. Датчик оснащен встроенным NTC-сенсором для измерения температуры. Он имеет встроенный 8-битный микроконтроллер для вывода значений температуры и влажности в виде последовательных данных по однопроводному протоколу. Это означает, что датчик имеет только один вывод данных, через который можно считывать значения температуры и влажности, тем самым сохраняя выводы со стороны микроконтроллера. Датчик также откалиброван на заводе-изготовителе и, следовательно, легко взаимодействует с другими микроконтроллерами. Его внешний вид:


DHT11

Vcc – это питание от 3,5 до 5,5 В, Data – линия вывода температуры и влажности, GND –заземление.


Полная принципиальная схема подключения DHT11 к микроконтроллеру STM32 приведена далее.


STM32F103C8 и датчик температуры и влажности DHT11

Как вы можете видеть, мы использовали интерфейсный модуль I2C для подключения ЖК-модуля к STM32. Это делает соединения простыми и еще больше уменьшает количество выводов, используемых на стороне контроллера. Однако, если у вас нет этого модуля, вы также можете напрямую подключить ЖК-дисплей STM32, но затратив больше выводов. Если у вас есть интерфейсный модуль, то принцип соединений между последовательным интерфейсным модулем I2C (с ЖК-дисплеем 16X2) и STM32F103C8 следующий:


VCC 5V
GND GND
SDA PB7
SCL PB6

Аналогичным образом схема соединений между STM32F103C8 и датчиком DHT11 следующая:


VCC 5V
GND GND
Data PA1

Вся установка может питаться от USB-порта платы STM32 от ноутбука или какого-либо другого устройства. Теперь, когда наше оборудование готово, давайте перейдем к части программирования, что будем осуществлять с помощью среды Arduino IDE.


Мы должны написать программу для считывания значения температуры и влажности с датчика DHT11 и отображения его на ЖК-модуле. Здесь ЖК-дисплей подключен через адаптер I2C, поэтому мы сначала найдем адрес I2C этого адаптера для связи с ЖК-дисплеем.


Из принципиальной схемы видно, что выводы PBM и PB7 I2C STM32F103C8 связаны с выводами SCL и SDA модуля последовательного интерфейса I2C. Чтобы найти адрес модуля последовательного интерфейса I2C, нам нужно найти доступные адреса. Сначала проверьте, установлен ли пакет STM32 для Arduino IDE. Программа сканирования подключенного устройства I2C представлена в примерах (В Arduino IDE: Files-Examples-Wire-I2C scanner wire). Перед этим выберите плату в Tools- Board-Generic STM32F103C8 Series, как показано ниже.


STM32F103C8 и датчик температуры и влажности DHT11

После этого загрузите код на STM32F103C8 и откройте последовательный монитор.


STM32F103C8 и датчик температуры и влажности DHT11

Запишите адрес I2C ЖК-дисплея, в данном случае это 0x27.


Теперь, когда мы знаем адрес I2C, нам нужно загрузить библиотеку для связи с ЖК-дисплеем через I2C. Библиотеку ЖК-дисплея I2C можно скачать по этой ссылке: https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library. После загрузки zip-файла установите библиотеку I2C LCD в Arduino IDE с помощью sketch-import library.Эту библиотеку также можно использовать с платами Arduino для связи с модулями ЖК-дисплея I2C.


Аналогично, для считывания последовательных данных с датчика DHT11 мы будем использовать библиотеку DHT11. Загрузите библиотеку в виде файла ZIP (https://github.com/adafruit/DHT-sensor-library) и после загрузки установите библиотеку DHT в IDE Arduino с помощью sketch-import. Опять же, эта же библиотека может быть использована с платами Arduino.


Предназначенный для связи STM32 и DHT11 код программы с комментариями следующий:



#include <Wire.h>      // Библиотека для использования I2C
#include <LiquidCrystal_I2C.h>  // Библиотека для использования ЖК-дисплея с I2C
#include <DHT.h>                    // Библиотека для использования датчика DHT
#define DHTPIN PA1 
#define DHTTYPE DHT11
LiquidCrystal_I2C lcd(0x27, 16, 2);  // инициализировать объект lcd для класса LiquidCrystal_I2C с адресом I2C ЖК-дисплея типа 0x27 и 16x2
DHT dht(DHTPIN, DHTTYPE);     // инициализировать объект dht для класса DHT с выводом DHT с STM32 и типом DHT как DHT11
void setup()
{
  // initialize the LCD
  lcd.begin();
  dht.begin();          // Начинает получать значения температуры и влажности                       
  lcd.backlight();      // Включим подсветку и распечатаем приветственное сообщение.
  lcd.setCursor(0,0);
  lcd.print("HELLO");
  lcd.setCursor(0,1);
  lcd.print("DHT11 with STM32");
  delay(3000);
  lcd.clear();
}
void loop()
{
  float h = dht.readHumidity();       // Получаем значение влажности
  float t = dht.readTemperature();    // Получаем значение температуры
  lcd.setCursor(0,0);
  lcd.print("Temp: ");
  lcd.print(t);
  lcd.print(" C");
  lcd.setCursor(0,1);
  lcd.print("Humid: ");
  lcd.print(h);
  lcd.print(" %");
}

Как только ваше оборудование и код будут готовы, просто загрузите программу для вашего оборудования, и вы должны заметить, что ваш ЖК-дисплей отображает экран приветствия, а затем значения температуры и влажности в реальном времени, как показано ниже.


STM32F103C8 и датчик температуры и влажности DHT11

Если на вашем дисплее ничего не отображается, вы можете проверить настройку потенциометра контрастности на задней панели модуля I2C. Можно попытаться варьировать свою комнатную температуру с помощью кондиционера, и в результате можно обнаружить, что значение датчика также соответственно будет меняться. У кондиционера также есть возможность измерять комнатную температуру, и, как вы можете видеть на изображении ниже, пульт отображает температуру в помещении 27 °C, а наш датчик также отображает 27,3 °C на ЖК-дисплее.


STM32F103C8 и датчик температуры и влажности DHT11



© digitrode.ru


Теги: STM32, DHT11, датчик температуры, датчик влажности



   Благодарим Вас за интерес к информационному проекту digitrode.ru.
   Если Вы хотите, чтобы интересные и полезные материалы выходили чаще, и было меньше рекламы,
   Вы можее поддержать наш проект, пожертвовав любую сумму на его развитие.


Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий