
项目编号X602101| 主控 STM32F103C8T6 ESP32-CAM | 判环 豆包多模态大模型 | 链路 HTTP POST 图传 TCP Socket摘要本文介绍一套基于 STM32 的智能报靶器。射击动作触发 ESP32-CAM 抓拍靶面图像经 8266wifi 热点以 HTTP POST 上传服务端先做灰度化与降低亮度预处理再由豆包多模态大模型doubao-seed-1-6-flash-250828判环输出 010 环纯数字脱靶记 0判环结果回传到现场的 STM32F103C8T6驱动 ASRPRO 语音模块播报「X 环 / 脱靶」成绩按「终端 时间戳」写入 MySQLAPP 端提供登录注册、终端管理、实时成绩与历史成绩页面。服务端基于 JeeSite 平台与 Spring Boot 构建。文末附判环提示词、成绩记录切片与部署核对清单。0.1 技术栈速览组成技术 / 参数说明主控STM32F103C8T6Keil 5 开发调度抓拍与播报图传ESP32-CAMIO1→PA10、IO3←PA9Wi-Fi 接 8266wifi 热点HTTP POST 上传靶面图像语音ASRPROPB5→PA3、PC4→PA2播报「X 环 / 脱靶」显示OLED12864IICSCL→PA6 / SDA→PA7刷新本次与上次成绩触发按键 OUT→PA0射击动作触发抓拍指示红外激光 CTR→PC15蜂鸣器 PB1靶面指示与声音提示服务端JeeSite Java / Spring Boot MySQL图像预处理 判环调度 成绩落库AI 判环豆包多模态 doubao-seed-1-6-flash-250828输出 010 环纯数字脱靶记 0APP手机 APP登录 / 终端管理 / 实时与历史成绩0.2 通信通道速查图像上传 : ESP32-CAM --HTTP POST-- 服务端Wi-Fi 热点 8266wifi 结果回传 : 服务端 --HTTP POST-- ESP32-CAM -- STM32串口 PA10 / PA9 语音播报 : STM32 --串口 PA3 / PA2-- ASRPRO本地播报不依赖网络 数据交互 : APP / 终端状态 ----TCP Socket---- 服务端 判环输出 : 010 环纯数字脱靶记 0成绩按 终端时间戳 落库一、项目基本情况1.1 系统定位与技术架构实弹训练离不开报靶打完一发报几环、记多少传统流程要么靠人工读靶要么派人趴在靶壕里报数 —— 既慢也不安全。本项目把这事交给一套硬件 AI 的组合射击动作触发 ESP32-CAM 抓拍靶面图像经 Wi-Fi 上传服务端由豆包多模态大模型完成判环结果回传到现场的 STM32驱动 ASRPRO 语音模块把「几环 / 脱靶」直接喊出来APP 端同步显示本次与历史成绩每一条记录都自动落库。射手不离开射击位就能听到报环训练效率与安全性同时提升。系统自上而下分四层应用层是手机 APP承担登录、终端管理与成绩展示智能分析层是服务端基于 JeeSite 平台与 Spring Boot 构建负责图像预处理、调用豆包多模态模型判环与成绩落库传输层由三条通道组成 —— ESP32-CAM 的图像上传HTTP POST、判环结果回传与数据交互TCP Socket接入环境是 8266wifi 热点感知执行层以 STM32F103C8T6 为主控带 ESP32-CAM 图传、ASRPRO 语音、OLED12864 显示、红外激光指示、按键与蜂鸣器。各层分工如下层次承担角色本次实现应用层使用者入口手机 APP登录注册 / 终端管理 / 实时成绩 / 历史成绩 / 个人中心智能分析层判环与数据JeeSite Spring Boot图像预处理、豆包多模态模型判环、MySQL 落库传输层图像与数据通道HTTP POST 图像上传 TCP Socket 数据交互接入 8266wifi 热点感知执行层采集与提示STM32F103C8T6 主控 ESP32-CAM ASRPRO 语音 OLED 声光提示▲ 图 1 系统总体架构图四层之间流动的是两类信息向上是「靶面图像 成绩数据」向下是「抓拍触发 播报结果」。判环全部放在服务端完成硬件端只负责抓拍、播报与就地提示 —— 这样换模型、调判环规则都不需要动固件语音播报的规则也可以随训练要求灵活调整。打完一发语音直接报「8 环」或「脱靶」成绩同时进 APP 与数据库 —— 「抓拍即判、判完即报」是这套系统的主线。1.2 硬件构成与引脚连接硬件部分以 STM32F103C8T6 最小系统板为主控ESP32-CAM 占用一路串口完成图像与指令交互ASRPRO 语音模块占用另一路串口负责播报OLED、按键、激光与蜂鸣器由 IIC 与 GPIO 驱动。七个器件的分工与连接方式如下器件作用连接与说明STM32F103C8T6 核心板主控Keil 5 开发调度抓拍、接收判环结果、驱动语音播报与外设ESP32-CAM靶面图像采集串口接主控IO1(TX)→PA10、IO3(RX)→PA9射击触发后抓拍靶面ASRPRO 语音模块语音报环双向串口PB5→PA3、PC4→PA2播报「X 环 / 脱靶」OLED12864 显示屏本地显示IIC 接口SCL→PA6、SDA→PA7刷新本次与上次成绩红外激光模块靶面指示控制脚 CTR→PC15辅助对准靶面区域按键射击触发 / 交互输出 OUT→PA0触发抓拍与本地交互有源蜂鸣器声音提示GPIO PB1 直接驱动配合语音给出听觉反馈▲ 图 2 硬件系统原理框图注意引脚来源说明项目原理图为矢量图且带完整文字层本文全部引脚号均由原理图文字层逐项提取再与实物照片交叉核对并非从图片目测。ESP32-CAM 的 IO0 在烧录时接地、运行时悬空属模块标准用法不占用主控引脚。注意器件名说明项目介绍中的「arspro」按原理图与实物标注统一写作 ASRPRO —— 这是天问块ASRPRO语音识别与播报模块的常规写法两者指同一器件。1.3 软件与运行环境组成部分技术选型说明硬件端开发Keil 5STM32F103C8T6 固件触发调度、串口交互、外设驱动图传端ESP32-CAM 固件Wi-Fi 接入 8266wifi 热点HTTP POST 上传靶面图像语音端ASRPRO天问块接收 STM32 指令播报环数与脱靶提示服务端平台JeeSite Java / Spring Boot图像预处理、调用多模态模型、成绩落库与接口服务AI 判环豆包多模态大模型识别靶面弹孔位置输出 010 环的纯数字结果APP 端手机 APP登录注册、终端管理、实时成绩与历史成绩数据库MySQL成绩按「终端 时间戳」落库支撑历史查询与统计判环这一环的工程细节在《智能报靶器系统逻辑流程》里写得非常清楚服务端收到图像后先做灰度化与降低亮度两步预处理压掉靶纸反光对识别的干扰再调用豆包模型。模型使用 doubao-seed-1-6-flash-250828 版本提示词里明确要求关闭思考过程、只输出数字结果、没有红点时输出 0 —— 把大模型的输出约束成一个可以直接落库的整数避免自由文本带来的解析歧义。异常侧模型判环失败或通道中断时系统在 APP 与现场同时给出提示不会出现「打了没数」的静默失败。二、系统架构设计2.1 系统功能结构按「硬件系统 / 软件系统 / 交付服务」三列拆开系统的功能边界如下图。值得留意的是报靶闭环的三个环节抓拍由射击动作触发、判环在服务端由大模型完成、播报由现场语音模块落地 —— 三者解耦任何一环都可以单独替换。▲ 图 3 系统功能结构图硬件系统 / 软件系统 / 交付服务三列的分工边界清晰硬件端负责触发、抓拍与语音播报服务端负责预处理、判环与落库APP 端负责账号、终端绑定与成绩呈现。判环规则收敛在服务端模型层这是整套系统「换规则不改硬件」设计思路的落点。2.2 硬件原理图与实物下图是项目交付的完整原理图ESP32-CAM 与 OLED12864 占据图传与显示分区ASRPRO、红外激光、按键与蜂鸣器围绕 STM32F103C8T6 核心板展开。▲ 图 4 硬件原理图STM32F103C8T6 ESP32-CAM ASRPRO OLED▲ 图 5 系统实物整机核心板 扩展板 OLED 按键实机为「核心板 扩展板」的两层结构核心板经排座插装在扩展板上OLED、按键与蜂鸣器直接由扩展板走线ESP32-CAM 与 ASRPRO 经排针 / 杜邦线接入。下面两张实拍分别展示核心板细节与整机接线▲ 图 6 硬件核心板实拍STM32F103C8T6 最小系统板▲ 图 7 硬件接线实拍ESP32-CAM / ASRPRO / OLED / 按键走线2.3 通信链路与报靶闭环系统的通信由三条通道组成ESP32-CAM 先接入 8266wifi 热点Wi-Fi 名称 8266wifi通过 HTTP POST 把靶面图像上传服务端服务端判环完成后经 HTTP POST 回传结果成绩数据与状态交互走 TCP Socket 通道。下图把一次完整射击的报靶闭环摊开成四条泳道▲ 图 8 射击报靶闭环时序图APP · 服务端 · 图传 · 主控闭环里有三处值得注意的设计其一抓拍由射击动作触发而不是定时轮询弹孔在靶纸上停留的窗口期正好被抓拍覆盖其二判环结果与成绩数据分通道回传语音播报走 STM32→ASRPRO 的本地串口不依赖网络往返时延报环更跟手其三服务端把模型输出约束为纯数字落库前不需要再做文本解析「本次成绩」与「上次成绩」在 APP 上同步刷新。2.4 判环规则与实测判环基准是标准胸环靶以靶心为圆心的十一个环带命中最外环记 1 环、靶心记 10 环、脱靶记 0 环。服务端把这张靶纸连同提示词一起交给豆包多模态模型实测一次完整流程从射击触发到语音报环在数秒内完成提示词要点节选 关闭思考过程 识别图中靶纸上的弹孔位置输出对应的环数 只输出数字结果没有红点时输出 0。实测成绩APP 实时成绩页显示「本次成绩8 环、上次成绩8 环」历史成绩里保留 8 环与 10 环的完整记录2026-03-28 11:55每条记录带终端编号与时间戳。演示终端信息终端编号 ZDBH01、类型 报靶器、名称「终端」使用人为演示账号个人信息已脱敏。三、系统界面展示3.1 登录与终端管理APP 端登录页支持账号密码登录注册页完成账号创建登录后进入首页终端管理页对报靶器做注册绑定与在线状态管理▲ 图 9 APP 登录与注册页演示账号信息已脱敏▲ 图 10 APP 首页与终端管理页终端绑定是成绩归属的依据每台报靶器注册后获得终端编号射击成绩都挂在对应终端名下多台设备同时训练也不会串记录。3.2 成绩展示实时成绩页是射手最常看的页面本次成绩、上次成绩并排显示同时保留靶面快照供复核历史成绩页按时间倒序回看每一次训练记录▲ 图 11 APP 实时成绩页本次 / 上次成绩与靶面快照▲ 图 12 APP 历史成绩与个人中心成绩页与个人中心组合起来构成完整的训练档案单次成绩看「打得怎么样」历史记录看「进步曲线」数据的采集全程无人工参与。3.3 靶纸基准与模型配置判环的准确性取决于两个输入靶纸基准与模型配置。下图分别是标准胸环靶与服务端的模型配置页 —— 模型版本、提示词与接入参数都在这一页维护▲ 图 13 胸环靶靶纸与判环基准▲ 图 14 服务端模型配置页豆包多模态模型接入参数把判环规则放在服务端配置页而不是烧进固件好处是显性的换靶纸型号、调环数口径、升级模型版本都只是配置页里的一次修改硬件端零改动。3.4 实测数据汇总观测项实测值出处实时成绩本次 8 环 / 上次 8 环APP 实时成绩页历史成绩8 环与 10 环记录2026-03-28 11:55APP 历史成绩页判环输出010 环纯数字脱靶记 0模型提示词与判环结果演示终端ZDBH01 · 报靶器 · 状态在线APP 终端管理页判环链路射击触发 → 抓拍 → 判环 → 语音报环演示视频与系统逻辑流程文档图传通道8266wifi 热点 HTTP POST 上传wifi 连接说明与演示视频四、系统视频展示项目交付的演示视频完整走了一遍报靶闭环从射击触发、ESP32-CAM 抓拍到服务端判环、APP 成绩刷新与现场语音报环。视频封面里可以看到两个画面左半是系统原理图语音模块与摄像头模块分区清晰右半是 ESP32-CAM 的实时取景 —— 胸环靶、红色激光指示点与画面指示箭头同框▲ 图 15 演示视频封面左侧原理图区 右侧 ESP32-CAM 实时画面演示环节射击触发扣动扳机按键回路捕获射击动作触发抓拍图像上传ESP32-CAM 抓拍靶面经 8266wifi 热点 HTTP POST 上传服务端判环与落库服务端预处理后调用豆包模型输出环数并写入成绩库结果呈现APP 实时成绩刷新STM32 驱动 ASRPRO 播报「X 环 / 脱靶」。注意说明视频为项目自带素材本节截图取自其封面帧完整演示以交付的视频文件为准发布时可按平台要求上传或引用。五、获取方法5.1 交付内容交付项内容格式 / 说明硬件实物核心板 扩展板 ESP32-CAM / ASRPRO 等整套装置已完成联调语音报环实测可用程序源码硬件端 服务端 APP 端硬件端 Keil 5 工程服务端 Java / Spring BootAPP 安装包与工程硬件原理图嘉立创 EDA 源文件附 PDF / PNG 等导出格式文字层完整演示材料系统逻辑流程文档 演示视频报靶闭环全流程演示约 4 分钟远程服务环境搭建、程序调试、小修答疑按交付清单逐项提供5.2 部署要点部署步骤硬件端Keil 5 打开工程按 1.2 引脚表核对 ESP32-CAM / ASRPRO / OLED 接线后烧录图传端ESP32-CAM 固件配置 8266wifi 热点与服务端地址确认 HTTP POST 上传可达服务端部署 JeeSite 平台配置 MySQL 数据源与豆包模型的接入参数见 3.3 模型配置页APP 端安装 APP 并注册账号在终端管理页绑定报靶器终端联调实弹或手动触发一次射击核对抓拍、判环、落库与语音播报四步是否闭环。注意移植提示ESP32-CAM 与 ASRPRO 各占用一路串口移植到其他主控时注意串口资源分配判环提示词与模型版本在服务端配置页维护更换靶纸型号时同步更新判环基准。5.3 适用场景射击训练场馆的自动报靶与成绩管理射手不用离开射击位竞技场馆的多人多靶位成绩自动采集与统计激光模拟射击、水弹竞技等替代场景的判环与计分嵌入式与 AI 多模态联动的教学实训项目。附录 A 判环提示词实测提示词要点节选 关闭思考过程 识别图中靶纸上的弹孔位置输出对应的环数 只输出数字结果没有红点时输出 0。 模型版本doubao-seed-1-6-flash-250828 预处理 灰度化 降低亮度压反光干扰 输出约束纯数字结果无文本解释附录 B 成绩记录实测实时成绩页 本次成绩8 环 上次成绩8 环 历史成绩节选 时间 环数 终端 2026-03-28 11:55 10 环 ZDBH01 2026-03-28 11:55 8 环 ZDBH01 终端信息 终端编号 ZDBH01 · 类型 报靶器 · 名称「终端」· 使用人演示账号已脱敏附录 C 部署核对清单1. 主控固件 Keil 5 工程按引脚表核对接线 2. 图传通道 ESP32-CAM 接入 8266wifiHTTP POST 上传可达 3. 服务端 JeeSite 部署完成MySQL 就绪模型配置页填好接入参数 4. APP 端 注册账号终端管理页绑定 ZDBH01 5. 闭环联调 触发一次射击抓拍 → 判环 → 落库 → 语音播报项目编号 X602101。本文所述系统已完成实测验证相关技术问题可在评论区交流。