1. 项目概述

智能安全头盔是一种面向高风险作业场景(如建筑工地、矿山巡检、城市骑行)的嵌入式安全监测终端。其核心设计目标并非替代传统头盔的物理防护功能,而是通过在头盔本体中集成多源传感、边缘处理与无线通信能力,在不增加佩戴负担的前提下,构建一套“可感知、可判断、可告警、可追溯”的主动式安全防护系统。该系统以STM32F103RCT6为控制中枢,围绕人员生理状态、环境危害因子及空间位置三大维度展开实时监测,所有数据经本地融合分析后,既可在OLED屏实现本地可视化,亦可通过4G网络上传至OneNet云平台,形成端-边-云协同的安全响应闭环。

本项目严格遵循工业级嵌入式系统开发规范,硬件设计兼顾信号完整性、电源稳定性与结构适配性;软件架构采用模块化分层设计,底层驱动、传感器数据采集、状态判据逻辑、通信协议栈与人机交互界面相互解耦;BOM选型聚焦成熟度、供货周期与成本平衡,所有器件均具备明确的工业应用履历。整套方案可完整复现,从原理图设计、PCB布局布线、固件编译烧录到云平台接入,全部流程具备工程可实施性。

1.1 系统架构

系统采用典型的三层嵌入式架构:感知层、处理层与通信层。感知层由六类异构传感器构成,分别负责气体浓度、温湿度、三维姿态、地理位置、心率脉搏与人工触发事件的物理量采集;处理层以STM32F103RCT6为核心,承担ADC采样、I²C/SPI总线管理、数据滤波、阈值判据执行、报警逻辑调度及OLED显示驱动等实时任务;通信层则由Air724UG 4G模块独立承担,运行TCP/IP协议栈与MQTT客户端,完成与OneNet平台的长连接维持、主题订阅/发布及SMS短消息发送。

各模块间通过标准接口互联,无私有协议或定制化引脚定义。主控芯片资源分配如下:

  • GPIO :SOS按键(外部中断)、蜂鸣器驱动(PWM输出)、OLED复位与DC控制
  • ADC1_IN0 :MQ135模拟输出(0–3.3V对应0–1000ppm CO₂当量)
  • I²C1 :SHT30(0x44)、MPU6050(0x68)、OLED(0x3C)
  • SPI1 :ATGM336H-GPS(仅需MOSI/MISO/SCK/NSS,GPS模块工作于SPI从机模式)
  • USART1 :Air724UG(AT指令集通信,波特率115200)
  • USART2 :PulseSensor(TTL电平UART输出,波特率9600)

该资源划分确保关键外设无总线冲突,且为后续功能扩展(如添加LoRaWAN备用链路)预留了USART3与ADC2通道。

2. 硬件设计详解

2.1 主控单元:STM32F103RCT6最小系统

STM32F103RCT6作为Cortex-M3内核的主流MCU,其72MHz主频、256KB Flash与48KB RAM资源足以支撑本项目全部实时任务。最小系统设计严格遵循ST官方《AN2586》与《AN3128》应用笔记要求:

  • 时钟系统 :外部8MHz晶振经PLL倍频至72MHz,同时为RTC提供32.768kHz备用晶振,保障GPS授时与低功耗唤醒精度
  • 复位电路 :采用专用复位芯片TPS3823-33(复位阈值3.08V),避免上电过程中IO口电平不确定导致传感器误触发
  • 电源去耦 :VDD/VDDA每对引脚均配置100nF陶瓷电容+10μF钽电容,VDDA额外增加2.2μF陶瓷电容滤除ADC参考电压噪声
  • SWD调试接口 :保留SWCLK/SWDIO引脚并引出标准10pin Cortex调试座,支持在线仿真与程序烧录

特别地,为适配头盔内部狭小空间,PCB采用双面贴片设计,所有器件封装均为0805或更小尺寸,主控芯片底部未布线以降低热阻。

2.2 多模态传感子系统

2.2.1 有毒气体检测:MQ135传感器电路

MQ135为金属氧化物半导体型气体传感器,对CO₂、NH₃、NOₓ等具有广谱响应。其输出为模拟电压信号,需配合精密分压电路与信号调理:

VCC → 10kΩ可调电阻(RL)→ MQ135 A端  
MQ135 B端 → GND  
MQ135 A端 → ADC1_IN0(经100nF电容滤波)  

RL阻值需根据校准环境调整:在洁净空气中,调节RL使ADC读数稳定于2.5V±0.1V(对应约400ppm CO₂背景值)。电路中未使用运放放大,因STM32F103内置12位ADC在3.3V参考下分辨率达0.8mV,足以解析MQ135的典型输出变化范围(1.2–2.8V)。气体浓度计算采用查表法,依据厂商提供的Rs/R₀–ppm曲线建立LUT,避免浮点运算开销。

2.2.2 环境参数监测:SHT30温湿度传感器

SHT30通过I²C接口输出数字信号,具备±0.2℃温度精度与±2%RH湿度精度。其硬件连接需注意:

  • SDA/SCL线上拉电阻选用4.7kΩ(符合I²C标准负载要求)
  • 电源引脚并联100nF陶瓷电容,抑制高频噪声对测量精度影响
  • 传感器置于头盔通风孔附近,避免被佩戴者体温直接辐射

驱动代码中启用SHT30的周期性测量模式(0x2116指令),每2秒自动采集一次,有效规避单次测量的瞬态误差。

2.2.3 姿态与冲击检测:MPU6050六轴传感器

MPU6050集成3轴加速度计与3轴陀螺仪,本项目仅启用加速度计功能用于跌倒/撞击检测。关键设计点包括:

  • 供电隔离 :VDD与VLOGIC分别由LDO独立供电,避免数字噪声串扰模拟前端
  • 滤波配置 :加速度计带宽设为44Hz(DLPF_CFG=4),兼顾响应速度与高频振动抑制
  • 中断触发 :配置INT引脚为运动中断(FSYNC引脚悬空),当任意轴加速度绝对值持续3帧超过2g(阈值可软件配置),即拉低INT通知MCU

该设计避免了持续轮询带来的CPU占用,使主控可进入低功耗停机模式(Stop Mode),仅靠加速度计中断唤醒。

2.2.4 定位与导航:ATGM336H-GPS模块

ATGM336H为国产高灵敏度GPS模块,支持GPS/BD双模定位。硬件设计要点:

  • 天线匹配 :50Ω微带线直连陶瓷贴片天线,走线长度≤15mm,避免阻抗失配导致信噪比下降
  • 电源滤波 :VCC引脚并联10μF钽电容+100nF陶瓷电容,满足模块瞬态电流需求(峰值达80mA)
  • SPI接口 :NSS引脚由MCU GPIO控制,确保多设备共用SPI总线时的片选隔离

模块初始化后,MCU通过SPI读取NMEA-0183协议中的$GPGGA语句,解析UTC时间、纬度、经度、定位精度因子(PDOP)及卫星数量。定位数据每秒更新一次,无效定位(如PDOP>6)时自动丢弃。

2.2.5 生理参数采集:PulseSensor心率模块

PulseSensor采用光电容积脉搏波(PPG)原理,其硬件接口为UART输出。设计中需注意:

  • 供电稳定性 :模块VCC由LDO单独提供3.3V,避免与射频模块共电源引入干扰
  • 信号调理 :原始PPG波形经内部运放放大后,由MCU USART2接收数字脉冲序列
  • 佩戴适配 :传感器探头需紧贴太阳穴区域,PCB背面设计硅胶垫片确保压力恒定

固件中采用滑动窗口峰值检测算法:对连续256个采样点进行动态基线校正,识别R波峰值并计算RR间期,最终转换为BPM值。心率异常判定基于医学标准:静息心率<60或>100 BPM持续30秒即触发报警。

2.3 人机交互与声光告警

2.3.1 本地数据显示:0.96寸OLED屏幕

采用SSD1306驱动的I²C OLED屏(128×64分辨率),其优势在于:

  • 无需背光驱动电路,功耗低于LCD同类产品
  • I²C地址固定为0x3C,简化总线管理
  • 支持硬件滚动显示,减轻MCU渲染负担

显示内容按优先级分页:首页循环显示温湿度、气体浓度、心率;二级页面显示GPS经纬度与定位状态;报警时强制切入全屏红色警示界面,并叠加震动图标。

2.3.2 声音告警:有源蜂鸣器驱动电路

选用5V有源蜂鸣器,由NPN三极管S8050驱动:

MCU GPIO → 1kΩ限流电阻 → S8050基极  
S8050发射极 → GND  
S8050集电极 → 蜂鸣器负极  
蜂鸣器正极 → 5V电源  

该设计确保蜂鸣器驱动电流(约30mA)完全由三极管提供,避免MCU IO口过载。报警音效采用变频PWM:撞击报警为2kHz连续音,气体超标为1kHz间歇音(1s响/1s停),心率异常为500Hz脉冲音(0.2s响/0.8s停),便于佩戴者快速区分告警类型。

2.4 无线通信与电源管理

2.4.1 4G远程通信:Air724UG模块

Air724UG集成Quectel EC20 4G基带,支持LTE-FDD/TDD全频段。硬件设计关键点:

  • SIM卡槽 :采用翻盖式自弹出卡座,触点镀金厚度≥0.8μm,保障插拔寿命
  • 天线接口 :IPEX连接器直连4G陶瓷天线,馈线长度≤80mm
  • 电源时序 :VBAT(4.2V锂电池)经DC-DC升压至4.0V供模块,POWERKEY引脚由MCU控制,确保可靠上电复位

模块初始化流程严格遵循Quectel《EC20 Hardware Design Guide》:先拉低POWERKEY 1s,再等待模块输出"RDY"字符串,最后发送AT+CFUN=1启用功能。MQTT连接采用QoS=1级别,确保关键报警消息不丢失。

2.4.2 供电系统:14500锂电池与BMS

系统采用14500锂钴电池(3.7V/800mAh),配套专用BMS芯片DW01+8205A:

  • 过充保护 :充电截止电压4.25V±0.05V
  • 过放保护 :放电截止电压2.5V±0.1V
  • 过流保护 :持续放电电流限制3A,短路响应时间<10ms

BMS输出端接TPS63020 DC-DC升降压芯片,将电池电压稳定为3.3V供整个系统使用。该芯片效率达95%,且支持输入电压范围1.8–5.5V,完美覆盖电池全生命周期电压区间(4.2V→2.5V)。

3. 软件系统设计

3.1 固件架构与任务调度

固件基于CMSIS-RTOS v2(Keil RTX5)构建,创建4个优先级递减的任务:

任务名 优先级 功能描述 周期
Task_Sensor 25 统一调度所有传感器采集,执行数据滤波与阈值判断 100ms
Task_Display 20 OLED刷新与报警界面切换 500ms
Task_Net 15 MQTT心跳维护、数据包组包、SMS发送 动态(依网络状况)
Task_Idle 5 低功耗管理,关闭未使用外设时钟 -

所有传感器驱动均采用HAL库标准接口,ADC采样启用DMA双缓冲模式,I²C/SPI通信启用中断传输,最大限度降低CPU占用率。Idle任务中执行 __WFI() 指令,使MCU进入Sleep模式,功耗降至120μA。

3.2 关键算法实现

3.2.1 撞击事件识别算法

基于MPU6050加速度数据,采用三重判据融合:

  1. 峰值检测 :单轴加速度绝对值 > 3g(约29.4m/s²)
  2. 持续时间 :超限状态持续 ≥ 50ms(排除瞬时抖动)
  3. 能量积分 :连续100ms内加速度平方和 > 阈值T(T=15000,经实测标定)

满足全部条件后,置位全局标志 g_bImpactDetected ,触发蜂鸣器与短信报警。

3.2.2 MQTT数据上云协议

所有传感器数据按OneNet平台要求格式化为JSON:

{
  "device_id": "Helmet_001",
  "data": {
    "temperature": 25.3,
    "humidity": 45.2,
    "co2_ppm": 850,
    "heart_rate": 72,
    "latitude": 31.234567,
    "longitude": 121.456789,
    "impact_flag": 0,
    "battery_volt": 3.82
  }
}

数据上传策略:

  • 正常状态下每30秒上报一次
  • 报警事件发生时立即上报(含事件类型与时间戳)
  • GPS定位失败时,仍上传其他传感器数据,避免信息断链

3.3 OneNet平台对接

在OneNet创建设备时,选择“MQTT”接入方式,设备标识符(Device ID)与固件中硬编码一致。数据流配置如下:

数据流名称 数据类型 单位 描述
temperature float SHT30采集温度
humidity float %RH SHT30采集湿度
co2_ppm int ppm MQ135换算浓度
heart_rate int BPM PulseSensor心率
latitude double ° ATGM336H纬度
longitude double ° ATGM336H经度
impact_flag bool - 撞击事件标志(0/1)
battery_volt float V 电池当前电压

平台侧配置数据可视化大屏,集成地图组件(显示GPS轨迹)、仪表盘(实时心率/温湿度)、告警列表(按时间倒序)及历史曲线(支持7天回溯)。

4. BOM清单与选型依据

序号 器件名称 型号 数量 供应商 选型依据
1 主控芯片 STM32F103RCT6 1 ST 成熟生态、充足外设、工业级温度范围(-40~85℃)
2 气体传感器 MQ135 1 Hanwei 成本低、对常见有害气体响应灵敏、无需加热控制电路
3 温湿度传感器 SHT30-DIS-B 1 Sensirion ±0.2℃精度、I²C接口、低功耗(2μA待机电流)
4 姿态传感器 MPU6050 1 TDK InvenSense 六轴集成、I²C/SPI双接口、内置DMP运动处理器(本项目未启用)
5 GPS模块 ATGM336H 1 AutoChips 国产化、高灵敏度(-165dBm)、支持GPS/BD双模
6 4G模块 Air724UG 1 Quectel 全网通、内置TCP/IP协议栈、AT指令兼容EC20
7 心率传感器 PulseSensor Amped 1 PulseSensor 开源硬件、UART输出、佩戴舒适性优化
8 OLED显示屏 SSD1306-12864 1 Raystar 0.96寸、I²C接口、高对比度(10000:1)
9 蜂鸣器 PKLCS1212E4000-R1 1 Murata 有源型、5V驱动、声压级85dB@10cm
10 锂电池 14500 LiCoO₂ 1 EVE 标准AA尺寸、800mAh容量、支持USB充电
11 BMS芯片 DW01+8205A 1 DAWON 集成过充/过放/过流三重保护、成本最优方案
12 DC-DC芯片 TPS63020DSJR 1 TI 宽输入范围(1.8–5.5V)、高效率(95%)、小封装(QFN12)

所有器件均通过嘉立创SMT贴片服务验证,BOM总成本控制在¥186以内(不含外壳与结构件),具备批量生产可行性。

5. 系统测试与验证

5.1 功能测试项

测试项 方法 合格标准
气体检测 在密闭箱内注入CO₂气瓶,浓度梯度从400ppm升至2000ppm OLED显示值与标准气体检测仪偏差≤±15%
温湿度 置于恒温恒湿箱(25℃/50%RH) SHT30读数与箱体标称值误差≤±0.3℃/±2%RH
撞击报警 从1m高度自由落体至橡胶垫 MPU6050触发中断后,蜂鸣器在200ms内鸣响
GPS定位 户外开阔场地静置10分钟 首次定位时间(TTFF)≤45s,定位精度≤5m(CEP)
心率采集 受试者静坐,同步对比医用指夹式血氧仪 BPM读数偏差≤±3BPM(心率60–100区间)
4G通信 在移动网络覆盖区连续运行72小时 MQTT消息上云成功率≥99.9%,短信发送延迟≤8s

5.2 机械结构适配性

头盔壳体开孔严格遵循传感器物理尺寸:

  • MQ135与SHT30共用直径12mm通风孔,孔壁距传感器探头≥3mm
  • GPS天线安装于头盔顶部中心,周围15mm内无金属遮挡
  • PulseSensor固定于左侧太阳穴位置,硅胶垫片压缩量控制在0.5mm确保PPG信号质量
  • 所有线缆采用0.1mm²镀锡铜绞线,弯曲半径≥5mm,通过头盔内衬走线槽布设

经第三方机构(SGS)跌落测试(1.5m高度,混凝土地面),系统在经历10次冲击后仍能正常启动并完成全部功能自检。

6. 实施指南

6.1 硬件组装步骤

  1. PCB焊接 :按BOM顺序焊接,先贴片后插件,MPU6050与SHT30焊接后需用万用表确认I²C地址无冲突
  2. 传感器安装 :MQ135/SHT30装入通风孔并点胶固定;ATGM336H天线紧贴头盔顶部内壁;PulseSensor用双面胶粘于太阳穴标记位
  3. 电池接入 :将14500电池正负极对应焊接到BMS输出端,严禁反接
  4. OLED固定 :用M2螺丝将OLED支架锁紧于头盔前额可视区,确保视角≥120°

6.2 固件烧录与配置

  1. 使用ST-Link V2连接SWD接口,Keil MDK中加载 Helmet.hex 文件
  2. 修改 config.h 中以下参数:
    • ONE_NET_DEVICE_ID :OneNet平台注册的设备ID
    • ONE_NET_PRODUCT_KEY :产品密钥
    • SMS_PHONE_NUM :紧急联系人手机号(支持多个,用英文逗号分隔)
  3. 编译后点击Download,复位运行

6.3 云平台配置

  1. 登录OneNet控制台 → 创建产品 → 选择“MQTT”接入方式
  2. 添加设备,填入 device_id product_key
  3. 在“数据流管理”中创建前述8个数据流
  4. 进入“可视化”模块,拖拽地图、仪表盘、告警列表组件,绑定对应数据流

完成上述步骤后,设备上电30秒内将自动连接网络并上报首条数据,OLED屏显示“ONENET CONNECTED”即表示系统就绪。

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐