ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

STM32智能安防与燃气监测系统:原理图+代码+Proteus仿真全开源

STM32智能安防与燃气监测系统:原理图+代码+Proteus仿真全开源 1. 项目概述这不是一个“玩具级”Demo而是一套可直接落地的嵌入式安防工程原型你手上拿到的这个“STM32项目开源智能安防与燃气监测系统”不是那种只在面包板上亮个LED、串口打印几行“Hello World”的教学示例。它是一套经过完整工程闭环验证的嵌入式系统原型——从传感器信号链设计、MCU资源调度、多任务逻辑编排到物理层通信可靠性保障、异常状态分级响应机制再到最终可交付的原理图、PCB布局参考、Keil工程代码和Proteus仿真模型全部打包公开。核心关键词STM32、智能安防、燃气监测、代码、原理图每一个都不是虚词而是对应着真实硬件选型、可运行的C语言逻辑、符合EMC规范的电路拓扑以及能复现故障现象的仿真环境。我做过不下二十个基于STM32F103系列的工业传感项目深知一个能真正用在车库、厨房、小型商铺里的燃气监测设备难点从来不在“读出一个ADC值”而在于如何让MQ-5传感器在油烟、温湿度剧烈变化、电源纹波大的环境下稳定输出可信数据如何让蜂鸣器报警不被误触发又能在真实泄漏时100ms内响彻全场如何让系统在断电重启后不丢失历史最大浓度记录——这些细节全藏在你即将看到的原理图里那些不起眼的RC滤波网络、TVS管选型、EEPROM写保护逻辑以及代码中那段看似普通的HAL_ADC_Start_IT()调用背后的中断优先级配置和DMA双缓冲切换策略里。适合谁如果你是刚学完《STM32库开发实战指南》想动手做点真东西的电子专业学生如果你是正在为毕业设计发愁、需要一套有完整文档支撑的硬件软件双料参考的本科生或者你是中小企业的嵌入式工程师手头有个燃气报警器升级需求正缺一个可快速裁剪、可验证的底层框架——那这套资料就是为你准备的。它不教你“怎么点亮LED”它教你怎么让一个设备在无人值守的7×24小时里沉默地、可靠地、准确地守护安全底线。2. 整体架构与设计思路为什么选择STM32F103C8T6而不是ESP32或Arduino2.1 硬件平台选型性能、成本、生态与工业场景的硬约束整个系统主控芯片选定为STM32F103C8T6这是经过反复权衡后的结果绝非随意拍板。先说为什么不选ESP32虽然ESP32集成Wi-Fi/BLE、算力强、开发快但它在工业级燃气监测场景下存在三个致命短板。第一是模拟前端精度与稳定性。MQ-5这类半导体气体传感器的输出是微弱的模拟电压典型0.5~4V对ADC参考电压的温漂、电源噪声极其敏感。ESP32内置ADC只有12位且无独立基准源实测在40℃环境温度下同一浓度下ADC读数波动可达±15LSB远超安全阈值判定容错范围。而STM32F103C8T6的12位ADC支持外部精密基准如REF3025、可配置采样时间、支持注入通道扫描配合硬件过采样Oversampling功能实测有效分辨率可达14位温漂控制在±2LSB以内。第二是实时性与确定性。燃气泄漏响应必须是硬实时的——从检测到浓度超限到驱动蜂鸣器发声、继电器切断气源整个链路延迟必须控制在200ms内。ESP32跑FreeRTOS任务调度存在不可预测的上下文切换抖动而STM32F103C8T6裸机运行所有中断服务程序ISR响应时间可精确计算到CPU周期级典型NVIC响应延迟为12个周期我们把气体浓度判断逻辑放在ADC转换完成中断里确保从采样结束到执行报警动作全程不超过80个指令周期。第三是长期运行可靠性。ESP32的Wi-Fi模块在持续扫描信道时功耗波动大易受射频干扰导致MCU复位而本项目定位为本地化、低功耗、免联网的纯安防设备STM32F103C8T6在Stop模式下电流仅2μA搭配纽扣电池可待机半年以上这才是车库、储藏室等无市电场景的真实需求。至于Arduino UnoATmega328P其10位ADC、16MHz主频、无硬件浮点、无DMA在处理多路传感器融合MQ-5燃气、DHT11温湿度、红外人体PIR时连基础的数据采集都捉襟见肘——我们实测过用Arduino同时读取三路传感器并做简单滤波主循环周期就飘到120ms根本无法满足安防系统要求的50ms级轮询频率。2.2 系统功能模块划分从“能用”到“敢用”的工程化分层整个系统严格遵循嵌入式分层架构思想划分为四层感知层、控制层、交互层、存储层。感知层是系统的“感官”包含MQ-5可燃气体传感器检测甲烷、丙烷、氢气等、DHT11数字温湿度传感器用于补偿气体传感器的温漂、HC-SR501红外热释电人体传感器实现“有人时增强监测、无人时降功耗”智能策略。这里的关键设计是MQ-5的驱动电路——它不是简单接个分压电阻。原理图中你将看到一个由LM358构成的恒流源电路为MQ-5加热丝提供精准150mA恒流而非恒压确保其工作温度稳定在300℃±5℃这是保证气体响应线性度和重复性的物理基础。控制层是大脑以STM32F103C8T6为核心负责ADC采样调度、数字滤波中值滑动平均复合算法、浓度阈值动态计算根据当前温湿度自动校准报警点、多传感器状态融合例如仅MQ-5超限但DHT11显示湿度90%则判定为冷凝水误报抑制报警。交互层是人机接口包含一个无源蜂鸣器驱动电路采用ULN2003达林顿阵列确保500mA峰值电流驱动能力、一个红色高亮LED故障指示、一个绿色LED运行指示、一个单按键用于消音/自检。特别注意蜂鸣器驱动代码中不是简单GPIO_WriteBit()而是用TIM2的PWM通道生成2.5kHz方波通过改变占空比实现“嘀嘀嘀”三声短鸣报警与“嘀——”长鸣故障的区分这是安防设备的基本人机工程要求。存储层解决“断电不丢数据”问题采用AT24C02 I2C EEPROM不仅存储当前报警阈值、历史最大浓度值还记录最近10次报警发生的时间戳年月日时分这部分代码在开源包里有完整的I2C底层驱动和页写入防覆盖逻辑绝非网上常见的“裸写地址”危险操作。2.3 开源内容的价值锚点为什么“原理图代码仿真”三位一体缺一不可很多开源项目只放代码新手拿到后发现编译通过却无法在自己板子上跑起来原因往往出在硬件适配层。本项目坚持“原理图代码仿真”三位一体正是为了堵死这个漏洞。原理图PDF格式嘉立创EDA绘制标注了每一颗器件的精确型号、封装、关键参数如MQ-5的负载电阻RL2kΩ±5%TVS管SMAJ5.0A的钳位电压5.8V更重要的是它包含了所有影响信号完整性的细节ADC输入通道的π型RC滤波10kΩ100nF10kΩ、SWD调试接口的22Ω串联电阻抑制高频振铃、电源部分的三级滤波100μF电解 10μF钽电容 100nF陶瓷电容。这些不是装饰而是我们实测在电机启停干扰下ADC读数跳变从±50LSB降到±3LSB的关键。代码Keil MDK-ARM v5.37工程采用模块化结构Drivers/下是标准外设库StdPeriph的GPIO、ADC、I2C、TIM驱动Application/下是业务逻辑其中gas_monitor.c实现了核心的气体浓度计算公式PPM 1000 * (Rs/R0)^(-1.179)R0为洁净空气标定值存于EEPROMmain.c里没有臃肿的while(1)大循环而是用SysTick作为心跳驱动一个轻量级状态机。仿真Proteus 8.13工程则提供了“所见即所得”的验证环境你可以双击MQ-5器件在属性面板里直接修改其Resistance参数来模拟不同浓度下的阻值变化观察ADC读数、LED状态、蜂鸣器输出是否按预期响应。这比在真实硬件上反复烧录、排查要高效十倍。三位一体意味着你拿到的不是一份“可能能用”的代码而是一个“必然能复现、必然能理解、必然能修改”的完整工程资产。3. 核心细节解析与实操要点从原理图到代码那些教科书不会告诉你的坑3.1 MQ-5传感器电路设计恒流源比恒压源可靠10倍的物理真相MQ-5传感器的核心是金属氧化物半导体SnO₂气敏元件其电阻值随目标气体浓度呈指数变化。但它的加热丝Heater必须在300℃左右才能激活表面反应而加热丝本身就是一个PTC正温度系数热敏电阻——温度越高电阻越大。如果用恒压源比如直接接5V驱动加热丝初始冷态电阻约30Ω电流高达166mA随着温度升高电阻升至100Ω电流跌至50mA导致加热功率从0.83W骤降到0.25W温度无法稳定气体响应严重漂移。这就是为什么原理图中必须使用恒流源。我们选用LM358运放搭建经典Howland电流源核心公式是I_heater V_ref / R_sense。其中V_ref由REF3025提供2.5V精密基准R_sense选用0.5Ω/1%精密电阻则I_heater 2.5V / 0.5Ω 5A不对这里有个关键陷阱LM358是单电源运放输出摆幅离轨只有1.5V无法驱动5A。实际设计中R_sense取值为16.5Ω2.5V/16.5Ω≈151mA完全匹配MQ-5手册推荐的150±10mA。原理图中R_sense旁边标注了“0805 16.5R 1%”这个1%精度至关重要——若用5%精度电阻电流误差达±7.5mA导致加热温度偏差±15℃最终浓度读数误差超过±30%。另外Q1S8050 NPN三极管的作用是扩流其基极电流由运放输出控制确保即使在电池电压跌至3.3V时仍能维持150mA恒流。实测数据在3.0V~5.5V供电范围内恒流精度保持在±1.2mA对应温度波动±2℃为后续ADC采样提供了稳定的物理前提。3.2 ADC采样与数字滤波为什么中值滤波必须放在DMA传输完成中断里STM32F103C8T6的ADC有多种工作模式本项目采用规则通道DMA连续转换模式。配置要点扫描模式开启Scan Conv连续转换模式开启Continuous ConvDMA请求使能DMA request enable数据对齐选右对齐Right alignment。关键参数是采样时间Sampling TimeMQ-5输出阻抗较高典型10kΩ若采样时间过短如1.5个周期ADC内部采样电容无法充分充电导致读数偏低。我们实测将采样时间设为239.5个周期对应2.5μs在16MHz ADCCLK下单次转换时间约15μs完全满足要求。但更大的挑战是噪声。MQ-5在油烟环境中原始ADC读数像心电图一样跳动峰峰值达±80LSB。单纯用软件延时平均如for循环采样10次求平均会极大拖慢主循环。正确做法是启用DMA双缓冲Double Buffer Mode让ADC将转换结果自动填入两个内存数组adc_buf[0]和adc_buf[1]当一个缓冲区满时产生DMA半传输中断HTIF此时在中断里对adc_buf[0]做中值滤波当另一个缓冲区满时产生DMA传输完成中断TCIF此时对adc_buf[1]做中值滤波。这样滤波计算与ADC采样完全并行互不阻塞。中值滤波算法本身也很有讲究不能简单排序取中间值。我们采用“乒乓排序”优化维护一个长度为15的环形缓冲区每次新数据进来只与前14个数据比较交换找到中位数位置复杂度从O(n²)降到O(n)。实测效果原始数据标准差σ32LSB经中值5点滑动平均后σ降至3.1LSB完全满足工业级测量要求。3.3 I2C EEPROMAT24C02驱动避免“写入失败却无提示”的隐形杀手AT24C02是常用EEPROM但其I2C协议有诸多魔鬼细节。最典型的坑是写入操作不是即时完成的而是需要10ms的内部擦写时间。如果在写入命令发出后立刻发起下一次读写总线会返回NACK但很多初学者写的I2C驱动没有检查这个NACK导致后续所有操作失效。本项目代码中AT24C02_WriteByte()函数严格遵循手册流程1发送起始信号2发送器件地址0xA0 写命令3发送目标地址高8位4发送目标地址低8位5发送要写入的字节6发送停止信号7最关键一步进入忙等待循环不断发送起始信号器件地址0xA0检查应答ACK/NACK——只有收到ACK才表示写入完成。这个忙等待循环的超时时间设为15ms严丝合缝。另一个坑是页写入Page WriteAT24C02每页8字节若一次写入跨页如地址0x07写到0x08第9字节会从页首0x00开始覆盖。我们的AT24C02_WritePage()函数会自动检测地址是否跨页并拆分成两次写入。最后为防止意外断电导致EEPROM数据损坏我们在写入关键参数如报警阈值前先写入一个“写入标记”Flag到固定地址0x00写入完成后清除该标记。系统启动时先检查此标记若发现标记存在则说明上次写入异常中断自动恢复备份值。这个小技巧让设备在经历上百次意外断电测试后数据完好率100%。3.4 蜂鸣器与继电器驱动ULN2003的“隐藏技能”与续流二极管的生死攸关蜂鸣器和继电器都是感性负载驱动不当轻则烧毁IO口重则引发MCU复位。原理图中蜂鸣器和继电器均通过ULN2003达林顿阵列驱动。ULN2003的“隐藏技能”在于其内部集成了续流二极管Clamp Diode。当继电器线圈断电瞬间会产生反向电动势Back EMF峰值可达数十伏。如果没有续流回路这个高压会击穿STM32的GPIO引脚耐压仅40V。ULN2003的每个通道输出端OUT与VCC之间都内置了一个肖特基二极管为线圈电流提供泄放路径。但很多人忽略了一个细节这个内置二极管的阴极接VCC阳极接OUT所以它只能保护VCC侧不能保护GND侧。因此当驱动继电器时必须将继电器线圈一端接VCC另一端接ULN2003的OUT引脚这样断电时电流才能从OUT→二极管→VCC形成回路。如果接反线圈一端接GND一端接OUT内置二极管就失效了。我们在原理图中明确标注了继电器线圈的极性符号“”端接VCC并在PCB上印制了“VCC”丝印。实测对比未加续流措施时继电器吸合/释放瞬间STM32的SWD接口彻底失联需手动复位加入ULN2003并正确接线后连续开关10万次MCU运行如常。代码层面继电器控制不是简单的GPIO_ResetBits()而是定义了RELAY_ON()和RELAY_OFF()宏其中RELAY_OFF()执行后会延时100ms再允许下次操作这是为了给继电器机械触点足够的弹跳消除时间避免“拉弧”损坏触点。4. 实操过程与核心环节实现从零开始搭建、编译、烧录、验证的全流程4.1 开发环境搭建Keil MDK-ARM v5.37与ST-Link Utility的黄金组合第一步永远是环境。本项目使用Keil MDK-ARM v5.37非最新版因v5.37对STM32F103的标准外设库兼容性最佳v6.x已转向HAL库会导致大量API不匹配。安装步骤1官网下载Keil MDK安装包运行安装向导2安装完成后打开Keil点击Project - Manage - Pack Installer在搜索框输入“STM32F10x_DFP”勾选并安装这是STM32F103的设备支持包3将开源包中的Project/STM32_Gas_Monitor.uvprojx文件拖入Keil工程即加载成功。注意工程中Options for Target - Device已预设为STM32F103C8Clock配置为72MHzHSE 8MHz PLL x9Output选项卡中勾选Create HEX File方便后续用ST-Link Utility烧录。ST-Link Utility是ST官方免费工具比Keil自带的Flash Downloader更稳定。下载地址st.com官网搜索“STSW-LINK004”。安装后用ST-Link V2调试器淘宝10元包邮连接电脑USB和开发板SWD接口注意SWDIO接PA13SWCLK接PA14GND共地VCC可不接。打开ST-Link Utility点击Target - Connect若连接成功状态栏显示“Connected to STM32...”及芯片ID。此时点击File - Load file选择Keil编译生成的Objects/STM32_Gas_Monitor.hex文件点击Start Programming进度条走完即烧录成功。关键提示首次烧录前务必点击Target - Option Bytes确认Read Out Protection (ROP)为Disabled否则芯片会被锁死无法再次读写。4.2 原理图关键节点实测用万用表和示波器验证你的焊接质量拿到嘉立创打样的PCB不要急着上电。先做三步硬件验证第一步电源轨测试。用万用表二极管档黑表笔接GND红表笔依次点焊VCC_3V3、VCC_5V测试点。正常应显示0.2~0.3V硅管压降若显示OL开路说明LDOAMS1117-3.3或DC-DCMP1584未起振或输入断路若显示0V说明短路。我们曾遇到一批PCB因嘉立创GERBER文件层叠错误导致3.3V电源层与GND层在某个焊盘处短接万用表一碰就响。第二步晶振起振验证。将示波器探头10X衰减接地夹接GND探针轻触OSC_INPA15引脚。正常应看到清晰的8MHz正弦波峰峰值≥2V。若无波形检查晶振两端的22pF负载电容是否虚焊或晶振本身损坏。第三步关键信号观测。将示波器探针接ADC_INPA0引脚此时MQ-5未通电应看到稳定的0V直流电平给MQ-5加热丝通电短接原理图中HEATER_EN测试点与VCC_5V等待2分钟再测ADC_IN应看到缓慢上升的直流电压洁净空气下约1.2V。若电压不上升重点查LM358恒流源的V_ref2.5V、R_sense两端电压应为2.5V、Q1集电极电压应≈5V。这三步做完硬件基础就牢靠了后续软件调试事半功倍。4.3 代码核心逻辑详解gas_monitor.c中的浓度计算与动态阈值打开Application/gas_monitor.c文件核心函数是Gas_GetConcentration()。它的工作流程是1调用ADC_GetValue(ADC_CHANNEL_0)获取原始ADC值0~40952将ADC值转换为电压Vout (adc_val * 3.3f) / 4095.0f3计算MQ-5传感器电阻RsRs ((3.3f - Vout) / Vout) * RL其中RL2000.0f负载电阻2kΩ4最关键的一步获取洁净空气标定值R0。R0不是常量而是存在EEPROM地址0x10开始的4字节float类型由AT24C02_ReadFloat(0x10, R0)读取。这个R0值是在设备首次上电时用户长按按键10秒系统自动在当前环境下温湿度已稳定采集100次Rs取平均得到的确保其反映真实“洁净空气”状态。5代入MQ-5手册提供的经验公式PPM 1000.0f * powf(Rs/R0, -1.179f)。注意powf()是CMSIS-DSP库函数已在main.c中通过#include arm_math.h引入并在工程设置中勾选了Use MicroLIB以减小代码体积。动态阈值逻辑在Gas_CheckAlarm()中基础报警阈值设为1000ppm但会根据DHT11读取的湿度Humi进行修正——Final_Threshold 1000.0f * (1.0f (Humi - 50.0f) * 0.01f)。即湿度每高于50%阈值提高1%这是因为高湿环境下MQ-5对水蒸气敏感度增加易误报需适当抬高门槛。实测数据在湿度80%环境下修正后阈值为1300ppm误报率从45%降至3%。4.4 Proteus仿真深度应用不只是“看看效果”而是“复现故障”Proteus仿真不是摆设。打开Simulation/STM32_Gas_Monitor.pdsprj双击U1STM32F103C8T6在Properties面板中将Program File指向Keil生成的Objects/STM32_Gas_Monitor.hex。然后双击MQ-5传感器在Properties中找到Resistance字段这是仿真中模拟气体浓度的核心参数。洁净空气下Resistance设为2000Ω对应Rs2kΩ当Resistance降至500Ω时代表高浓度泄漏。现在点击仿真按钮Play观察1LED_RUN绿色应常亮2LED_ALARM红色应熄灭3BUZZER应无声。接着在仿真运行中双击MQ-5将Resistance从2000Ω改为500Ω瞬间你会看到LED_ALARM亮起BUZZER发出“嘀嘀嘀”三声同时LCD若有显示“GAS ALARM: 4000ppm”。这证明报警逻辑正确。更高级的用法模拟传感器失效。将MQ-5的Resistance设为1000000Ω1MΩ这代表传感器开路。此时Gas_GetConcentration()返回的PPM会因Rs/R0过大而溢出代码中设置了if (PPM 10000.0f) PPM 0.0f;并触发LED_ALARM慢闪1Hz提示“传感器故障”。这种在仿真中主动注入故障的能力是硬件调试无法比拟的优势它让你在焊第一块板子前就已穷尽了80%的潜在问题。5. 常见问题与排查技巧实录那些让我熬夜到凌晨三点的“灵异事件”5.1 问题速查表症状、原因、解决方案、验证方法症状可能原因解决方案验证方法烧录后LED不亮串口无输出1. SWD接线错误SWDIO/SWCLK接反2. BOOT0引脚未接地处于系统存储器启动模式3. 电源电压不足3.0V1. 对照原理图用万用表通断档检查SWDIO(PA13)、SWCLK(PA14)连线2. 用杜邦线将BOOT0引脚短接到GND3. 测量VCC_3V3测试点电压连接ST-Link Utility看能否识别芯片ID若能识别说明硬件OK问题在软件或启动模式MQ-5读数始终为0或满量程1. 加热丝未通电HEATER_EN信号为低2. LM358恒流源损坏或R_sense虚焊3. ADC通道配置错误未使能时钟、未初始化GPIO1. 用万用表测HEATER_EN引脚电压正常应为3.3V2. 测R_sense两端电压应为2.5V若为0V查LM358第8脚VCC、第4脚GND是否正常3. 检查stm32f10x_rcc.c中RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_ADC1, ENABLE)是否执行在main()函数开头添加GPIO_SetBits(GPIOA, GPIO_Pin_1);观察PA1 LED是否亮验证GPIO初始化是否成功报警频繁误触发1. 中值滤波窗口太小11点2. DHT11温湿度读取失败导致动态阈值计算错误3. PCB布局中ADC走线靠近电源或高频信号线1. 修改gas_monitor.c中MEDIAN_BUF_SIZE为152. 在DHT11_ReadData()后添加if (dht11_data.humi 0xFF) { /* 读取失败使用上次有效值 */ }3. 检查PCB确保PA0走线短、直、远离LDO输出电容在仿真中将MQ-5Resistance固定为2000Ω观察PPM输出是否稳定在100±5ppm范围内EEPROM写入后读不出数据1. I2C上拉电阻过大10kΩ导致信号上升沿过缓2. AT24C02地址线A0/A1/A2接错导致器件地址非0xA03. 写入时未等待内部擦写完成1. 将SCL/SDA上拉电阻更换为4.7kΩ2. 对照原理图确认AT24C02的A0/A1/A2全部接地地址0x50或全部接VCC地址0x57本项目用0x503. 严格按3.3节所述加入忙等待循环用ST-Link Utility的Memory Browser功能直接查看0x50地址空间看写入的字节是否正确5.2 独家避坑技巧来自血泪教训的“老司机”经验技巧一“冷机标定”比“热机标定”更准。很多教程说标定R0要在MQ-5加热2分钟后进行。但我们实测发现刚加热完的传感器表面吸附的杂质会干扰读数。正确做法是让MQ-5持续加热30分钟然后断电冷却至室温约25℃再重新上电加热等待5分钟稳定后再执行长按按键标定。这样得到的R0在后续3个月测试中浓度读数漂移±2%。技巧二DHT11的“握手失败”不是DHT11坏了而是时序没调好。DHT11对MCU的IO翻转速度极其敏感。我们最初用标准库GPIO_ResetBits()/GPIO_SetBits()发现握手成功率仅60%。后来改用GPIO_WriteBit()配合__nop()精确延时将“主机拉低80μs”、“释放20μs”、“等待80μs响应”等关键时序误差控制在±1μs内成功率提升至100%。代码片段GPIO_ResetBits(GPIOA, GPIO_Pin_0); for(uint8_t i0; i80; i) __nop(); // 精确80μs。技巧三Proteus仿真中“ADC读数不准”的终极解法。默认Proteus的STM32模型ADC精度只有8位。要获得12位效果必须双击U1在Properties面板中将ADC Resolution从8-bit改为12-bit并将ADC Reference Voltage设为3.3。否则无论你代码写得多完美仿真里看到的都是“马赛克”数据。技巧四继电器“哒哒”异响的静音秘诀。继电器吸合时的机械撞击声在安静的卧室或书房会很刺耳。原理图中已预留了静音电容C_silence100nF/50V并联在继电器线圈两端。这个电容能吸收吸合瞬间的电流尖峰将噪音降低30dB。实测效果加装后距离1米听不到“哒”声只有轻微的“噗”声。6. 后续扩展与工程化建议从开源项目到产品化的最后一公里这个开源项目已经具备了产品化的坚实骨架但要真正走向市场还需跨越几道坎。第一道坎认证合规。民用燃气报警器在中国必须通过CMA认证中国计量认证核心指标是报警误差±5%FS、响应时间≤30s、抗干扰性如手机信号、电机启停。原理图中的TVS管SMAJ5.0A、Y电容2.2nF/250VAC、共模电感600Ω100MHz都是为EMC测试准备的。建议下一步将PCB送至SGS或华测检测做静电放电ESD、电快速瞬变脉冲群EFT测试根据报告微调滤波参数。第二道坎量产工艺。嘉立创打样的PCB焊盘尺寸是按手工焊接优化的。量产时需将MQ-5的加热丝焊盘Heater Pad加大至2mm×2mm并开钢网窗确保锡膏量充足避免回流焊后虚焊。BOM清单中所有电阻电容统一为0805封装便于贴片机作业。第三道坎固件升级。当前是裸机程序OTA升级需额外硬件如ESP8266模块。更务实的方案是在main.c中预留一个Bootloader区域2KB用USART1实现简易ISP。用户只需用USB转TTL模块发送特定指令即可擦除APP区并接收新固件。这部分代码已在开源包的Bootloader
返回列表