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

3.4 KiB
Raw Permalink Blame History

🎯 激光射击系统(双版本)

适用于 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"}

🛠️ 部署步骤

  1. 选择版本

    • 固定场景 / 低成本 → main.py
    • 高精度需求 → laser.py
  2. 烧录程序

    • 将选定文件重命名为 main.py,或通过 MaixPy IDE 直接运行
  3. 首次配置 Wi-Fi

    • 串口下发,或服务器推送 cmd=5
      {"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