aba991f6f7fd704fc0d47bcc319368d5244604c7
🎯 激光射击系统(双版本)
适用于 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复用的:# 以下代码(如有,请启用): # pinmap.set_pin_function("A15", "I2C5_SCL") # pinmap.set_pin_function("A27", "I2C5_SDA")
📡 网络通信协议(TCP / JSON)
设备上电后自动连预设服务器,支持以下指令:
{"data": {"cmd": N, "ssid": "...", "password": "..."}}
cmd |
参数 | 功能说明 |
|---|---|---|
| 2 | — | 开启激光校准模式 |
| 3 | — | 关闭激光 |
| 4 | — | 查询电池电量 & 电压 |
| 5 | ssid, password |
配置 Wi-Fi + 触发 OTA 升级 |
| 6 | — | 返回当前 IP 地址 |
| 7 | — | 已联网时,直接执行 OTA 下载 |
示例交互
▶️ 下发指令(服务器 → 设备):
{"data": {"cmd": 6}}
◀️ 设备响应(设备 → 服务器):
{"result": "current_ip", "ip": "192.168.1.105"}
🛠️ 部署步骤
-
选择版本
- 固定场景 / 低成本 →
main.py - 高精度需求 →
laser.py
- 固定场景 / 低成本 →
-
烧录程序
- 将选定文件重命名为
main.py,或通过 MaixPy IDE 直接运行
- 将选定文件重命名为
-
首次配置 Wi-Fi
- 串口下发,或服务器推送
cmd=5:{"data": {"cmd": 5, "ssid": "YourWiFi", "password": "12345678"}}
- 串口下发,或服务器推送
-
后续 OTA 升级
- 确保设备在线后,下发
cmd=7即可触发 OTA
- 确保设备在线后,下发
📝 注意事项
- 🔗 OTA 地址:由全局变量
url定义,部署前务必修改为实际地址 - 🧵 线程安全:通过
update_thread_started标志防止 OTA 并发下载 - ☀️ 视觉版:光照敏感,建议在均匀光源环境使用
- 📏 激光版:确认模块 I²C 地址(默认
0x29),避免长线干扰 - 🌐 网络操作:均在子线程执行,主线程保持实时响应
🔧 打包步骤(命令行)
- 以t11的名称打包,或者修改代码升级路径
文档版本:v1.2
更新时间:2025-11-21
维护人:ZZH
Description
Languages
Python
100%