本教程展示了如何使用 DHT11 温湿度传感器与ESP32(ESP8266程序没差别,注意接线的位置即可) 配合使用,后续会扩展程序,以通过MQTT建立连接,通过远程命令并获取数据。

DHT11传感器

DHT11的外观如下图,由左到右依序为信号(s)、VCC( )及GND(-)及三个脚位,其中VCC因为位置不够因此没标明,特别要说明的是DHT11与其他感测器比较起来较为脆弱,若VCC、GND接反了很快就会烧毁,因此在接线上必须特别注意,以免发生危险。

img

接线参考

image-20210803231126164

image-20210803231737944

参考代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import utime
from machine import Pin
import dht

sensor = dht.DHT11(Pin(18))

def read_sensor():
global temp, hum
temp = hum = 0
try:
sensor.measure()
temp = sensor.temperature()
hum = sensor.humidity()
if (isinstance(temp, float) and isinstance(hum, float)) or (isinstance(temp, int) and isinstance(hum, int)):
msg = (b'{0:3.1f},{1:3.1f}'.format(temp, hum))

# uncomment for Fahrenheit
#temp = temp * (9/5) + 32.0

hum = round(hum, 2)
return(msg)
else:
return('Invalid sensor readings.')
except OSError as e:
return('Failed to read sensor.')

while True:
sensor_readings = read_sensor()
print(sensor_readings)
utime.sleep(1)