Рубрики
Проекты на STM32

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

Датчик DHT11 предназначен для измерения температуры и влажности как на отрытой местности, так и в закрытых помещениях. Диапазон измерений температуры у него составляет от 0°C до 50°C с точностью 1°C. Также он способен измерять влажность в диапазоне от 20% до 90% с точностью 1°C.

В данной статье мы рассмотрим подключение датчика температуры и влажности DHT11 к плате STM32F103C8, известной также под названием STM32 Blue Pill («синяя таблетка»).

Ранее на нашем сайте мы рассматривали применение датчика DHT11 в следующих проектах:

Необходимые компоненты

  1. Отладочная плата STM32F103C8 (STM32 Blue Pill) (купить на AliExpress).
  2. Датчик температуры и влажности DHT11 (купить на AliExpress).
  3. ЖК дисплей 16×2 с модулем I2C (купить на AliExpress).
  4. Макетная плата.
  5. Соединительные провода.

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

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

Технические характеристики датчика DHT11:

  • рабочее напряжение: от 3.5V до 5.5V;
  • рабочий ток: 0.3mA;
  • ток в режиме ожидания: 60uA;
  • диапазон измеряемых температур: от 0°C до 50°C;
  • диапазон измеряемых значений влажности: 20% до 90%;
  • разрешающая способность измерения температуры и влажности: 16 бит;
  • точность: ±1°C и ±1%.

Наименование контакта Назначение контакта
Vcc напряжение питания от 3.5V до 5.5V
Data контакт данных, через него осуществляется передача значений температуры и влажности
Ground общий провод (земля)

DHT11 — один из самых простых по подключению к микроконтроллерам датчиков.

Схема проекта

Схема подключения датчика DHT11 к плате STM32F103C8 (Blue Pill) представлена на следующем рисунке.

ЖК дисплей в нашем проекте подключен к плате STM32F103C8 с помощью модуля I2C – это значительно сокращает количество контактов, используемых для подключения ЖК дисплея. Если у вас нет подобного модуля I2C, то вы можете подключить ЖК дисплей 16х2 к плате STM32F103C8 обычным способом, без использования данного модуля.

Схема соединений между модулем I2C и платой STM32F103C8 приведена в следующей таблице.

Модуль I2C Плата STM32F103C8
VCC 5V
GND GND
SDA PB7
SCL PB6

Схема соединений между датчиком DHT11 и платой STM32F103C8 приведена в следующей таблице.

Датчик DHT11 Плата STM32F103C8
VCC 5V
GND GND
Data PA1

Внешний вид собранной конструкции проекта приведен на следующем рисунке.

Подготовка Arduino IDE для программирования платы STM32F103C8

Поскольку для подключения ЖК дисплея 16х2 к плате STM32F103C8 мы используем модуль I2C нам необходимо сначала определить I2C адрес данного модуля. В нашем проекте контакты SCL и SDA модуля I2C подключены к контактам PB6 и PB7 платы STM32F103C8.

Чтобы определить I2C адрес модуля нам необходимо просканировать доступные адреса. Для этого выполните следующую последовательность шагов:

1. Удостоверьтесь что в вашей Arduino IDE установлен пакет для работы с платой STM32. Как установить данный пакет можно прочитать в данной статье.

2. Во время установки данного пакета автоматически установится и библиотека wire.

3. Для сканирования доступных I2C адресов запустите в Arduino IDE пример, расположенный в пункте меню: Files->Examples->Wire->I2C scanner wire. Но перед этим измените тип платы в Arduino IDE, выбрав пункт меню Tools->Board->Generic STM32F103C8 Series.

4. После этого загрузите код примера в плату STM32F103C8 и откройте окно монитора последовательной связи (serial monitor).

Запишите определенный таким образом I2C адрес модуля – в нашем случае он равен 0x27.

Далее нам необходимо скачать библиотеку для подключения ЖК дисплея по интерфейсу I2C. Скачать ее можно по следующей ссылке. Далее ее можно подключить в Arduino IDE используя пункт меню sketch->import library.

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

Объяснение программы для платы STM32

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Первым делом в программе подключим используемые библиотеки: Wire.h для работы с интерфейсом I2C, LiquidCrystal_I2C.h для подключения ЖК дисплея 16х2 к плате STM32 по интерфейсу I2C и DHT.h для работы с датчиком DHT11.

Далее дадим осмысленное название контакту PA1 платы STM32, к которому подключен датчик DHT11.

Затем укажем тип датчика DHT – в нашем случае это DHT11.

Далее создадим объект для работы с ЖК дисплеем 16×2 с указанием его I2C адреса – 0x27.

Также создадим объект для работы с датчиком DHT11.

Затем в функции void setup() инициализируем ЖК дисплей.

И запустим в работу датчик DHT11.

Включим подсветку ЖК дисплея, напечатаем на его экране приветственное сообщение и очистим его экран после задержки в 3 секунды.

Затем в функции void loop() будем непрерывно считывать с датчика DHT11 значения температуры и влажности и сохранять их в соответствующих переменных.

И, наконец, выведем считанные значения температуры и влажности на экран ЖК дисплея 16х2.

Тестирование работы проекта

Когда аппаратная часть проекта будет готова загрузите код программы в плату STM32 – после этого вы должны увидеть как на экране ЖК дисплея отобразится приветственное сообщение.

Если на дисплее ничего не отображается, проверьте с помощью потенциометра на обратной стороне модуля I2C контрастность дисплея – не установлена ли она на минимум.

Протестировать работу датчика DHT11 можно с помощью кондиционера как показано на следующем рисунке.

Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Исходный код программы (скетча)

Видео, демонстрирующее работу проекта

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *