博客
关于我
基于Arduino的ESP32-S3 +DS18B20(3pin)
阅读量:791 次
发布时间:2023-01-23

本文共 3597 字,大约阅读时间需要 11 分钟。

    

文章写完后,目录可以自动生成,可以参考右边的帮助文档。

文章目录


前言

DS18B20作为经典的单总线数字温度传感器,因其独特的单线通信和多点组网能力,在物联网领域得到了广泛应用。本文以ESP32-S3-DevKitC-1为核心开发板,详细介绍了从硬件连接到代码实现的完整测温方案,并提供了OLED屏幕扩展方案。相比传统模拟传感器,DS18B20具有更强的抗干扰能力,提升了接收信号的稳定性。

一、硬件准备

1.1 器件对比

...

1.2 接线方案

接线示意:

VCC - 3.3V / 5V

DQ - GPIO6(需4.7K上拉电阻)
GND - GND
图片描述:(查看图片描述)

二、驱动实现

2.1 开发环境配置

添加库文件: - OneWire库(支持单总线协议) - DallasTemperature库(高级温度控制)

2.2 核心代码解析

代码如下:

```cpp #include
#include
#define DSB_PIN 6 OneWire oneWire(DSB_PIN); DallasTemperature sensors(&oneWire); void setup() { Serial.begin(9600); sensors.begin(); sensors.setResolution(12); } void loop() { sensors.requestTemperatures(); float temp = sensors.getTempCByIndex(0); if(temp != DEVICE_DISCONNECTED_C) { Serial.print("温度:"); Serial.print(temp); Serial.println("℃"); } delay(1000); } ```

关键函数说明:

- `sensors.begin()`:初始化单总线设备,自动检测连接数量 - `setResolution(9~12)`:调节测量精度 - `getTempCByIndex(n)`:获取第n个传感器的摄氏温度

三、拓展应用

3.1 OLED屏显集成

        #include 
#include
#define SDA 47 #define SCL 21 SH1106Wire display(0x3c, SDA, SCL); void oledbegin(); void displaysensor(); void displayTemp(); void setup() { Serial.begin(9600); oledbegin(); } void loop() { displaysensor(); displayTemp(); } void oledbegin() { if(!display.init()) { Serial.println("OLED init failed"); while(1) delay(100); } display.flipScreenVertically(); display.clear(); display.setFont(ArialMT_Plain_10); } void displaysensor() { display.drawString(0, 0, "Hello World"); display.drawString(0, 10, "oled"); display.drawString(0, 20, "电磁阀"); display.display(); } void displayTemp() { float temp = 0.0; display.drawString(0, 20, String(temp)+"℃"); display.display(); }

3.2 多点测温方案

        void checkDevices() {            int count = sensors.getDeviceCount();            Serial.print("发现");            Serial.print(count);            Serial.println("个传感器");            for(int i=0; i

四、常见问题排查

...

总结

本文通过验证了《基于Arduino的ESP32-S3-DevKitC-1对DS18B20传感器的驱动》,完整展示了从硬件接线到软件实现的全流程...

转载地址:http://xceyk.baihongyu.com/

你可能感兴趣的文章
信号量机制
查看>>
钻石操作符使用升级
查看>>
设置方法区大小与OOM
查看>>
对象的实例化内存布局与访问定位内容
查看>>
React + 导入模块的一个错误
查看>>
Laravel 直接返回404页面
查看>>
PHP 自定义错误与处理
查看>>
记一次内部系统渗透测试:小漏洞组合拳
查看>>
常用元素操作的方法
查看>>
命名实体识别数据预处理
查看>>
分布式是登录机制是如何实现的。
查看>>
零基础学习 Vue3 教程 2021 年最新教程 免费视频教程(4 个视频)
查看>>
解决 matplotlib 中文显示乱码的问题
查看>>
解决打开 json 文件中文乱码的问题
查看>>
计算机网络基础:DHCP服务的部署
查看>>
计算机网络基础:DNS 部署与安全
查看>>
计算机网络基础:NAT 网络地址转换
查看>>
计算机网络基础:PKI(公钥基础设施)
查看>>
计算机网络基础:VLAN(虚拟局域网)
查看>>
计算机网络基础:文件共享服务器(注册表更改)
查看>>