System · 系统实现

三层架构,一条告警链路

感知层负责"看见",计算层负责"判定与分发",执行层负责"提醒到人"。 层与层之间用两条独立通道通信:视觉走 USB 摄像头,周界与头盔指令走串口/蓝牙。

01 · 总体架构
感知层 · SENSE

摄像头 ×4 + 红外对射 ×4

USB 摄像头采集画面(640×640,目标 15FPS);E18-D80NK 红外对射看守周界,遮挡即入侵。

计算层 · COMPUTE

笔记本上位机(Python)

OpenCV 多线程采集 → YOLOv8 批量推理 → ROI 判定 → 事件编排(语音/指令/记录)。

通道 · LINK

两条串口链路

HC-05 蓝牙 SPP ↔ 头盔 STM32(38400bps);CH340 USB 串口 ↔ 周界板(115200bps)。

执行层 · ACT

头盔端 + 现场声光

STM32F103C8T6 驱动语音、震动马达、红/绿灯与蜂鸣器;周界触发现场声光报警。

02 · 硬件构成

现成模块搭建,无需焊接

模块型号 / 说明角色
笔记本上位机Windows 笔记本,USB 摄像头 ≤4 路,CPU 推理(有 GPU 自动加速)计算 / 判定
头盔主控STM32F103C8T6(Blue Pill),Arduino 框架烧录;另备 ESP32 WiFi 方案执行
蓝牙模块HC-05,SPP 从机 38400bps,配对名 SafeHelmet通信
周界传感E18-D80NK 漫反射红外光电开关 ×4,周界 STM32 轮询 GPIO感知
提醒执行器语音播放模块、震动马达模块、红/绿 LED 模块、有源蜂鸣器(均成品模块,杜邦线直插)执行
周界串口CH340 USB 转串口,连接周界 STM32 上报事件通信

完整采购清单与引脚分配见项目《硬件采购清单》《头盔端设计说明》文档。

03 · 通信协议

文本行协议,一行一指令

笔记本 → 头盔(HC-05 蓝牙)

指令含义
D1 – D4区域 1–4 检测到危险(区域与摄像头的对应关系在界面中自由分配)
CLEAR所有区域安全,解除告警
VIB触发头盔震动 500ms
TEST模拟完整报警流程(演示用)
STATUS查询头盔端状态

头盔/周界 → 笔记本

指令含义
INTRUSION:N第 N 路红外被遮挡(周界入侵)
CLEAR:N第 N 路红外恢复
TEST_BTN头盔测试按钮被按下
OK:STM32_READY头盔固件就绪
04 · 上位机软件

一个窗口看见全部状态

上位机用 Python + customtkinter 构建,深色工地安全主题(本站同一视觉语言)。 左侧边栏完成全部设备管理:扫描后用下拉框把任意摄像头分配到区域 1–4(路数 1–4 自选, 画面网格随数量自适应);HC-05 蓝牙与 CH340 周界串口均提供端口下拉选择与运行中连接。 主区从上到下是安全/危险状态横幅、视频网格与彩色事件日志;告警触发时系统会用 TTS 语音播报具体危险("X号区域危险区发现人员"等,预录语音兜底)。 所有事件自动结构化记录,点击「导出 Excel 记录」即可生成带样式、带筛选的报表。

上位机 v2.1 安全状态界面:绿色横幅、区域分配下拉、串口连接卡与双路摄像头画面
安全状态:左侧为摄像头区域分配与串口连接卡,区域1/2 已分配 CAM 0/1
上位机 v2.1 危险告警界面:红色横幅显示区域1、警示斜纹、IR2 变红、日志出现区域告警
危险状态:横幅指明"区域1"、黄黑警示条纹出现、IR2 变红、TTS 语音同步播报
模块职责
camera_manager多路摄像头异步采集、区域分配连接、无信号降级、后台扫描不阻塞界面
yolo_detectorYOLOv8 批量推理、person 过滤、按区域槽位的 ROI 射线法判定
event_handler告警分发:TTS 语音播报、串口指令、3 秒冷却防抖、静音开关
voice_broadcasterWindows TTS 中文语音播报(专职线程 + 队列),不可用时回退预录 mp3
serial_comms / perimeter_listenerHC-05 蓝牙收发与 CH340 周界事件监听,支持界面选择端口运行中连接
data_recorder事件结构化记录 + openpyxl 导出 Excel(检测记录 / 概要两个工作表)
overlay_renderer视频画面合成:检测框、ROI、告警边框与"区域 N · CAM X"中文标注(PIL 字体渲染,无乱码)
05 · 头盔端固件

STM32 为主,ESP32 双方案

方案 A · 当前主线

STM32F103C8T6 + HC-05

Arduino 框架烧录,USART1 接 HC-05 收指令;PA0/PA1 驱动呼吸绿灯与红色警示灯(PWM),PA4 震动马达、PA5 蜂鸣器、PA6 测试按钮,PB0/1/3/4 读取 4 路红外。

固件已实现
方案 B · 备选

ESP32 + WiFi TCP

ESP32-DevKitC 连接笔记本热点,TCP Client 对接上位机,指令语义与 STM32 方案一致,作为无线链路的替代验证方案保留。

固件已实现
头盔端指示语义:绿色呼吸灯 = 系统运行;红灯亮 2 秒 = 对应区域危险; 震动 0.5 秒 = 危险/入侵提醒;周界入侵时现场蜂鸣器 + 红灯同步工作。