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

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

Внешний вид подключения датчика температуры и влажности DHT11 к Raspberry Pi

В данной статье мы рассмотрим подключение датчика DHT11 к плате Raspberry Pi. Измеренные значения температуры и влажности мы будем отображать на экране ЖК дисплея 16x2. Ранее на нашем сайте мы уже использовали датчик DHT11 для создания метеостанции на основе Raspberry Pi. Также мы его подключали и к плате Arduino. Дополнительно вы можете посмотреть все проекты на нашем сайте, в которых был использован датчик DHT11.

Краткий обзор датчика DHT11

Датчик DHT11 может измерять температуру и относительную влажность (RH) окружающего воздуха и обладает следующими техническими характеристиками:

  • диапазон измерения температуры: 0-50°C;
  • точность измерения температуры: ±2 °C;
  • диапазон измерения влажности: 20-90% RH;
  • точность измерения влажности: ±5 %.

Обратите внимание на то, что относительная влажность не совпадает с "реальной" влажностью. Относительная влажность измеряет содержание воды в воздухе относительно температуры воздуха.

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

Внешний вид датчика DHT11

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

Установка библиотеки Raspberry Pi для работы с ЖК дисплеем

В нашем проекте мы измеренные значения температуры и влажности будем отображать на экране ЖК дисплея 16х2. Соответствующая библиотека для Raspberry Pi от компании Adafruit позволит нам достаточно просто взаимодействовать с ЖК дисплеем в 4-битном режиме. Поэтому откройте в Raspberry Pi окно терминала и выполните следующую последовательность шагов для установки указанной библиотеки.

Шаг 1. Установите git на вашу Raspberry Pi с помощью следующей ниже приведенной команды. Git позволяет клонировать любые файлы с репозитория Github (нужная нам библиотека находится там) и использовать их потом в вашей плате.

Шаг 2. Клонируйте нужную нам библиотеку с GitHub с помощью инструмента git.

Шаг 3. Смените каталог на тот, в который вы клонировали библиотеку.

Шаг 4. Внутри этого каталога будет установочный файл библиотеки с названием setup.py – его необходимо запустить на выполнение чтобы установить библиотеку.

Установка библиотеки Raspberry Pi для работы с датчиком DHT11

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

Библиотека DHT11 от компании Adafruit может быть использована для работы с датчиками DHT11, DHT22 и некоторыми другими датчиками температуры, работающими по одному проводу. Процедура для установки этой библиотеки аналогична той, которую мы использовали для установки библиотеки для работы с ЖК дисплеем. Отличие будет только в ссылке на GitHub для скачивания библиотеки, в этом случае необходимая команда будет выглядеть следующим образом:

После этого используйте следующую последовательность команд:

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

Схема подключения датчика температуры и влажности DHT11 к плате Raspberry Pi представлена на следующем рисунке.

Схема подключения датчика температуры и влажности DHT11 к плате Raspberry Pi

Поскольку и ЖК дисплей, и датчик DHT11 запитываются от +5V, то для их питания мы используем соответствующий контакт 5V платы Raspberry Pi. К выходному контакту датчика DHT11 подключен подтягивающий резистор 1 кОм, если вы используете датчик в виде модуля, то вам этот резистор будет не нужен (он уже есть в составе модуля датчика).

Подстроечный резистор 10 кОм подключен к контакту Vee ЖК дисплея для регулировки уровня его контрастности. Подключение остальных контактов показано на приведенной схеме. Вы можете изменить используемые в схеме контакты, но помните о том, что тогда вам будет необходимо изменить и в программе.

Схема расположения контактов ввода/вывода платы Raspberry Pi показана на следующем рисунке:

Схема расположения контактов ввода/вывода платы Raspberry Pi

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

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

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

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

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

В программе нам первым делом необходимо подключить (импортировать) используемые нами библиотеки.

Далее нам необходимо объявить используемые переменные и контакты. Переменная sensor_name у нас будет ассоциирована со значением Adafruit_DHT.DHT11 поскольку в нашем проекте мы используем датчик DHT11. К контакту GPIO 17 у нас подключен выход датчика DHT11.

Аналогичным образом мы объявим контакты, к которым подключен ЖК дисплей. В нашем проекте мы подключили его в 4-битном режиме, поэтому мы используем 4 контакта для передачи данных дисплею и 2 контакта для управления его работой. Также, если вы хотите управлять фоновой подсветкой дисплея, для этого необходимо будет подключить дополнительные контакты дисплея.

Также, если хотите, вы можете подключить ЖК дисплей к плате Raspberry Pi в 8-битном режиме, но тогда количество свободных контактов платы будет меньше.

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

После этого мы можем инициализировать ЖК дисплей с помощью следующей команды:

Вначале работы программы мы покажем на экране ЖК дисплея (на второй строчке – для этого используется символ \n) небольшое приветственное сообщение и затем после задержки 2 секунды приступим к выполнению основной программы.

Бесконечный цикл в нашей программе мы будем формировать с помощью команды:

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

Для считывания значений температуры и влажности с датчика DHT11 мы будем использовать функцию humidity, temperature = Adafruit_DHT.read_retry(sensor_name, sensor_pin). Считанные значения мы будем отображать на экране ЖК дисплея с помощью следующего фрагмента кода:

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

Запустите программу проекта (приведена в конце статьи) на выполнение. После этого на ЖК дисплее сначала должно отобразиться приветственное сообщение, а потом на нем должны начать отображаться значения температуры и влажности как показано на следующем рисунке.

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

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

Исходный код программы на Python

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

(Проголосуй первым!)
Загрузка...
28 просмотров

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

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