自己用 Python 写了一个异步的网络飞行系统, MIT 协议于 GitHub 开源 :)

建议材料:

  • Arduino UNO 兼容开发板, 将串口与 Redmi 2 手机串口相连接, 以传输数据
  • Redmi 2 手机, 焊接串口, 刷入 LineageOS aarch64 系统, 装入 Termux 和 termux-api, termux-boot 与 Python, 并使用 Magisk root 手机
  • 一张 IoT sim 卡, 插入手机卡槽中, 用于控制器的网络连接
  • 按照 Arduino HAL 的设置将电调, 舵机与 Arduino 的 ~ 标记接口相连接, 并设置好电源

请确保您符合以下条件:

  1. 时间充裕
  2. 能手写(改写)硬件相关控制 API
  3. 不怕炸机

目录结构

/client: 客户端, 含有 CLI 与 GUI 客户端
/server: 服务端
/server/dummy_all: 傀儡服务端支持文件 (一个适用于调试开发的假数据回传器, 具有一个 Tkinter GUI 调谐器, 包含 API 和 Lib)
/server/arduino_api: 兼容到 Arduino 的 API 数据发送层, 区分于 HAL, 会在设计结构中说明
/server/termux_lib: 适用于 Android Termux 的板载控制库
/hal: 硬件兼容层, 通常单独编译烧写
/hal/arduino: 适用于 Arduino 的硬件控制程序
/docs :文档

设计结构

graph LR
A(远程客户端)-->|网络|B(服务端)-->C(Lib)-->D(API)-->E(HAL)-->|硬件控制开发板|F(硬件)
F-->|硬件控制开发板|E-->D-->C-->B
G(部分其他传感器)-->C
C-->G
B-->|网络|A

快速开始

host.pyhost_*.py 文件是服务端, 装载于飞行器的控制系统.
client*.py 文件与 src 目录是客户端, 在本地计算机上运行.
dummy*.py 文件是傀儡环境, 即运行在本地计算机上的模拟飞行器程序. 运行程序前, 请安装依赖包.
运行服务端:

python3 host.py

运行图形化客户端 (需要图形环境):

python3 client_gui.py

运行命令行客户端 (无法查看摄像头, 通过 JSON 调用命令):

python3 client_cli.py

运行傀儡环境:

python3 dummy.py

标签: none

添加新评论