Files
archery/README.md
2025-11-21 17:50:02 +08:00

121 lines
3.4 KiB
Markdown
Raw Permalink 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.

# 🎯 激光射击系统(双版本)
适用于 **MaixPy** 平台支持远程控制、电池监测、Wi-Fi 连接及 OTA 升级。
提供两个独立实现版本,共享相同网络协议与 OTA 机制,便于统一部署管理:
- `main.py`**视觉测距版**
- `laser.py`**激光测距版**
---
## 📁 项目结构
```
laser_shooting_system/
├── README.md
├── main.py # 视觉测距版主程序
└── laser.py # 激光测距版主程序
```
---
## ⚙️ 硬件依赖
| 版本 | 必需硬件 |
|------------|----------------------------------------|
| `main.py` | Maix 系列开发板 + 摄像头 + 其他硬件 |
| `laser.py` | Maix 系列开发板 + 激光测距模块I²C + 摄像头 + 其他硬件) |
> 💡 **注意:引脚复用风险**
> Maix 开发板部分 GPIO 兼容多协议(如 Wi-Fi / I²C 复用 A15/A27
> **Wi-Fi 初始化前禁止提前配置 I²C 引脚!**
### ❗ 关键提示
| 问题场景 | 后果 |
|---------|------|
| 提前初始化 I²C | Wi-Fi 初始化失败、OTA 中断、系统重启 |
**正确做法:**
- **`main.py`(视觉版)&`laser.py`(激光版)**
使用wifi时启用下面代码注释与WiFi复用的
```python
# 以下代码(如有,请启用):
# pinmap.set_pin_function("A15", "I2C5_SCL")
# pinmap.set_pin_function("A27", "I2C5_SDA")
```
## 📡 网络通信协议TCP / JSON
设备上电后自动连预设服务器,支持以下指令:
```json
{"data": {"cmd": N, "ssid": "...", "password": "..."}}
```
| `cmd` | 参数 | 功能说明 |
|-------|---------------------|------------------------------|
| 2 | — | 开启激光校准模式 |
| 3 | — | 关闭激光 |
| 4 | — | 查询电池电量 & 电压 |
| 5 | `ssid`, `password` | 配置 Wi-Fi + 触发 OTA 升级 |
| 6 | — | 返回当前 IP 地址 |
| 7 | — | 已联网时,直接执行 OTA 下载 |
### 示例交互
▶️ 下发指令(服务器 → 设备):
```json
{"data": {"cmd": 6}}
```
◀️ 设备响应(设备 → 服务器):
```json
{"result": "current_ip", "ip": "192.168.1.105"}
```
---
## 🛠️ 部署步骤
1. **选择版本**
- 固定场景 / 低成本 → `main.py`
- 高精度需求 → `laser.py`
2. **烧录程序**
- 将选定文件重命名为 `main.py`,或通过 MaixPy IDE 直接运行
3. **首次配置 Wi-Fi**
- 串口下发,或服务器推送 `cmd=5`
```json
{"data": {"cmd": 5, "ssid": "YourWiFi", "password": "12345678"}}
```
4. **后续 OTA 升级**
- 确保设备在线后,下发 `cmd=7` 即可触发 OTA
---
## 📝 注意事项
- 🔗 **OTA 地址**:由全局变量 `url` 定义,部署前务必修改为实际地址
- 🧵 **线程安全**:通过 `update_thread_started` 标志防止 OTA 并发下载
- ☀️ **视觉版**:光照敏感,建议在均匀光源环境使用
- 📏 **激光版**:确认模块 I²C 地址(默认 `0x29`),避免长线干扰
- 🌐 **网络操作**:均在子线程执行,主线程保持实时响应
## 🔧 打包步骤(命令行)
- 以t11的名称打包或者修改代码升级路径
---
> 文档版本v1.2
> 更新时间2025-11-21
> 维护人ZZH
```