内容正文:
第15课 自动通风系统的开发
与实现
目录
教学目标
01
教学重难点
02
教学过程
03
课堂小结
04
05
作业布置
03
教学过程
教学目标
信息意识:
能结合教室空气质量场景明确自动通风系统功能需求,区分本地硬件直连、云端远程控制两种信息传递方案,感知传感器、微控制器、云平台协同处理数据、下发指令的完整逻辑。
计算思维:
会将自动通风项目分解为硬件选型、数据采集、网络上传、云端判断、红外执行五大环节;能读懂 ADC 采集、MQTT 收发、分支判断、UART 串口相关代码;能针对系统故障开展分步逻辑调试,形成工程化项目设计思维。
数字化学习与创新:
能依据项目参数完成硬件选型、硬件接线并记录端口对应规则;整合分段 MicroPython 代码实现完整设备功能;利用云平台图形化模块编写阈值判断程序,自主提出系统优化改进方案。
信息社会责任:
知晓嵌入式系统在生活各领域的应用,遵守硬件接线、代码编写、系统测试的工程规范;明白完整测试验证是保障智能设备稳定、安全使用的必要环节,养成严谨数字化实践习惯。
教学重难点
02
教学重难点
重点
1.完成 CO₂传感器、红外模块、Wi-Fi 主控硬件选型。
2.整合联网、数据采集、MQTT 通信、红外控制四类核心代码。
3.梳理感知 - 云端决策 - 终端执行的系统数据流。
难点
1.掌握 MQTT 双向通信逻辑:CO₂数据上传、新风指令下发。
2.融合分段代码,实现采集、遥控终端双向联动。
3.开展分阶段系统测试,依据数据优化运行参数。
教学过程
03
问题情境
如何实现设计方案?如何在众多传感器产品中挑选合适的一款?哪些型号的微控制器既可以采集传感器数据,又可以通过Wi-Fi传输数据?系统各个部分涉及的软件代码将按照何种流程运行?在这一课,我们一起体验实现设计方案的过程。
接口类型匹配是硬件选型的关键细节,包括电路模块的连接器外观和接口协议两部分。硬件系统以功能电路模块为最小单元,通过匹配各模块接口类型,可保障电路正常运行。二氧化碳浓度监测装置的传感器、微控制器等模块选型要求详见对应表格。
硬件设计——硬件选型
表5-3 二氧化碳浓度监测装置硬件选型表
名称 要求 选型 备注
二氧化碳浓度传感器 量程宽于0.04%~0.1%(体积分数),分度值优于0.01%(体积分数) 输出电压信号
微控制器 数据接口与传感器接口匹配,具有Wi-F连接功能
示例传感器的输出电压不高于330mV,相对于微控制器中0~3.3V甚至0~5V的电压采样量程,直接采样会导致精确度损失。因此,成品传感器模块中往往加入电压
放大电路,便于微控制器
采样。
硬件设计——硬件选型
试一试
尝试为新风机遥控装置进行硬件选型,完成表5-4。
表5-4 新风机遥控装置硬件选型表
名称 要求 选型 备注
微控制器模块
低功耗、支持红外收发、IO口充足、串口通信,适配 3.3V 系统
STM32F103C8T6 单片机
主控核心,处理遥控信号与风机控制指令
红外接收模块
接收 38kHz 红外遥控信号,电压 3.3V,体积小巧
HX1838 红外接收头
匹配家用红外遥控器通信协议
红外发射管
38kHz 载波发射,配合主控输出遥控码,低功耗
940nm 红外发射二极管
向新风机主机发送控制指令
试一试
表5-4 新风机遥控装置硬件选型表
名称 要求 选型 备注
电源模块
输入 5V USB 供电,输出稳定 3.3V,带过流保护
按键模块
OLED显示模块
锂电池充电模块
4 路独立按键(风速、开关机、模式、定时),上拉输入
I2C 通信,0.96 英寸,低功耗,显示风速、定时状态
3.7V 锂电输入,Type-C 充电,充放电一体,带保护
AMS1117-3.3 稳压模块
4 路轻触按键矩阵
0.96 寸 I2C OLED 屏
TP4056 充电模块
为主控、红外模块提供工作电压
本地手动控制功能
可视化展示设备运行参数
装置便携供电,可充电续航
两种常见的红外模块
第一种需要向模块中输入要发射的脉冲信号,模块将脉冲信号转换为红外光并完成发射。
使用时,需要在开发板的微控制器中提前写入控制启停新风机的红外脉冲信号串。
两种常见的红外模块
第二种,模块可以通过其板载的红外接收元件对若干条脉冲信号串进行学习,并将学习结果存储在模块内部,通过模块引脚输入简单的选择信号后,模块根据选择信号自动调出相应的脉冲信号串并完成发射。
使用时,只需要用红外遥控器对准模块的接收元件发射控制信号,模块即可自动学习并记录脉冲信号串。
小提示
通过硬件选型可以发现,多数传感器模块的电路接口至少有3根接线
(个别模块更多),当使用多个不同模块时,很容易导致接线错误。
我们可以有选择地使用设计了集成化接口的模块,这样不仅能方便
整组插线,大大降低故障率,还能提高外观的整洁度。
硬件系统搭建
硬件系统搭建是按照系统方案设计将各个模块连接起来,以便实现
预期功能。如图所示,对于厂商提供的集成化接口模块,可以使用
一条线缆直接连接;对于常规通用型模块,需要对应好每一根接线。
试一试
无论采用哪种接线方式,都需要记录每个模块所使用的
端口名称或序号,即记录端口对应规则,便于后期软件设计
时正确对应。将硬件端口对应规前记录在表5-5中。
表5-5 硬件端口对应规则表
模块 模块上端口 开发板上端口
二氧化碳浓度传感器 集成接口 IO9
红外模块
VCC、GND、OUT(SIG)
IO10
软件设计
在编写程序之前,需要通过绘制流程图的方式来规划软件的功能和控制流程。这一步骤至关重要,规范的流程图能够帮助我们清晰地理解和设计软件的工作内容以及各个环节之间的逻辑关系,使我们更加准确地把握软件的整体架构,同时
也便于团队成员之间的交流与合作。此外,流程图还为
软件的后续维护和升级提供了便利。
软件设计
二氧化碳浓度监测装置软件设计
微控制器模块连接Wi-Fi
import network
#导入network库
wlan=network.WLAN(network.STA_IF)
#设置连接模式为“工作站”
wlan.active(True)
#启动连接
wlan.connect("SSID","PASSWORD")
#指定所连接Wi-Fi的SSID名称和登录密码
软件设计
监测二氧化碳浓度
import utime
#导入utime库,用于延时等时间相关操作
import machine
#导入machine库,用于引脚定义和ADC相关功能设计
from machine import Pin,ADC
mg812=ADC(Pin(4))
#定义传感器信号输入端口
mg812.atten(ADC.ATTN_ODB)
#设置ADC衰减为0
mg812.width(ADC.WIDTH_12BIT)
#设置ADC采样位宽为12bit
mg812_vol=mg812.read()
#读取传感器电压,并赋值给变量“mg812_vol”
utime.sleep_ms(2000)
#休眠2000毫秒,即间隔一段时间
采用MQTT协议,微控制器向服务器发送二氧化碳浓度监测数据
from umgtt.simple import MQTTClient
#导入MQTT相关功能库
TOPIC=b'USERNAME/PROJECT_NAME/CO2_Level'
#配置消息发布主题
client=MQTTClient('CLIENT_ID','mi**.mi**.cn',
'USERNAME'PASSWORD)
#配置MQTT客户端账户信息
client.connect()
#启动MQTT客户端连接
client.publish(TOPIC,str(mg812_vol))
#向配置好的账户及主题中发布mg812_vol数据
试一试
将各个功能的程序进行整合,形成可运行的完整程序。
云平台程序设计
云服务程序运行时,时刻监听网络上发来的二氧化碳浓度数据,将监听数据与设定的阈值进行比对,判断是否超阈值,并根据结果发送启停指令。完成相应操作后,重新进入数据监听阶段。
云平台程序设计
1.在平台的“组件”页面创建一个图表组件,并在“逻辑”页面通过拖拽图形模块的方式编写程序。
2.在“组件”页面,将创建的图表组件命名为“二氧化碳浓度电压”,其对应的MQTT消息主题为“CO2_Level”,与相应代码内容一致。
云平台程序设计
3.在“逻辑”页面,通过图形模块编写的程序如右图所示。示例传感器模块往往内置电压放大电路,因此在设定判断阈值时,须考虑传感器模块的电压输出特性。
4.代码中有两个MQTT消息主题,一个“CO2_Level”主题,另一个“Fresh_air”主题。
云平台程序设计
“CO2Level”主题中的“消息”是二氧化碳浓度传感器的输出电压值以字符串形式传输。程序中将此数据转换为浮点型之后,与设定的阈值进行比较,根据比较结果生成开机、关机指令,指令经由“Fresh_air”主题发送至新风机遥控装置。
云平台服务程序是整个软件体系运行的核心,其程序设计思路和算法效率直接影响整个项目的实现效果和人性化设计水平。这部分的程序还有很大的优化空间。
试一试
从程序流程图来看,你认为云平台服务参考程序还有哪些可以优化的地方?请结合测试中出现的现象进
一步提出改进方案,并进行测试。
试一试
测试序号 测试场景 优化前问题现象 优化后预期效果 测试结果判定标准
1 数据库瞬时断连,1000台设备持续上报数据 数据直接丢失,丢包率12% 异常数据本地缓存、自动重试,故障恢复后完整补发 丢包率<0.1%,无数据永久丢失,死信日志完整可查
2 2000台设备并发上报,持续10分钟压测 CPU满载,接口超时率45%,服务卡顿阻塞 自动限流熔断,流量平稳可控,服务无崩溃 接口超时率<2%,CPU负载稳定,无服务宕机
3 下发设备控制指令(正常响应/离线/硬件报错) 下发状态模糊,隐性故障无法感知 精准展示成功、超时、故障三种状态 指令流程闭环,可通过TraceID追溯全流程
4 72小时长时间稳定性压力测试 内存、连接数持续上涨,资源泄漏明显 资源自动回收,指标稳定无递增 内存、连接数波动平稳,无内存溢出、僵尸连接
5 50台设备同时触发同类故障告警 批量刷屏,告警风暴,关键信息淹没 告警自动聚合降噪,分级推送 仅推送1条汇总告警,明细日志完整留存
新风机遥控装置软件设计
新风机遥控装置的工作内容是监听服务器的控制指令,并根据指令生成红外遥控信号,开启或关闭新风机。其中涉及对服务器指令的识别工作。
UART串口配置和调用参考程序:
from machine import UART
#导入UART库
uart1=UART(1,baudrate=9600,tx=9,rx=10)
#设置串口UART1参数
uartl.write('hello')
#通过UART1发送字符串“hello”
uartl.read(5)
#自UART1读取5个字节数据
MQTT订阅主题与接收消息参考程序:
from umqtt.simple import MQTTClient
TOPIC=b'USERNAME/PROJECT_NAME/Fresh_air
#与云平台对应,定义消息主题为“Fresh_air’
client=MQTTClient'CLIENT_ID', 'mi**.mi***.cn',USERNAME',PASSWORD')
#配置客户端
def on_off(topic,msg):
#on_off函数,根据监听主题所收到的消息,形成红外控制指令
print(topic,msg)
if topic==TOPIC:
if msg==b'ON':
#UART串口发送开机指令
if msg-=b'OFF':
#UART串口发送关机指令
client.set_callback(on_off)
#设置回调函数,获得“主题”和“消息”两类信息
client.connect()
client.subscribe(TOPIC)
#监听“TOPIC”主题
client.check_msg()
#检查客户端消息
根据程序代码片段,结合流程图,尝试完成新风机遥控装置的软件设计。
测试验证
测试验证是产品投人使用前的最后一个环节,
该环节要对整个软硬件系统进行运行测试,评估
其是否能够完整实现预期功能,达到预期效果。
测试验证分为准备,实验测试和现场安装调试
三个阶段。
测试准备
测试准备阶段需要完成电源连通、网络搭建、云服务启动等工作。
为系测试和安装使用提供必要的条件。通常,需要对测试准备工作
加以记录形成表格,如表5-6所列,完成此表。
表5-6 自动通风系统测试准备工作清单
准备工作 完成情况
红外模块对遥控器信号的学习
搭建测试无线局域网
启动云服务
系统硬件通电接线
测试终端调试就绪
已完成,成功录入通风设备开关、档位调节红外指令,信号收发正常
已完成,路由器通电组网,设备 WiFi模块成功接入局域网,通信稳定
已完成,云端服务器运行正常,设备可正常上传监测数据、接收远程指令
已完成,二氧化碳传感器、主控、通风执行机构电源线路连接无误,供电稳定
已完成,电脑端调试软件安装完毕,可查看设备实时数据、下发控制指令
实验室测试
实验室测试是指在实验室或专业教室中,按照设计方案进行完整系统搭建并进行功能测试。实验室测试不涉及实际安装、施工和布置,只为判断系统是否具备设计功
能,借助实验室的仪器设备对系统的性能指标进行量
化测试。在此过程中,对达不到预期的部分还可以进
行调试。
试一试
对实验室内搭建的自动通风系统进行测试,将测试数据
记录在表5-7中。
表5-7 自动通风系统测试数据表
项 目 设计指标 测试数据
开启新风机二氧化碳浓度(体积分数) 0.08%
关闭新风机二氧化碳浓度(体积分数)
0.076%
≤0.15%
0.142%
风机响应延迟时间
≤2s
1.2s
室内稳定换气时长
≤5min
3.8min
现场安装调试
系统经过实验室测试达到设计要求后,就可以在教室现场安装调试并投入使用了。现场安装调试过程中可能还会遇到意料之外的问题,如传感器安装在什么位置更
能反映教室的整体情况,如何使红外遥控效果更稳定,
等等解决这些问题需要同学们集思广益,在讨论、
合作中不断探索优化方法。
拓展与深化——嵌入式系统
嵌入式系统是一种专门用于执行特定任务的计算机系统,通常包含一个或多个微处理器或微控制器,以及其他硬件和软件。嵌人式系统常用于控制和监测各种设备
和系统,如汽车、航空航天设备、医疗设备、家用
电器、工业自动化设备等。嵌入式系统通常具有高
可靠性、低功耗、紧凑的设计和实时响应等特点。
嵌入式系统的发展
嵌入式系统的发展
国产嵌入式发展阶段
技术引进阶段 (1980-2000) → 产业跟随阶段 (2000-2015)
→自主可控突破阶段 (2016 至今)
自主可控阶段
1.硬件端:RISC-V 国产 MCU / 龙芯飞腾自主 CPU / 瑞芯微多媒体芯片
2.软件端:鸿蒙分布式系统/RT-Thread 轻量实时系统/工业硬实时OS/
嵌入式 openEuler
3.落地应用:物联网家居 → 工业自动化 → 车载电子 → 军工电力轨交
课堂小结
04
第 15 课 自动通风系统的开发与实现
一、硬件设计:
选型→接线→记录端口
CO₂传感器 → ADC 采集
红外学习模块 → UART 串口
ESP32:Wi-Fi 联网、MQTT 通信
二、软件三层程序
采集终端:联网→ADC 读电压→上传 CO2_Level
云平台:接收数据→阈值判断→下发 Fresh_air 指令
遥控终端:订阅指令→UART 发送红外信号
三、系统测试三步
准备→实验室联调→现场调试
四、核心协议:MQTT(发布 / 订阅双向通信)
课堂小结
课后作业
05
课后作业
1.基础层::完善课堂未填完的硬件选型表、端口对应表、系统测试数据表;默写二氧化碳采集终端核心代码注释。
2.提升作业:结合课堂讨论,写出 3 条云平台程序优化改进方案,说明优化思路。
3.拓展作业:查阅资料,收集国产嵌入式系统相关资料,简单记录发展现状。
感谢观看!
$