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

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

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

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

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

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

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

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

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

Датчик 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 запитываются от +5V, то для их питания мы используем соответствующий контакт 5V платы Raspberry Pi. К выходному контакту датчика DHT11 подключен подтягивающий резистор 1 кОм, если вы используете датчик в виде модуля, то вам этот резистор будет не нужен (он уже есть в составе модуля датчика).

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

Схема расположения контактов ввода/вывода платы 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

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

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

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