news 2026/9/7 1:48:01

STM32充电桩环境安全监测系统实战:从原理图到仿真完整解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
STM32充电桩环境安全监测系统实战:从原理图到仿真完整解析

在嵌入式项目里摸爬滚打这些年,我越来越觉得“环境安全监测”这类系统是最适合练手、也最容易出成果的方向。它不涉及复杂的运动控制或算法,但把传感器采集、信号处理、阈值判断、执行机构动作、人机交互这些嵌入式核心环节全串起来了,是一个典型的“麻雀虽小五脏俱全”的项目。今天要聊的这个STM32充电桩环境安全监测系统,就是这样一个能把理论知识真正落到代码和板子上的开源项目——它基于STM32F103C8T6,配合温湿度传感器、烟雾传感器、火焰传感器和继电器控制,实现了充电桩工作环境下的实时监测与自动保护。这个项目我前后调了两周,从原理图绘制到Proteus仿真跑通,再到底层驱动编写,过程中踩了不少坑,也攒了一些连文档里都不会写的经验,今天一并整理出来分享给大家。无论你是正在做课程设计、毕业设计,还是刚入门STM32想找个完整项目练手,这套从原理到源码到仿真的完整链路,都能让你少走很多弯路。

1. 项目整体设计与思路拆解

1.1 为什么选STM32F103C8T6这颗芯片

先说结论:在这个项目里,STM32F103C8T6的性能至少富余了50%,但正因为富余,才给了后续扩展和周全设计留足了空间。这颗芯片是意法半导体Cortex-M3内核的代表作,主频72MHz,Flash 64KB,SRAM 20KB,放在充电桩环境监测这种场景里,跑传感器轮询、阈值判断和继电器控制,CPU占用率通常不会超过30%。

选它的理由其实很务实。第一,生态成熟度极高。不管是标准外设库还是HAL库,网上的教程和代码示例一抓一大把,遇到问题几乎都能搜到解决方案。第二,价格优势明显。国产替代型号甚至能压到三五块钱以内,对成本敏感的产品来说非常有吸引力。第三,引脚资源刚好够用。这个项目用到GPIO输入输出、ADC采样、定时器延时、串口调试、I2C或单总线通信,F103C8T6的37个GPIO完全覆盖,余量刚好不至于浪费。

我还注意到热词里有不少人搜“stm32f103c8t6原理图”,确实,这颗芯片的最小系统设计是很多初学者跨不过去的坎。后面我会专门讲原理图部分,把复位电路、时钟电路、启动模式配置、下载调试接口这些关键点逐个拆开。

1.2 充电桩环境的监测需求到底有哪些

传统的充电桩安全防护,往往只依赖充电桩本身的过压过流保护。但实际场景中,充电桩往往安装在露天停车场、地下车库或室内专用车位,环境复杂得多。高温会导致线缆绝缘层加速老化,湿度过大可能引起电路板凝露短路,烟雾则是线缆过热、接插件打火甚至电池热失控的前兆。这些隐患,充电桩自身的电气保护是感知不到的,必须有额外的环境监测手段来兜底。

我用一个简单的需求拆解来帮助理解:

  • 温度监测:正常工作温度范围-20℃~60℃,超过70℃必须触发告警(考虑到夏季暴晒、设备自身发热叠加)
  • 湿度监测:超过80%RH时需要提示,超过95%RH时必须告警,防止凝露和爬电
  • 烟雾监测:检测到烟雾浓度超标立即告警,驱动继电器切断充电回路,这是安全底线
  • 火焰监测:检测到火焰光谱立即告警并切断电路,优先级最高
  • 告警输出:本地蜂鸣器响声提示,同时通过继电器控制充电桩主回路的通断
  • 状态显示:OLED或LCD实时显示当前温湿度和告警状态,方便运维人员现场查看

这套需求不算激进,但覆盖了充电桩环境安全的主要风险维度。更关键的是,它跟很多工业环境监控项目是同理的——学会了这套,迁移到机房温湿度监控、仓库烟雾报警、配电柜防凝露系统都很容易。

1.3 整体方案选型:传感器怎么选、显示用什么、告警怎么设计

传感器选型是第一个容易纠结的环节。温湿度传感器我最后选了DHT11,而不是更精准的SHT30或DHT22。原因很简单:项目定位是环境安全监测,温湿度变化通常是渐变过程,DHT11的±2℃温度精度、±5%RH湿度精度完全够用,而它的单总线通信协议特别适合学习底层时序编程。成本只有两三块钱,坏了也不心疼。当然,如果实际产品化,我建议换成SHT30,I2C接口更好维护,精度也高一个量级。

烟雾传感器选的是MQ-2。它不是数字输出那么简单——MQ-2是模拟输出型传感器,内部是二氧化锡半导体气敏材料,加热电阻把敏感层加热到一定温度后,空气中有可燃气体或烟雾时电导率会变化,输出模拟电压随之变化。这里有个关键点:MQ-2需要经ADC采样读取电压值,然后通过阈值判断是否告警。这正好联动了STM32的ADC外设。

火焰传感器用了模拟输出的红外接收型传感器,检测波长在760nm-1100nm范围内的红外光。它既可以用ADC读模拟量判断火焰强度,也可以用比较器输出数字信号直接触发中断。这个项目里我用ADC方式,方便在仿真和实物中灵活调节灵敏度。

显示屏最初我考虑过LCD1602,但1602有8个数据引脚再加上控制引脚,接线实在拥挤;后来换成了0.96寸I2C接口的OLED,SSD1306驱动芯片,两根线就能搞定显示,刷新速度也够。告警执行机构用了蜂鸣器加继电器——蜂鸣器负责现场警示,继电器负责切断充电桩主回路。

2. 核心硬件设计与原理图解读

2.1 最小系统电路:让芯片先跑起来

原理图设计的起点是最小系统。很多人画STM32最小系统喜欢直接抄参考设计,但抄完后不知道每个元件的职责,出问题无从排查。我把每个模块的原因讲透。

时钟电路用的是8MHz晶振,通过芯片内部的PLL锁相环倍频到72MHz主频。晶振两端的负载电容选择了两个22pF的陶瓷电容,具体容值跟晶振本身的负载电容参数有关——8MHz晶振通常建议6pF~22pF,我实测22pF起振最稳定。要注意,这两个电容不是随便选的,电容过大会导致起振困难,过小会导致频率偏差,进而影响串口波特率的准确性。

复位电路就是一个10kΩ上拉电阻加一个0.1μF对地电容,以及一个按键。按下按键时NRST引脚被拉低,芯片复位。RST引脚内部其实有上拉,但为了抗干扰,外部再拉一个10kΩ电阻到3.3V更可靠。复位电路的电容值不能太大,否则复位时间过长,上电后芯片不会立即正常工作。

启动模式配置是很多人忽略的坑。BOOT0和BOOT1引脚的电平组合决定了芯片从哪启动。这个项目里,BOOT0通过10kΩ电阻下拉到GND,BOOT1同样下拉。这样芯片从Flash启动,正常执行用户程序。如果BOOT0拉高,芯片会进入ISP下载模式,这在某些场合有用,但正常工作时必须确保BOOT0为低电平,否则一上电就停留在Bootloader里不跑程序。

下载调试接口这里,我重点说下SWD。STM32F103C8T6是LQFP48封装,没有多余的串口下载电路时,SWD是最省引脚的选择,只需要SWDIO、SWCLK两根线加GND就能下载和调试。但有一个细节很多人会忽略:SWDIO和SWCLK引脚(PA13、PA14)在复位期间被芯片内部拉高,如果你的系统里这两个引脚外部有强下拉,会干扰调试器握手,表现就是1.4节要说的“no stm32 target found”错误。所以下电路里这两个引脚要么悬空,要么只接调试器的线。

2.2 传感器接口电路:上拉电阻和分压电路的取舍

DHT11的数据线是开漏输出结构,所以必须在外部接一个4.7kΩ上拉电阻到3.3V。没有这个电阻,数据线的电平拉不高,通信根本建立不起来。另外,DHT11供电电压是3.3V~5V,这个项目里直接用3.3V供电,需要注意的是信号线电平也是3.3V,跟STM32的GPIO电平匹配,无需额外电平转换。

MQ-2烟雾传感器的接口电路要仔细算一下。传感器模块有4个引脚:VCC、GND、DO(数字量输出)和AO(模拟量输出)。我这次用的是AO,因为数字量的阈值是模块上的电位器固定的,灵活性差。AO输出的电压范围大约0~5V,而STM32的ADC是0~3.3V,直接接会把ADC输入引脚打坏。所以必须用电阻分压,把5V电压按比例降到3.3V以内,比如用10kΩ和10kΩ两个电阻分压,取中间点电压,这样最大只有2.5V左右,留足了安全余量。如果用在实物上,建议再在ADC引脚对地并联一个0.1μF的电容滤波,可以明显抑制信号抖动。

火焰传感器同理,模拟输出也是0~5V范围,同样需要分压电路。这里还有一个细节:火焰传感器的探测角大概在60度左右,安装时要让探测方向朝下稍带倾斜,覆盖充电桩插头和线缆区域,不要正对上方,否则阳光中的红外分量可能引起误报。

2.3 执行机构驱动:继电器怎么控制和保护

继电器控制充电桩主回路通断,是这个系统的安全执行端。继电器的线圈电流通常在30mA~70mA之间(5V继电器),STM32的GPIO最大只能提供约20mA电流,直接驱动不仅电流不够,而且继电器线圈是感性负载,断电瞬间会产生反向电动势,轻则干扰系统稳定性,重则击穿GPIO引脚。

所以驱动电路我用了一个NPN三极管(S8050)作开关——GPIO输出高电平,三极管导通,继电器线圈得电;GPIO输出低电平,三极管截止,继电器释放。在三极管的基极串联一个1kΩ限流电阻,保护GPIO口。最关键的是,继电器线圈两端必须并联一个反向续流二极管(1N4148或1N4007均可),二极管负极接电源正极、正极接三极管的集电极。断电瞬间线圈产生的反向电动势通过二极管形成回路,被泄放掉,避免高压尖峰打坏三极管和单片机。

实际调试中,我踩过一个很隐蔽的坑:继电器吸合和释放瞬间,电流波动会导致板上电压跌落,严重时STM32会复位重启。解决方法是:在继电器供电端加一个100μF电解电容做储能缓冲,并且在数字电路电源和继电器电源之间用电感或磁珠做一点隔离;如果是双电源设计,最好让继电器直接由外部5V供电,不要跟STM32的3.3V混用。

3. 软件架构与核心代码实现

3.1 工程结构设计:模块化思维比代码本身更重要

代码目录严格按照模块化思路组织,而不是把所有逻辑全塞进main.c里——那是新手最容易踩的坑,一旦功能多了,改一个地方要翻半天文件。

我的工程结构大致如下:

  • Main:主循环和状态调度
  • BSP/GPIO:引脚初始化
  • BSP/Timer:定时器配置和延时函数
  • Driver/DHT11:温湿度传感器单总线时序驱动
  • Driver/MQ2:烟雾传感器ADC采集和滤波
  • Driver/Flame:火焰传感器ADC采集和判断
  • Driver/OLED:SSD1306显示驱动和界面刷新
  • Driver/Buzzer_Relay:告警输出控制
  • App/Task:业务主逻辑,告警判断和状态机

模块化最大的好处是边界清晰:驱动层只负责跟硬件打交道,把“读到的原始数据”交出来;业务层只做判断和决策,不关心具体传感器怎么通信。这样任何一层的改动都不会波及其他模块,调试效率直线上升。

3.2 传感器驱动的关键时序和坑点

DHT11的单总线协议是这个项目里最考基本功的地方。整个通信过程可以拆成几个阶段:

主机发送起始信号:主机把数据线拉低至少18ms,然后释放并延时20~40μs,等待DHT11响应。注意,起始信号的低电平时间一定要足够长,否则传感器不识别。

DHT11响应信号:传感器收到起始信号后,会先把总线拉低约80μs,再拉高约80μs,表示“我准备好了”。主机检测到这个响应时序后,开始准备接收40位数据。

数据位表示:每一位数据都是先拉低50μs,然后拉高,拉高持续26~28μs表示“0”,持续70μs表示“1”。判断方法是:在电平变成高电平后,延时40μs再读引脚状态,读到高就是“1”,读到低就是“0”。

读取40位数据:依次为湿度整数、湿度小数、温度整数、温度小数,最后8位是校验和。校验和等于前四个字节之和的低8位,校验通过才认为数据有效。

这里最关键的是时序的微秒级控制,必须用定时器或精准延时函数实现。很多人在Proteus仿真里跑DHT11驱动时没反应,大概率是仿真模型对时序要求更严格,或者延时函数被优化掉了。我的做法是:用SysTick做基础延时,然后用示波器(或仿真里的虚拟示波器)实测时序,确保起始信号18ms、读取时40μs判断点这些关键参数准确无误。

3.3 ADC采集的滤波处理:原始采样值直接用会出现什么

MQ-2烟雾传感器和火焰传感器的模拟输出,直接裸读ADC值的话,波动会很大——MQ-2加热周期内输出本身就不稳定,再加上环境噪声,可能导致告警阈值边缘反复跳变,蜂鸣器响一下停一下,特别烦人。

我的处理方式是做滑动平均滤波:定义一个10个元素的环形缓冲区,每次采样把新值入队,同时去掉最旧的值,然后取平均值。这个滤波对周期性噪声和高频毛刺有很好的抑制作用,而且实现简单,几乎不增加CPU负担。关键参数是采样间隔——不要在一个主循环里连续采10次,那样滤波效果等于没有;应该每隔20ms采一次,累计200ms完成一个滤波周期。

阈值判断上,还要设置回差滞回区间。比如烟雾告警阈值设为1800(12位ADC参考3.3V时约1.45V),但解除告警的阈值设为1500,这样传感器输出在阈值附近小幅波动时,不会出现告警状态来回翻转的情况。滞回区间的大小要根据实际场景调,太小没效果,太大会导致告警后环境已经改善很久才恢复。

3.4 业务主逻辑:三级告警与状态机的设计

系统的主逻辑我设计成一个简易状态机,三个状态分别是正常、预警、告警。

正常状态下,系统每秒刷新一次传感器数据,在OLED上显示温湿度和烟雾值,继电器保持吸合,充电桩正常工作。

预警状态:温度超过60℃或湿度超过80%RH,OLED上显示“CAUTION”并闪烁提示,蜂鸣器以低频间歇鸣叫,继电器不断开,但要求现场人员尽快检查。这种设计的好处是避免了一有风吹草动就切断充电,影响用户体验。

告警状态:温度超过70℃、湿度超过95%RH、烟雾浓度超高或火焰传感器触发,任意一个条件成立,继电器立即断开,蜂鸣器高频连续鸣叫,OLED显示具体告警原因。这个状态必须手动复位才能恢复——我设计了一个复位按键,只有确认现场安全后,按一下复位键才能重新进入正常状态。这是安全系统的一个重要原则:告警后不允许自动恢复,防止隐患未排除时自动复电导致二次事故。

状态机的实现用switch-case就够了,不需要上状态机框架。关键每个状态内的动作要检查自己的入口条件:每次循环先读传感器,再判断当前状态,然后根据状态和输入条件决定动作和状态迁移。这样逻辑清晰,加了新告警类型也容易扩展。

4. 仿真搭建与联调心得

4.1 Proteus里怎么搭环境、怎么解决元件找不到的问题

仿真环节我用的Proteus 8.x版本。搭建步骤有几个关键点。

元件搜索和摆放:STMF103C8T6在Proteus里的型号是“STM32F103C8”,直接搜就能找到。DHT11可以直接搜“DHT11”,Proteus 8.9以上版本的自带库里有这个模型,不用专门去下载第三方库。MQ-2注意不要直接搜“MQ2”,很多版本库里没有,但有个“MQ-2”气体传感器的仿真模型可以使用,或者用“POT”电位计替代模拟烟雾浓度变化——把电位计输出的电压接到STM32的ADC引脚,通过调整电位计阻值来模拟烟雾浓度变化,这种方法简单有效,很多开源项目都这么干。

时钟和供电设置:双击STM32芯片,要设置晶振频率为8MHz,这样才能跟代码里RCC配置的倍频系数匹配,否则仿真里延时和串口波特率都会不对。电源隐藏引脚默认接好了,但建议检查一下是否勾选了“Enable power pins”。

4.2 Keil与Proteus联调:虚拟串口和调试器的配合

仿真时遇到最恼人的问题就是代码下载不进去或者调试器连接不上。在Proteus里仿真STM32,通常在Keil里编译生成hex文件,然后在Proteus里双击芯片加载hex文件运行。但如果你想用Keil的调试器功能联调,就需要用Proteus的“Remote Debug”功能:在Keil的Options for Target里选择“ST-Link Debugger”并设置端口为Proteus的监听端口。

我实际测试下来,直接用hex文件加载的方式最稳定,虚拟调试器联调偶尔会掉线,不太适合新手。但如果你想要在仿真里看变量实时变化,可以再配一根VSPD虚拟串口软件,让Proteus的虚拟串口和电脑的真实串口对接,用串口助手看调试日志信息。我习惯在代码里加一个串口调试开关,输出传感器原始值和状态机切换事件,一套联调下来,哪里有问题一目了然。

4.3 仿真与实物的差异:哪些坑是仿真永远教不了你的

说实话,仿真在这个项目里最大的价值是验证逻辑——程序逻辑有没有缺陷、状态机跑不跑得通、显示正不正确。但仿真永远无法替代实物调试,有几个关键差异特别说一下。

时序方面:仿真里DHT11的时序是理想化的,实际芯片的工作电压波动、GPIO翻转速度、中断响应延迟都会对时序造成影响。同样是DHT11驱动,仿真里跑通只能说明逻辑对,要搬到实物上,还要用示波器去量真实的时序波形,必要时在延时函数里加微小修正。

ADC方面:仿真里的ADC转换是理想的,没有噪声和参考电压漂移,所以滤波算法的效果在仿真里看不到。但实物上,电源纹波、传感器自身漂移都会让ADC输出抖动,滤波和滞回机制的真正价值要到实物上才能体会出来。

继电器方面:Proteus里继电器就是一个理想开关模型,但实物上继电器吸合瞬间的电流尖峰、触点抖动、反向电动势,这些只有接上真实元器件才能看到。我在第一次接通真实继电器时,ST-Link直接断连,排查了很久才发现是电源被拉低导致的。

5. 常见问题与排查技巧实录

5.1 编译下载阶段的“no stm32 target found”问题

热词里有人搜“no stm32 target found! if your product embeds debug authentication, pl”,这个错误是ST-Link调试器最常见的故障之一。我汇总下几种典型原因和处理方法:

  • 接线问题:检查SWDIO、SWCLK、GND三根线是否连接正确,GND必须与目标板共地,这是基础中的基础
  • 供电问题:目标板没上电或供电不足,ST-Link无法读取芯片ID卡。用万用表量一下芯片VDD引脚是否有3.3V
  • BOOT0电平问题:BOOT0被意外拉高会导致芯片进入Bootloader模式,SWD口可能无法正确应答
  • 复位电路问题:复位脚被外部电容拉低时间过长,或者复位电路有虚焊,会导致芯片一直处于复位状态,无法连接
  • 调试器固件问题:ST-Link固件版本过旧,建议升级到最新版

排查顺序我习惯这样:先量电压,再看BOOT0,再查接线,最后看调试器固件。90%的问题集中在前两步。

5.2 传感器数据异常的排查方法

传感器数据读出来是0、是255、或者剧烈跳动,各有各的原因。我做一个速查表方便大家定位:

现象可能原因排查方向
DHT11一直读0上拉电阻缺失、GPIO模式配置错误测量数据线电平,检查GPIO配置是否开漏输出
DHT11读出来满量程255传感器供电异常、时序超时确认供电3.3V~5V,检查起始信号低电平时间是否达标
湿度值跳动大传感器附近有气流或热源改变安装位置,必要时做软件平滑滤波
MQ-2输出满量程传感器预热不足或损坏MQ-2初次上电需要预热几分钟,先等电压稳定再采集
ADC值偏低分压电路参数不对、参考电压不对用万用表实测分压点电压,核对ADC参考电压配置

5.3 继电器反复吸合、蜂鸣器误报的处理经验

如果你遇到继电器频繁通断、蜂鸣器一直在响的情况,大概率不是硬件坏了,而是软件逻辑上的阈值太边缘化。这里分享两个调参技巧。

第一,加滞回。告警触发阈值和解除阈值之间留一个安全余量,具体数值看传感器的信号波动幅度,我一般取触发阈值的80%左右作为解除阈值。

第二,加确认时间。传感器连续超过阈值一定时间(比如5秒)才触发告警,而不是单次采样超过就立刻动作。这能滤掉很多瞬间干扰。但要注意,这个确认时间不能太长——火焰告警这种安全紧急的场景,确认时间应该缩短到1秒以内甚至直接触发。

我做的系统里,按照告警类型分别设置了确认时间:烟雾需要5秒确认防误报,火焰则立即触发不设防。实践证明这个策略在实际使用中效果很好,既保证了安全性,又没有各种烦人的假告警。

6. 从仿真到产品化的进阶思考

6.1 低成本量产版本可以怎么改

如果你想把项目从仿真和原型推进到量产阶段,有几个明显的优化方向:

传感器升级:DHT11换成SHT30,温湿度精度提升一个量级,而且I2C接口不需要自己抠时序,代码维护成本更低。MQ-2这种热丝型传感器功耗大、预热时间长,如果是电池供电场景,建议换电化学式的烟雾传感器,当然成本会高不少。

电源设计:加入防反接电路、TVS浪涌保护、DC-DC隔离,确保充电桩现场的恶劣电气环境下系统稳定。模拟部分和数字部分要做电源分割,MCU的供电要加LC滤波。

通信功能:预留RS485接口,通过Modbus协议把温湿度、告警状态上传到后台管理系统。充电桩场站运维人员不需要到现场就能看到所有桩的环境数据,发生异常时平台主动派单维修。

远程告警:加4G无线通信模块(比如Air724UG之类),告警时除了本地蜂鸣器,还能推送短信或微信通知给值班人员。这对分布式充电站尤其重要,毕竟场站通常距离运维办公室很远。

6.2 这套系统还能迁移到哪些场景

做完这个充电桩环境安全监测系统,你会发现它的架构几乎是通用的。温湿度加烟雾加火焰加继电器,这套组合稍加改动就能应用到许多场景。

家里的配电箱、老旧小区的地下车库,可以部署类似的温烟雾监测装置,意外发生时自动切断电闸并推送告警;机房和弱电井里,监测温湿度和烟雾是最基础的需求,配合空调联动甚至能实现自动降温;粮食仓库和档案室对温湿度更敏感,湿度超标自动开启除湿机。更进一步的,你还可以接入燃气传感器(MQ-5)、水浸传感器、门磁传感器,搭建一套完整的通用环境监测平台。模块化设计的优势就在这里,驱动层每加一个新传感器就是多一个文件的事,业务层几乎不用动。

我个人这些年做嵌入式项目最大的体会是:一定要把每一个项目做完、跑通、收尾,否则学到的东西永远是零散的碎片。这个充电桩环境安全监测系统虽说不算复杂,但从原理图到代码到仿真再到实物,整个流程走下来,你对STM32外设的理解会有一个质的提升。如果你是刚开始学STM32,找一块F103C8T6的核心板,按这篇文章把电路搭起来,程序逐模块烧录调试,配合Proteus仿真验证逻辑,再对照实物排查差异——这套方式来一遍,你对嵌入式开发的掌握程度,绝对远超只看教程不实操的状态。希望这篇文章能让你少踩我踩过的那些坑,顺利把项目跑起来。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/7 1:47:37

DDR5内存标签全解读:从JESD401-5C标准看懂PC5、CL和Rank

简介:JESD401-5C是JEDEC发布的DDR5 DIMM标签标准编辑修订版,专为内存模组设计、制造、采购及验证人员提供统一的标签格式与标注规范。该标准有助于消除厂商与采购方之间的理解偏差,促进产品互换性与选型效率。压缩包内仅含1个PDF文档&#xf…

作者头像 李华
网站建设 2026/9/7 1:47:11

RK3588端侧部署YOLOv8:单头改双头输出实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/7 1:45:31

滑环与无线遥测信号质量实测对比:旋转机械测试到底选谁

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/7 1:44:20

STM32实战:Y01-3IN1空气质量传感器与OLED显示完整教程

1. 项目到底要做什么:Y01-3IN1和OLED的搭配逻辑手里有一块Y01-3IN1空气质量模块,又有一块0.96寸OLED,想把两者接到STM32上,让屏幕实时显示PM2.5、温湿度和甲醛浓度。这个需求听起来简单,但实际做的时候,串口…

作者头像 李华