2.6.1 温度报警器#
2.6.1.1 简介#
当温度超过设置的阈值时,语音模块就会发出警告提示音 “警告,温度过高,当前温度是“xx”摄氏度”,在我们需要对温度预警时便能用到它了。
2.6.1.2 控制指令表#
消息号表:
消息号 |
播报语音 |
|---|---|
9 |
警告,温度过高,当前温度为“xx”摄氏度 |
2.6.1.3 接线图#

2.6.1.4 代码#
// 引入库
#include <SoftwareSerial.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// 创建软串口对象,使用A5作为RX引脚接收数据,A4作为TX引脚发送数据
SoftwareSerial mySerial(A5, A4);
// 定义变量用于存储从语音模块接收到的控制码
volatile int Voice_Control = 0; // 初始化为0,确保首次判断时不触发任何指令
// 定义传感器连接的引脚号
int DS18b20Pin = 3;
OneWire DS18B20_Sensor(DS18b20Pin);
DallasTemperature DS18B20(&DS18B20_Sensor);
/*
函数功能:通过串口发送具有固定帧格式的数据包
数据包格式:帧头(0xAA 0x55) + 消息号数据 + 数据1 + 数据2 + 帧尾(0x55 0xAA)
输入参数说明:
---Message_Number :消息号,用于标识命令类型 <必需填写>
---data1 :第一个数据参数 <如果没有数据就输入0>
---data2 :第二个数据参数 <如果没有数据就输入0>
*/
void Uart_SendCmd(int Message_Number, int data1, int data2) {
// 发送帧头:固定字节0xAA和0x55,用于标识数据包的开始
mySerial.write(0XAA);
mySerial.write(0X55);
// 发送消息号,标识具体的命令类型
mySerial.write(Message_Number);
// 发送两个数据参数
mySerial.write(data1);
mySerial.write(data2);
// 发送帧尾:固定字节0x55和0xAA,用于标识数据包的结束
mySerial.write(0X55);
mySerial.write(0XAA);
}
void setup() {
// 初始化硬件串口,用于调试和监控,波特率9600
Serial.begin(9600);
// 初始化软串口,用于与语音模块通信,波特率9600
mySerial.begin(9600);
//初始化DS18B20
DS18B20.begin();
}
void loop() {
//读取18B20传感器数据
DS18B20.requestTemperatures();
float Temp = DS18B20.getTempCByIndex(0);
Serial.println("T:" + String(Temp));
delay(500);
// 持续检查软串口是否有来自语音模块的数据
while (mySerial.available()) {
// 读取一个字节的数据
Voice_Control = mySerial.read();
// 将接收到的数据通过硬件串口输出,便于调试和监控
Serial.println(Voice_Control);
}
//判断温度是否大于25摄氏度
if (Temp > 25) {
//发送消息号9以及温度数据
Uart_SendCmd(9, Temp, 0);
}
}
2.6.1.5 代码说明#
① 添加库文件,设置模拟串口引脚为RX:A5,TX:A4,设置传感器引脚
② 搭建发送消息号函数
void Uart_SendCmd(int Message_Number, int data1, int data2)
③ 设置串口以及模拟串口的波特率为9600,初始化DS18B20库代码
④ 读取DS18B20温度数据并赋值给变量Temp,使用串口打印变量Tenp方便监控温度数据,延时500毫秒
⑥ 使用if判断变量Temp中的温度值进行判断是否大于25,如果大于25就发送播报警告的消息号以及温度数据给语音模块,语音模块便会播报出“警告,温度过高,当前温度为"xx"摄氏度”,延时10s钟目的是在警报触发的时候每10秒才发出一次警告播报。(注意:温度值的是可以自行调节的你可以调节到你想要的温度值,当前温度值是方便课程实验现象展示)
2.6.1.6 代码结果#
上传测试代码成功,打开串口查看打印的温度值,如果温度低于25摄氏度就可以用手握住加热使他高于25摄氏度,如果高于25摄氏度则可以调整温度值为高于你当前环境温度值2摄氏度的样子以便于你现象展示,课程代码当温度高于25摄氏度时,就会发出温度警报提示“警告,温度过高,当前温度是 xx 摄氏度”