一、目的
这一节我们学习如何使用我们的ESP32开发板来控制温度传感器(DS18B20)实时检测当前环境的温度。
二、环境
ESP32 + 温度传感器 + Thonny IDE + 几根杜邦线
接线示意图:
+ 号连接开发板VIN,-号连接开发板的GND,out连接开发板的D13
三、代码
MicroPython有现成的API:Quick reference for the ESP32 — MicroPython latest documentation
注意:一条线上可以接多个温度传感器设备,所以用到了scan来读取连接的设备列表。
from machine import Pin
import onewire, ds18x20
import time
ds_sensor = ds18x20.DS18X20(onewire.OneWire(Pin(13)))
def read_ds_sensor(): # 创建一个读取温度的函数
roms = ds_sensor.scan() # 扫描总线上的设备
print('扫描发现的设备: ', roms)
ds_sensor.convert_temp() # 温度转换
for rom in roms: # 循环打印出设备列表
temp = ds_sensor.read_temp(rom) # 读出该设备的温度
if isinstance(temp, float): # 以小数点后2位输出,例如23.35
temp = round(temp, 2)
return temp
return 0
while True:
if(read_ds_sensor() < 25):
print("温度低了,请开启加热器!")
if(read_ds_sensor() > 30):
print("温度高了,请开启制冷器!")
time.sleep(1)
四、演示效果
五、温度传感器购买
同样我们淘宝上收到一家,推荐给大家,大家也可以货比三家:
DS18B20是美国DALLAS半导体公司推出的第一片支持“一线总线”
接口的温度传感器,它具有微型化,低功耗,高性能,抗干扰能力强,易配微处理器等优点,可直接将温度转化成数字信号处理器处理。
测量的温度范围是-55~125℃
,测温误差0.5℃。可编程分辨率9~12位,对应的可分辨温度分别为0.5℃
,0.25℃
,0.125℃
和0.0625℃
。
产品特点:
一、长尺寸:28mm X宽12mm X高10mm
二、主要芯片:18B20温度传感器
三、工作电压:直流5V
四、特点:
1、分辨率调整范围:9-12位
2、带安装孔方便安装,孔径:2.5
3、温度测量范围:-55~+125℃
4、温度测量精度:0.5℃
5、工作电压:DC5V
6、数字信号输出