Влажность и температура - общие параметры для измерения условий окружающей среды. В этом проекте на базе Arduino мы собираемся измерить температуру и влажность окружающей среды и отобразить их на ЖК-экране 16x2. Комбинированный датчик температуры и влажности DHT11 используется с Arduino uno для разработки этого проекта измерения влажности с использованием шкалы Цельсия и процентной шкалы. В одном из моих предыдущих проектов я также разработал цифровой термометр с датчиком температуры LM35.
Этот проект состоит из трех разделов - влажность и температура измеряются с помощью датчика влажности и температуры DHT11. Второй раздел считывает выходные данные модуля DHTsensor и извлекает значения температуры и влажности в подходящее число в процентах и шкале Цельсия. А третья часть системы отображает влажность и температуру на ЖК-дисплее.
Работа этого проекта основана на однопроводной последовательной связи. Сначала arduino отправляет сигнал запуска модулю DHT, а затем DHT дает ответный сигнал, содержащий данные о температуре и влажности. Arduino собирает и извлекает из двух частей, одна - влажность, вторая - температура, а затем отправляет их на ЖК-дисплей 16x2.
В этом проекте мы использовали модуль датчика, а именно DHT11. Этот модуль имеет комплекс влажности и температуры с калиброванным цифровым выходным сигналом. Это означает, что модуль датчика DHT11 представляет собой комбинированный модуль для измерения влажности и температуры, который выдает калиброванный цифровой выходной сигнал. DHT11 дает очень точное значение влажности и температуры и обеспечивает высокую надежность и долгосрочную стабильность. Этот датчик имеет компонент измерения влажности резистивного типа и компонент измерения температуры типа NTC со встроенным 8-битным микроконтроллером, который имеет быстрый отклик и экономичен и доступен в 4-контактном однорядном корпусе.
Модуль DHT11 работает по последовательной связи, то есть по однопроводной связи. Этот модуль отправляет данные в виде последовательности импульсов за определенный период времени. Перед отправкой данных в Arduino требуется некоторая команда инициализации с временной задержкой. И время всего процесса составляет около 4 мсек. Полная передача данных 40-битная, и формат данных этого процесса приведен ниже:
8-битные интегральные данные RH + 8-битные десятичные данные RH + 8-битные интегральные данные T + 8-битные десятичные данные T + 8-битная контрольная сумма.
Полный процесс
Прежде всего, arduino отправляет сигнал пуска с высокого на низкий на DHT11 с задержкой 18 мкс, чтобы гарантировать обнаружение DHT. А затем arduino подтягивает линию данных и ждет ответа DHT в течение 20-40 мкс. Как только DHT обнаруживает сигнал запуска, он отправляет ответный сигнал низкого уровня напряжения на Arduino с временной задержкой около 80 мкс. А затем контроллер DHT подключает линию данных и удерживает ее в течение 80 мкс для организации передачи данных DHT.
Низкое напряжение на шине данных означает, что DHT11 отправляет ответный сигнал. Как только это будет сделано, DHT снова выполняет подтягивание линии данных на 80 мкс для подготовки передачи данных.
Формат данных, который DHT отправляет в Arduino для каждого бита, начинается с уровня низкого напряжения 50 мкс, а длина сигнала высокого уровня напряжения определяет, равен ли бит данных «0» или «1».
Одна важная вещь - убедиться, что значение подтягивающего резистора, потому что, если мы размещаем датчик DHT на расстоянии <20 метров, рекомендуется подтягивающий резистор 5 кОм. Если вы размещаете DHT на расстоянии более 20 метров, используйте подтягивающий резистор соответствующего номинала.
Принципиальная схема и объяснение
Для отображения температуры и влажности используется жидкокристаллический дисплей, который напрямую подключен к Arduino в 4-битном режиме. Контакты ЖК-дисплея, а именно RS, EN, D4, D5, D6 и D7, подключены к цифровым контактам Arduino 2, 3, 4, 5, 6 и 7. А модуль датчика DHT11 также подключен к цифровому контакту 12 Arduino с помощью Подтягивающий резистор 5 кОм.
Описание программирования
При программировании мы будем использовать готовые библиотеки для датчика DHT11 и модуля ЖК-дисплея.
Затем мы определили контакты для ЖК-дисплея и датчика DHT и инициализировали все настройки. Затем в цикле, используя функцию dht, считывает датчик DHT, а затем, используя некоторые функции dht, мы извлекаем влажность и температуру и отображаем их на ЖК-дисплее.
Здесь символ градуса создается с использованием метода пользовательского символа.