Изчитане на DHT11 с ESP8266 и MicroPython: Практическо ръководство

Изчитане на DHT11 с ESP8266 и MicroPython Практическо ръководство

В този урок ще разгледаме как да четем данни за температурата и влажността от сензор DHT11, използвайки ESP8266 и програмния език MicroPython. DHT11 е един от най-популярните сензори за измерване на околната температура и влажност. Той е лесен за свързване и конфигуриране с ESP8266, а MicroPython е перфектен за бързо прототипиране на такива проекти.

Какво е DHT11?

DHT11 е цифров сензор за температура и влажност, който предлага базова точност на измерване и лесна интеграция с различни микроконтролери. Той предоставя две основни стойности:

  • Температура (°C): Обхватът на измерване на температурата е от 0 до 50°C с точност ±2°C.
  • Влажност (%): DHT11 измерва относителната влажност в диапазона 20% до 90% с точност ±5%.

Този сензор има бавен отговор (честотата му на опресняване е около веднъж на секунда), което го прави подходящ за проекти, при които не се изисква висока прецизност и честота на изчитане.

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

За този проект ще ви трябват следните компоненти:

  1. ESP8266 (напр. D1 Mini или NodeMCU)
  2. DHT11 сензор. Пълна спецификация тук.
  3. Кабели за връзка

Свързване на DHT11 с ESP8266

Свързването на сензора DHT11 с ESP8266 е сравнително лесно:

Изчитане на DHT11 с ESP8266 и MicroPython Практическо ръководство схема
  • VCC (DHT11) към 3.3V (ESP8266)
  • GND (DHT11) към GND (ESP8266)
  • Data (DHT11) към GPIO2 (D4) (ESP8266)

GPIO2 (D4) е използван в този проект, но можете да изберете друг пин, като промените съответния ред в кода. За да видите пин диаграмата (pinout) на тази платформа разгледайте нашата страница с ревю за нея: ESP8266 D1 Mini – Малък, но Мощен Wi-Fi Микроконтролер.

Пин диаграмата (pinout) на DHT11

DHT11 пин диаграма (pinout)

Код на проекта Изчитане на DHT11 с ESP8266 и MicroPython:

import dht
from machine import Pin
from time import sleep

dht_inicialize = dht.DHT11(Pin(2))

while True:
    dht_inicialize.measure()
    temp = dht_inicialize.temperature()
    hum = dht_inicialize.humidity()
    
    print("Температура =", round(temp , 1))
    print("Влажност = ", round(hum , 1))
    sleep(1)

Обяснение на кода

import dht
from machine import Pin
from time import sleep

Първо, импортираме необходимите библиотеки.

  • dht: Тази библиотека предоставя готови класове за работа с DHT11 и DHT22 сензори.
  • machine: От нея използваме Pin, за да дефинираме към кой GPIO пин е свързан сензорът.
  • sleep: Функцията sleep от библиотеката time ни позволява да направим пауза между всяко изчитане на данни от сензора.
dht_inicialize = dht.DHT11(Pin(2))

Тук инициализираме сензора DHT11. Създаваме обект с името dht_inicialize и го свързваме към GPIO2, където сме свързали сигнала на сензора.

while True:
    dht_inicialize.measure()
    temp = dht_inicialize.temperature()
    hum = dht_inicialize.humidity()
    
    print("Температура =", round(temp , 1))
    print("Влажност = ", round(hum , 1))
    sleep(1)

Основният цикъл (while True):

Целият код е в безкраен цикъл while True, което означава, че програмата ще продължава да работи, докато не бъде спряна ръчно или не се рестартира ESP8266.

  1. dht_inicialize.measure(): Тази команда казва на сензора да измери текущите стойности на температурата и влажността. Без това извикване, сензорът няма да предоставя нови данни.
  2. temp = dht_inicialize.temperature(): След като измерванията са направени, тук изчитаме стойността за температурата и я съхраняваме в променливата temp.
  3. hum = dht_inicialize.humidity(): По същия начин, изчитаме стойността за влажността и я запазваме в променливата hum.
  4. print(“Температура =”, round(temp, 1)): Използваме print() функцията, за да отпечатаме температурата в конзолата. Температурата е закръглена до едно десетично място с помощта на round(temp, 1), което прави данните по-четими.
  5. print(“Влажност =”, round(hum, 1)): Аналогично на температурата, отпечатваме и влажността в конзолата, като също я закръгляме до първия десетичен знак.
  6. sleep(1): Тук добавяме пауза от 1 секунда между всяко изчитане. DHT11 сензорът има максимална честота на обновяване от около 1Hz, затова е важно да не четем стойности по-често от веднъж на секунда.

Видео презентация:

При стартирането на програмата, в конзолата ще видите нещо подобно:

Тези стойности ще се актуализират всяка секунда според измерванията, направени от сензора DHT11.

Заключение

В този урок показахме как лесно да интегрирате сензор DHT11 за измерване на температура и влажност с микроконтролер ESP8266 и MicroPython. Сензорът DHT11 е перфектен за базови проекти за мониторинг на околната среда, където е важно да се следят климатични условия.

Чрез този примерен код научихте как да инициализирате и управлявате сензор, както и как да работите с GPIO пиновете на ESP8266, използвайки MicroPython. Възможностите за приложения са много, като можете да включите тези данни в по-сложни системи като умни домове, IoT устройства за мониторинг на околната среда или дори проекти за автоматизация на градина.

Следващите стъпки могат да включват визуализиране на тези данни в уеб интерфейс или изпращане на уведомления при промяна на температурата или влажността извън предварително зададени граници.

С ESP8266 и MicroPython вашите възможности за иновации са неограничени!