实验20 自动灭火场景实验

1.实验目的

串口屏通过温度传感器,检测火焰温度,当火焰温度超过报警温度时,启动风扇进行灭火。

2.实验工具

支持MODBUS、IO的串口屏,本例程串口屏型号为(SANY-WV-S43-04M-C)

支持MODBUS的温度传感器,本例程使用的是自主生产的传感器

一个5V继电器、一个直流电机、一个IO转接板及软排线

3.页面设计

项目设置,勾选MODBUS 主机。修改波特率为9600(传感器波特率为9600,需要保持一致)。

page0 页面控件

|--------------|------------|-------------------------|
| 控件名 | 属性 | 功能 |
| image0 | 可见 图片 | 场景UI |
| progressbar6 | 可见 进度条 | 显示当前温度 |
| numf6 | 可见 浮点数 | 显示当前温度 |
| numf8 | 可见 浮点数 | 设置报警温度(透明度属性设置为0) |
| gif7 | 可见 GIF图片 | 显示动态报警 |
| io2 | 不可见 IO控件 | 输出高低电平(初始化为低电平0) |
| mod3 | 不可见 MODBUS | 支持使用MODBUS协议 |
| timer4 | 不可见 定时器 | 用于定时查询温度传感器并显示 |
| timer10 | 不可见 定时器 | 用于对比报警值,超出报警温度时,IO输出高电平 |

4.传感器模块参数

波特率:9600 功能码:03,读取寄存器

|--------------|---------------|----|----|-------------------------------|
| 设备地址 | 寄存器地址 | | | |
| 1 | 0x0000 | 温度 | 只读 | float类型,一个寄存器表示温度,单位*0.01℃ |
| | 0x0001 | 湿度 | 只读 | float类型,一个寄存器表示湿度,单位*0.01%rh |

本例程仅使用温度寄存器。

5.逻辑实现

5.1 页面加载事件,初始报警温度

脚本如下:

numf8.valf = 60.0;//初始化报警温度

5.2 定时查询温度(timer4)

脚本如下:

int Ret;

Ret = modbusRead(0x01,0x03,0x0000,2,100);//查询一次

if(Ret == 0)//查询成功

{

numf6.valf = (float)(mod3.rxBuf1<<8 | mod3.rxBuf2)/100;//转换温度

progressbar6.val = (int)numf6.valf;

}

5.3 对比报警温度(timer10)

脚本如下:

if(numf6.valf > numf8.valf)//读取温度超过设置温度

{

gif7.visible = 1;//GIF图片可见

io2.val = 1;//IO.Pin0输出高电平

}

else

{

gif7.visible = 0;//GIF图片隐藏

io2.val = 0;//IO.Pin0输出低电平

}

6.实验结果

编译成功后,点击下载按钮,下载到串口屏。

具体实验现象:用串口屏做一个自动灭火场景哔哩哔哩bilibili

相关推荐
KOAN凯擎小妹11 小时前
无源晶振为什么有串联谐振和并联谐振?MCU为什么使用并联晶体?
单片机·嵌入式硬件·晶振·元器件
茯苓gao12 小时前
嵌入式开发笔记:CAN与CAN FD完全指南——从帧格式差异到MCU选型实战
网络·笔记·stm32·嵌入式硬件·学习·汽车
论迹复利13 小时前
蓝牙 OTA 升级断连、升级失败底层链路问题定位
嵌入式硬件·安全·bt
振南的单片机世界14 小时前
3.5T静默分帧,CRC16校验:Modbus-RTU帧结构解析
arm开发·stm32·单片机·嵌入式硬件
LingzhiPi14 小时前
零知派ESP32--AS5600磁吸旋钮音量控制器
c++·单片机·嵌入式硬件
尼喃15 小时前
42V热拔插认证过压保护芯片:70V耐压+响应<1μs+可调OVP+SOT23-6
嵌入式硬件
0x3F(小茶)15 小时前
STM32 SPI的5种方向模式
c语言·stm32·单片机·嵌入式硬件
BSD_CGQ16 小时前
FSR压力传感器信号调理电路设计要点
单片机·嵌入式硬件·压力传感器·源头工厂·薄膜压力传感器
爱就是恒久忍耐17 小时前
CanFestival移植到STM32 F103芯片(基于HAL库)
stm32·单片机·嵌入式硬件
txh050717 小时前
如何使用示波器
嵌入式硬件·硬件工程