- Обзор датчика DHT11:
- Предварительные требования:
- Установка библиотеки Adafruit LCD на Raspberry Pi:
- Установка библиотеки Adafruit DHT11 на Raspberry Pi:
- Принципиальная электрическая схема:
- Программирование на Python для датчика DHT11:
- Измерение влажности и температуры с помощью Raspberry Pi:
Температура и влажность - самые распространенные параметры, которые отслеживаются в любой среде. Существует множество датчиков для измерения температуры и влажности, но наиболее часто используемым является DHT11 из-за его приличного диапазона измерения и точности. Он также работает с однополюсной связью и, следовательно, очень легко взаимодействует с микроконтроллерами или микропроцессорами. В этом уроке мы узнаем, как подключить популярный датчик DHT11 к Raspberry Pi и отобразить значение температуры и влажности на ЖК-экране 16x2. Мы уже использовали его для создания метеостанции IoT Raspberry Pi.
Обзор датчика DHT11:
Датчик DHT11 может измерять относительную влажность и температуру со следующими характеристиками:
Диапазон температур: 0-50 ° C Точность температуры: ± 2 ° C Диапазон влажности: 20-90% Точность влажности: ± 5%
Датчик DHT11 доступен в виде модуля или датчика. В этом руководстве мы используем датчик в модульной форме, единственная разница между ними заключается в том, что в модульной форме датчик имеет фильтрующий конденсатор и подтягивающий резистор, прикрепленные к выходному контакту датчика. Поэтому, если вы используете только датчик, убедитесь, что вы добавили эти два компонента. Также изучите взаимодействие DHT11 с Arduino.
Как работает датчик DHT11:
Датчик DHT11 имеет корпус синего или белого цвета. Внутри этого кожуха находятся два важных компонента, которые помогают нам определять относительную влажность и температуру. Первый компонент - пара электродов; электрическое сопротивление между этими двумя электродами определяется влагоудерживающей подложкой. Таким образом, измеренное сопротивление обратно пропорционально относительной влажности окружающей среды. Чем выше относительная влажность, тем ниже будет значение сопротивления, и наоборот. Также обратите внимание, что относительная влажность отличается от фактической. Относительная влажность измеряет содержание воды в воздухе относительно температуры воздуха.
Другой компонент - термистор NTC поверхностного монтажа. Термин NTC означает отрицательный температурный коэффициент, при повышении температуры значение сопротивления будет уменьшаться.
Предварительные требования:
Предполагается, что на вашем Raspberry Pi уже установлена операционная система и он может подключаться к Интернету. Если нет, перед продолжением следуйте руководству «Начало работы с Raspberry Pi».
Также предполагается, что у вас есть доступ к вашему pi либо через окна терминала, либо через другое приложение, через которое вы можете писать и выполнять программы python и использовать окно терминала.
Установка библиотеки Adafruit LCD на Raspberry Pi:
Значение температуры и влажности будет отображаться на ЖК-дисплее 16 * 2. Adafruit предоставляет нам библиотеку для простой работы с этим ЖК-дисплеем в 4-битном режиме, поэтому давайте добавим ее в наш Raspberry Pi, открыв окно терминала Pi и выполнив следующие шаги.
Шаг 1. Установите git на свой Raspberry Pi, используя следующую строку. Git позволяет клонировать любые файлы проекта на Github и использовать их на своем Raspberry pi. Наша библиотека находится на Github, поэтому нам нужно установить git, чтобы загрузить эту библиотеку в pi.
apt-get install git
Шаг 2: Следующая строка ссылается на страницу GitHub, где присутствует библиотека, просто выполните строку, чтобы клонировать файл проекта в домашний каталог Pi.
git clone git: //github.com/adafruit/Adafruit_Python_CharLCD
Шаг 3: Используйте приведенную ниже команду, чтобы изменить строку каталога, чтобы попасть в файл проекта, который мы только что загрузили. Командная строка приведена ниже
компакт-диск Adafruit_Python_CharLCD
Шаг 4: Внутри каталога будет файл с именем setup.py , мы должны установить его, чтобы установить библиотеку. Используйте следующий код для установки библиотеки
sudo python setup.py установить
То есть библиотека должна была быть успешно установлена. Теперь аналогичным образом приступим к установке библиотеки DHT, которая также принадлежит Adafruit.
Установка библиотеки Adafruit DHT11 на Raspberry Pi:
Датчик DHT11 работает по принципу однопроводной системы. Значение температуры и влажности измеряется датчиком и затем передается через выходной контакт в виде последовательных данных. Затем мы можем прочитать эти данные, используя вывод ввода-вывода на MCU / MPU. Чтобы понять, как считываются эти значения, вам придется прочитать техническое описание датчика DHT11, но пока что для простоты мы будем использовать библиотеку для общения с датчиком DHT11.
Библиотека DHT11, предоставляемая Adafruit, также может использоваться для DHT11, DHT22 и других однопроводных датчиков температуры. Процедура установки библиотеки DHT11 также аналогична той, которая используется для установки библиотеки LCD. Единственная строка, которая изменится, - это ссылка на страницу GitHub, на которой сохранена библиотека DHT.
Введите четыре командные строки одну за другой на терминале, чтобы установить библиотеку DHT.
git clone
cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py install
Как только это будет сделано, обе библиотеки будут успешно установлены на Raspberry Pi. Теперь мы можем приступить к подключению оборудования.
Принципиальная электрическая схема:
Полная принципиальная схема взаимодействия DH11 с Raspberry pi приведена ниже, она была построена с использованием Fritzing. Следуйте за соединениями и сделайте схему
И ЖК-датчик, и датчик DHT11 работают с питанием +5 В, поэтому мы используем выводы 5 В на Raspberry Pi для питания обоих. На выходном контакте датчика DHT11 используется подтягивающий резистор номиналом 1 кОм, если вы используете модуль, вы можете избежать этого резистора.
К штырю Vee ЖК-дисплея добавляется подстроечный резистор 10k для управления уровнем контрастности ЖК-дисплея. В остальном все связи довольно просты. Но обратите внимание, какие контакты GPIO вы используете для подключения контактов, поскольку они нам понадобятся в нашей программе. Приведенная ниже диаграмма должна позволить вам определить номера контактов GPIO.
Воспользуйтесь таблицей и выполните подключения в соответствии с принципиальной схемой. Я использовал макетную плату и перемычки для подключения. Поскольку я использовал модуль DHT11, я подключил его напрямую к Raspberry Pi. Мое оборудование выглядело так ниже
Программирование на Python для датчика DHT11:
Нам нужно написать программу, которая считывает значение температуры и влажности с датчика DHT11, а затем отображает их на ЖК-дисплее. Поскольку мы загрузили библиотеки как для ЖК-дисплея, так и для датчика DHT11, код должен быть довольно простым. Полная программу питона можно найти в конце этой страницы, но вы можете читать дальше, чтобы понять, как работает программа.
Мы должны импортировать библиотеку LCD и библиотеку DHT11 в нашу программу, чтобы использовать связанные с ней функции. Поскольку мы уже загрузили и установили их на свой Pi, мы можем просто использовать следующие строки для их импорта. Мы также импортируем библиотеку времени, чтобы использовать функцию задержки.
import time #import time for create delay import Adafruit_CharLCD as LCD #Import LCD library import Adafruit_DHT #Import DHT Library for sensor
Далее мы должны указать, к каким контактам подключен датчик и какой тип датчика температуры используется. Переменная sensor_name назначается Adafruit_DHT.DHT11, поскольку здесь мы используем датчик DHT11. Выходной контакт датчика подключен к GPIO 17 Raspberry Pi, поэтому мы назначаем 17 переменной sensor_pin, как показано ниже.
sensor_name = Adafruit_DHT.DHT11 # мы используем датчик DHT11 sensor_pin = 17 # Датчик подключен к GPIO17 на Pi
Точно так же мы также должны определить, к каким контактам GPIO подключен ЖК-дисплей. Здесь мы используем ЖК-дисплей в 4-битном режиме, поэтому у нас будет четыре контакта данных и два контакта управления для подключения к контактам GPIO пи. Кроме того, вы можете подключить вывод подсветки к выводу GPIO, если мы также хотим управлять подсветкой. Но пока я не использую это, поэтому я присвоил ему 0.
lcd_rs = 7 # RS ЖК-дисплея подключен к GPIO 7 на PI lcd_en = 8 #EN ЖК-дисплей подключен к GPIO 8 на PI lcd_d4 = 25 # D4 ЖК-дисплея подключен к GPIO 25 на PI lcd_d5 = 24 # D5 ЖК- дисплея подключен подключен к GPIO 24 на PI lcd_d6 = 23 # D6 ЖК-дисплея подключен к GPIO 23 на PI lcd_d7 = 18 # D7 ЖК-дисплея подключен к GPIO 18 на PI lcd_backlight = 0 # Светодиод не подключен, поэтому мы присваиваем 0
Вы также можете подключить ЖК-дисплей в 8-битном режиме с Raspberry pi, но тогда количество свободных контактов будет уменьшено.
Библиотека LCD от Adafruit, которую мы загрузили, может использоваться для всех типов характерных LCD дисплеев. Здесь, в нашем проекте, мы используем ЖК-дисплей 16 * 2, поэтому мы указываем количество строк и столбцов в переменной, как показано ниже.
lcd_columns = 16 # для ЖК-дисплея 16 * 2 lcd_rows = 2 # для ЖК-дисплея 16 * 2
Теперь, когда мы объявили выводы ЖК-дисплея и количество строк и столбцов для ЖК-дисплея, мы можем инициализировать ЖК-дисплей, используя следующую строку, которая отправляет всю необходимую информацию в библиотеку.
lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) # Отправить все данные о контактах в библиотеку
Чтобы запустить программу, мы отображаем небольшое вступительное сообщение с помощью функции lcd.message (), а затем даем задержку в 2 секунды, чтобы сообщение стало читаемым. Для печати во 2- й строке можно использовать команду \ n, как показано ниже.
lcd .message ('DHT11 with Pi \ n -CircuitDigest') # Дать вступительное сообщение time.sleep (2) # подождать 2 секунды
И, наконец, внутри нашего в то время цикла мы должны считывать значение температуры и влажности от датчика и отображать его на экране ЖКД на каждые 2 секунды. Полная программа внутри цикла while показана ниже.
while 1: # Бесконечный цикл
влажность, температура = Adafruit_DHT.read_retry (sensor_name, sensor_pin) # считывание с датчика и сохранение соответствующих значений в варибале температуры и влажности
lcd.clear () # Очистить ЖК-экран lcd.message ('Temp =%.1f C'% temperature) # Показать значение температуры lcd.message ('\ nHum =%.1f %%'% влажности) # Показать значение Humidity time.sleep (2) # Подождите 2 секунды, затем обновите значения
Мы можем легко получить значение температуры и влажности от датчика, используя эту единственную строку ниже. Как вы можете видеть, он возвращает два значения, которые хранятся в переменной влажности и температуре. В sensor_name и sensor_pin детали передаются в качестве параметров; эти значения были обновлены в начале программы
влажность, температура = Adafruit_DHT.read_retry (имя_сенсора, контакт_сенсора)
Чтобы отобразить имя переменной на ЖК-экране, мы можем использовать такие идентификаторы, как & d,% c и т. Д. Здесь, поскольку мы отображаем число с плавающей запятой только с одной цифрой после десятичной точки, мы используем идентификатор%.1f для отображения значения в переменная температура и влажность
lcd .message ('Temp =%.1f C'% temperature) lcd .message ('\ nHum =%.1f %%'% влажности)
Измерение влажности и температуры с помощью Raspberry Pi:
Выполните подключения согласно принципиальной схеме и установите необходимые библиотеки. Затем запустите программу Python, указанную в конце этой страницы. Ваш ЖК-дисплей должен отобразить вводное сообщение, а затем отобразить текущее значение температуры и влажности, как показано на рисунке ниже.
Если вы не обнаружите, что на ЖК-дисплее ничего не отображается, проверьте, отображает ли окно оболочки python какие-либо ошибки, если ошибка не отображается, проверьте соединения еще раз и настройте потенциометр, чтобы изменить уровень контрастности ЖК-дисплея, и проверьте, есть ли что-нибудь на экран.
Надеюсь, вы поняли проект и получили удовольствие от его создания. Если вы столкнулись с какой-либо проблемой при его выполнении, сообщите об этом в разделе комментариев или воспользуйтесь форумом для получения технической помощи. Я постараюсь ответить на все комментарии.
Вы также можете проверить другие наши проекты, используя DHT11 с другим микроконтроллером.