Files
ManGoWalk_STM32/README.md
2025-06-25 16:58:26 +08:00

108 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ManGoWalk --- 智能盲杖导航系统
<a name="my-desiki-anime-girl"></a>
![随心一听](https://tse1-mm.cn.bing.net/th/id/OIP-C.lOSBhSbq-aQG17hhtzgXNAHaKz?rs=1&pid=ImgDetMain)
## 日志
2025.6.4
添加了Thread X 操作系统
2025.6.25
# README: STM32H563 ThreadX Embedded AI System
## ✅ 当前已实现功能
本系统基于 STM32H563ZIT6 和 ThreadX 实时操作系统,模块化地实现了以下核心功能:
### 1. BLE 通信模块HCBle.c
* 支持 DMA + 空闲中断模式接收
* 支持 JSON 指令解析与封装(如:`{"leftSpeed":X,"rightSpeed":Y}`
* 支持 BLE 指令转事件 + 数据发送任务队列
### 2. GPS 定位模块gps.c
* 支持 DMA + 固定长度接收
* 提供位置数据 `lat/lon` 解析与格式转换
* 冷启动支持(首次 GPS fix 时发送提示)
### 3. IMU 模块imu.c
* 模拟读取 X 轴角度(后续替换为实际驱动) 暂时还未完成
* 结合 GPS 信息生成完整的 Location JSON 包发送至 APP
### 4. 超声波避障模块Ultrasound.c
* 支持 DWT 微秒延迟与定时捕获
* 检测障碍 <30cm 自动触发蜂鸣器震动器
### 5. 控制逻辑线程Main\_Control
* 管理 BLE 控制与避障响应行为
* 控制蜂鸣器与振动提示器
### 6. 多线程调度ThreadX
* 所有任务通过 ThreadX 线程调度与事件中转完成解耦
* BLE/GPS/IMU/Ultrasound 主从线程结构分离清晰
## 🚧 尚未实现或测试模块
| 模块 | 当前状态 | 说明 |
| ---------------- | ----- | ----------------------------------- |
| IMU 实际驱动 | 未实现 | 当前为模拟值 95°,需替换为传感器读取 |
| OpenMV 视觉模块 | 未接入 | 后续可通过 UART/USB 接口处理红绿灯识别 |
| 电机控制接口 | 未实现 | BLE 指令接收后尚未真正调用 `set_motor_speed()` |
| UI 显示 / APP 交互测试 | 🔄进行中 | JSON 包格式统一需手机APP实际验证 |
## 🗺️ 系统拓扑图参考
请参考`ThreadX 系统结构图.png`
<img src="/TuoPu.png" alt="ThreadX 系统结构图" style="zoom:50%;" />
## 🗺️ 引脚配置参考
请参考:`Point 引脚配置图.png`
<img src="/point.png" alt="Point 引脚配置图" style="zoom:50%;" />
对于图中的有更改过的部分引脚进行说明
|引脚名称|用途|外设|
|PC9|HC_Trig|超声波|
|PC8|HC_Echo|超声波|
|PB8|蓝牙接收---GPDMA1|BLE|
|PB9|蓝牙发送---GPDMA1|BLE|
|PD6|GPS接收---GPDMA1|GPS|
|PD5|GPS发送|GPS|
## 📋 开发环境配置说明
### 软件工具
* **IDE**STM32CubeIDE / Keil MDK
* **RTOS**ThreadX (via STM32CubeMX Middleware)
* **串口调试**串口助手、BLE调试助手
### 编译配置
* 使用 `-O1` 优化选项
* 启用 STM32CubeMX 中的 ThreadX 中间件
* 打开 UART DMA + IDLE、定时器中断等相关配置
### 推荐硬件连接
* **GPS模块**:连接 USART2 (DMA + TC 中断)
* **BLE模块**:连接 USART1 (DMA + IDLE)
* **超声波模块**:使用 TIM2 输入捕获
* **IMU模块**I2C / SPI 接口(待扩展)
* **蜂鸣器与震动马达**:普通 GPIO 控制
## 🛠️ 接下来建议的开发步骤
1. **完成 IMU 驱动集成**:读取 MPU6050 / ICM20948 等传感器
2. **实现电机控制接口**:将 BLE 指令转换为 PWM 或电机驱动调用
3. **集成 OpenMV 模块**:红绿灯识别后通过事件机制上报
4. **完善 APP 端联调**:调试 BLE 接收逻辑,验证 JSON 包格式
5. **加入 Watchdog 与线程看门狗**:防止任务异常卡死
6. **优化能耗管理**:使用 ThreadX 的 tickless 模式管理低功耗
---