博客
关于我
基于Arduino的ESP32-S3 +DS18B20(3pin)
阅读量:790 次
发布时间: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/

你可能感兴趣的文章
在Vue中使用样式——使用内联样式
查看>>
Find Familiar Service Features in Lightning Experience
查看>>
Explore Optimization
查看>>
map[]和map.at()取值之间的区别
查看>>
【SQLI-Lab】靶场搭建
查看>>
【Bootstrap5】精细学习记录
查看>>
Struts2-从值栈获取list集合数据(三种方式)
查看>>
设计模式(18)——中介者模式
查看>>
推荐几篇近期必看的视觉综述,含GAN、Transformer、人脸超分辨、遥感等
查看>>
一文理解设计模式--命令模式(Command)
查看>>
VTK:可视化之RandomProbe
查看>>
block多队列分析 - 2. block多队列的初始化
查看>>
Java时间
查看>>
不编译只打包system或者vendor image命令
查看>>
【编程】C语言入门:1到 100 的所有整数中出现多少个数字9
查看>>
flink启动(二)
查看>>
pair的用法
查看>>
Flex 布局的自适应子项内容过长导致其被撑大问题
查看>>
PL/SQL 动态Sql拼接where条件
查看>>
Thymeleaf sec:authorize 标签不生效
查看>>