文章作者:里海
来源网站:ESP32专栏
简介
使用 DS18B20 温度传感器测温度
单片机
esp32
传感器
DS18B20
开发环境
VSCode + PlatformIO
开发语言
C++
步骤
1. 硬件连接
DS18B20 温度传感器连接到 ESP32 的引脚,连接方式:
DS18B20 引脚:
- 红色线(VCC)连接到 ESP32 的 3.3V
- 黑色线(GND)连接到 ESP32 的 GND
- 黄色线(数据引脚)连接到 ESP32 的任意 GPIO 引脚(例如 GPIO 4)
记得在数据引脚上添加一个4.7kΩ
的上拉电阻,连接 VCC 和数据引脚。
2. 创建 PlatformIO 项目
在 VSCode 中创建一个新的 PlatformIO 项目,并选择 ESP32 作为开发板。
3. 编辑 platformio.ini
在你的 platformio.ini 文件中,确保添加了库依赖:
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
lib_deps =
OneWire
DallasTemperature
4. 编写代码
打开 src/main.cpp 文件,并使用以下代码:
#include <Arduino.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// 数据引脚连接到 GPIO 4
#define ONE_WIRE_BUS 4
// 创建 OneWire 实例
OneWire oneWire(ONE_WIRE_BUS);
// 通过 OneWire 实例创建 DallasTemperature 实例
DallasTemperature sensors(&oneWire);
void setup()
{
// 启动串口监视器
Serial.begin(115200);
// 启动温度传感器
sensors.begin();
}
void loop()
{
// 请求温度传感器的温度
sensors.requestTemperatures();
// 读取温度并打印到串口监视器
float temperatureC = sensors.getTempCByIndex(0); // 获取第一个传感器的温度
Serial.print("Temperature: ");
Serial.print(temperatureC);
Serial.println(" °C");
// 每隔 2 秒读取一次温度
delay(2000);
}
5. 上传代码
连接 ESP32 开发板,然后在 VSCode 的 PlatformIO 工具栏中点击“Upload”按钮,上传代码到开发板。
6. 监视串口输出
上传完成后,打开串口监视器(可以在 VSCode 中使用 PlatformIO 的串口监视器功能),设置波特率为 115200 ,可以看到温度的实时输出。
7. 调试
如果没有输出或出现错误,请检查连接和代码,确保传感器连接正确,并且没有拼写错误。
这样,就完成了一个简单的 ESP32 使用 DS18B20 测量温度的功能!
什么是ESP32?
ESP32是近几年最受欢迎和最实用的模块之一。除了Wi-Fi模块,该模块还包含蓝牙4.0模块。双核CPU工作频率为80至240 MHz,包含两个Wi-Fi和蓝牙模块以及各种输入和输出引脚, ESP32是物联网项目的理想选择。
ESP32模块引脚分布
虽然ESP32的引脚数比常用的处理器少,但在引脚上复用多个功能时不会遇到任何问题。
警告:ESP32引脚的电压电平为3.3伏。如果要将ESP32连接到其他工作电压为5伏的设备,则应使用电平转换器转换电压电平。
- 电源引脚:该模块有两个电源引脚 5V和3.3V。您可以使用这两个引脚来向其他设备和模块供电。
- GND引脚:该模块的接地有3个引脚。
- 启用引脚(EN):该引脚用于启用和禁用模块。引脚为高电平时启用模块,低电平禁用模块。
- 输入/输出引脚(GPIO):您可以使用32个GPIO引脚与LED、开关和其他输入/输出设备进行通信。
您可以在内部上拉或下拉这些引脚。
注意:GPIO6至GPIO11引脚(SCK/CLK,SDO/SD0,SDI/SD1,SHD/SD2,SWP/SD3和SCS/CMD引脚)用于模块内部闪存的SPI通信,我们不建议使用它们。 - ADC:您可以使用此模块上的16个ADC引脚将模拟电压(某些传感器的输出)转换为数字电压。其中一些转换器连接到内部放大器,能够以高精度测量小电压。
- DAC:ESP32模块有两个数模转换器,精度为8位。
- 触摸焊盘:ESP32模块上有10个引脚,对电容变化很敏感。您可以将这些引脚连接到某些焊盘(PCB上的焊盘),并将它们用作触摸开关。
- SPI:该模块上有两个SPI接口,可用于连接显示屏、SD / microSD存储卡模块、外部闪存等。
- I2C:SDA和SCL引脚用于I2C通信。
- 串行通信(UART):该模块上有两个UART串行接口。使用这些引脚,您可以在两个设备之间传输高达5Mbps的信息。 UART0还具有CTS和RTS控制。
- PWM:几乎所有ESP32输入/输出引脚都可用于PWM(脉冲宽度调制)。使用这些引脚可以控制电机、LED灯的亮度和RGB灯的颜色等。
ESP32模块模式
ESP32芯片有5种模式:
- 活动模式:在这种模式下,Wi-Fi和蓝牙发射器和接收器的所有部分都是活动的。在这种情况下,电流消耗在80和260mA之间。
- 调制解调器睡眠模式:处理器仍处于活动状态,但Wi-Fi和蓝牙已禁用。在这种情况下,电流消耗在3到20mA之间。
- 轻度睡眠模式:主处理器停止工作,但RTC单元和ULP处理器单元仍处于活动状态。电流消耗约为0.8 mA。
- 深度睡眠模式:只有RTC单元处于活动状态。在这种情况下,Wi-Fi和蓝牙通信的数据存储在RTC的存储器中。在此模式下,电流消耗在10到150μA之间。
- 休眠模式:除了用于时钟的RTC定时器和连接到RTC的一些I / O引脚外,所有单元均被禁用。 RTC定时器或连接的引脚可以将芯片从此状态唤醒。在这种情况下,电流消耗约为2.5μA。
有关更多信息,请查看模块数据表。