![Изчитане на DHT11 с ESP8266 и MicroPython Практическо ръководство](http://ardudevelop.eu/wp-content/uploads/2024/09/Изчитане-на-DHT11-с-ESP8266-и-MicroPython-Практическо-ръководство.png)
В този урок ще разгледаме как да четем данни за температурата и влажността от сензор DHT11, използвайки ESP8266 и програмния език MicroPython. DHT11 е един от най-популярните сензори за измерване на околната температура и влажност. Той е лесен за свързване и конфигуриране с ESP8266, а MicroPython е перфектен за бързо прототипиране на такива проекти.
Какво е DHT11?
DHT11 е цифров сензор за температура и влажност, който предлага базова точност на измерване и лесна интеграция с различни микроконтролери. Той предоставя две основни стойности:
- Температура (°C): Обхватът на измерване на температурата е от 0 до 50°C с точност ±2°C.
- Влажност (%): DHT11 измерва относителната влажност в диапазона 20% до 90% с точност ±5%.
Този сензор има бавен отговор (честотата му на опресняване е около веднъж на секунда), което го прави подходящ за проекти, при които не се изисква висока прецизност и честота на изчитане.
Необходими компоненти
За този проект ще ви трябват следните компоненти:
- ESP8266 (напр. D1 Mini или NodeMCU)
- DHT11 сензор. Пълна спецификация тук.
- Кабели за връзка
Свързване на DHT11 с ESP8266
Свързването на сензора DHT11 с ESP8266 е сравнително лесно:
![Изчитане на DHT11 с ESP8266 и MicroPython Практическо ръководство схема](http://ardudevelop.eu/wp-content/uploads/2024/09/Изчитане-на-DHT11-с-ESP8266-и-MicroPython-Практическо-ръководство-схема.png)
- 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)](http://ardudevelop.eu/wp-content/uploads/2024/09/DHT11-пин-диаграма-pinout.png)
Код на проекта Изчитане на 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.
- dht_inicialize.measure(): Тази команда казва на сензора да измери текущите стойности на температурата и влажността. Без това извикване, сензорът няма да предоставя нови данни.
- temp = dht_inicialize.temperature(): След като измерванията са направени, тук изчитаме стойността за температурата и я съхраняваме в променливата temp.
- hum = dht_inicialize.humidity(): По същия начин, изчитаме стойността за влажността и я запазваме в променливата hum.
- print(“Температура =”, round(temp, 1)): Използваме print() функцията, за да отпечатаме температурата в конзолата. Температурата е закръглена до едно десетично място с помощта на round(temp, 1), което прави данните по-четими.
- print(“Влажност =”, round(hum, 1)): Аналогично на температурата, отпечатваме и влажността в конзолата, като също я закръгляме до първия десетичен знак.
- sleep(1): Тук добавяме пауза от 1 секунда между всяко изчитане. DHT11 сензорът има максимална честота на обновяване от около 1Hz, затова е важно да не четем стойности по-често от веднъж на секунда.
Видео презентация:
При стартирането на програмата, в конзолата ще видите нещо подобно:
Тези стойности ще се актуализират всяка секунда според измерванията, направени от сензора DHT11.
Заключение
В този урок показахме как лесно да интегрирате сензор DHT11 за измерване на температура и влажност с микроконтролер ESP8266 и MicroPython. Сензорът DHT11 е перфектен за базови проекти за мониторинг на околната среда, където е важно да се следят климатични условия.
Чрез този примерен код научихте как да инициализирате и управлявате сензор, както и как да работите с GPIO пиновете на ESP8266, използвайки MicroPython. Възможностите за приложения са много, като можете да включите тези данни в по-сложни системи като умни домове, IoT устройства за мониторинг на околната среда или дори проекти за автоматизация на градина.
Следващите стъпки могат да включват визуализиране на тези данни в уеб интерфейс или изпращане на уведомления при промяна на температурата или влажността извън предварително зададени граници.
С ESP8266 и MicroPython вашите възможности за иновации са неограничени!