# 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 模式管理低功耗

---

