在ESP32上驱动DS18B20温度传感器(macroPython)

本文介绍了如何在ESP32上使用MicroPython驱动DS18B20温度传感器,包括硬件连接、代码实现以及效果演示,展示了如何读取和打印环境温度。
摘要由CSDN通过智能技术生成

在ESP32上驱动DS18B20温度传感器

引言

在物联网和嵌入式系统中,温度传感器是一种常见的设备,用于测量环境温度。本文将介绍如何在ESP32上驱动DS18B20温度传感器。

ds18b20

请添加图片描述

DS18B20是一种单总线数字温度传感器,测试温度范围-55℃-125℃,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。单总线,意味着没有时钟线,只有一根通信线。单总线读写数据是靠控制起始时间和采样时间来完成,所以时序要求很严格,这也是DS18B20驱动编程的难点。

不过在MicroPython有现成的API可以驱动DS18B20

macroPython中DS18B20 设备有一个特定的驱动程序:

import time, ds18x20
ds = ds18x20.DS18X20(ow)
roms = ds.scan()
ds.convert_temp()
time.sleep_ms(750)
for rom in roms:
    print(ds.read_temp(rom))

具体详情点击下方链接查看macroPython手册:
OneWire驱动器

硬件连接

首先,我们需要将DS18B20连接到ESP32。DS18B20有3个引脚,其中1个是数据线(DQ),另外两个是电源线(VDD和GND)。我们将数据线连接到ESP32的GPIO13引脚,电源线直接连接到ESP32的3.3V5V引脚。
请添加图片描述

代码实现

以下是在ESP32上驱动DS18B20的Python代码:

from machine import Pin, OneWire
import ds18x20
import time

# 定义DS18B20的数据引脚
GP_ds = Pin(13)

# 初始化OneWire对象
ow = OneWire(GP_ds)

# 初始化DS18X20对象
ds_sensor = ds18x20.DS18X20(ow)

def read_ds_sensor():
    roms = ds_sensor.scan()
    print('发现设备: ', roms)   #打印18B20传感器地址
    ds_sensor.convert_temp()    #转换当前温度
    for rom in roms:
        temp = ds_sensor.read_temp(rom)
        if isinstance(temp, float):
            temp = round(temp, 2)
            return temp

def main():
    while True:
        print(read_ds_sensor())
        time.sleep(1)

if __name__ == "__main__":
    main()

在这段代码中,我们首先导入了必要的库,然后定义了DS18B20的数据引脚。接着,我们初始化了一个OneWire对象和一个DS18X20对象。在read_ds_sensor函数中,我们扫描所有的设备,转换温度,并读取温度值。最后,在main函数中,我们无限循环地读取并打印温度值。

效果演示

我们在wokwi中进行仿真如下图链接电路
在这里插入图片描述
在仿真器中修改温度为17

成功在控制台打印温度
成功在控制台打印
wokwi项目地址
通过以上步骤,我们已经成功地在ESP32上驱动了DS18B20温度传感器。这个简单的示例可以帮助你理解如何使用ESP32来读取环境温度,并将其发送到你的物联网系统。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宁子希

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值