# DJI rc plus mavlink **Repository Path**: ablen/dji-rc-plus-mavlink ## Basic Information - **Project Name**: DJI rc plus mavlink - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2026-07-16 - **Last Updated**: 2026-07-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DJI遥控器MAVLink转换工具 一个将大疆遥控器摇杆数据实时转换为MAVLink协议的工具,专为ARM64 Linux平台设计。 ## 功能特性 - 🔄 **实时数据转换**:实时读取大疆遥控器摇杆数据 - 📡 **MAVLink协议**:转换为RC_CHANNELS_OVERRIDE消息 - 🌐 **网络发送**:通过UDP发送到QGroundControl - 🎮 **8通道支持**:完整支持8个遥控器通道 - 🔒 **线程安全**:并发安全的架构设计 - 🚀 **高性能**:专为ARM64 Linux优化 - ⚙️ **配置文件管理**:支持JSON配置文件,可自定义通道映射 - 🌐 **Web管理界面**:实时监控通道数据,在线配置参数 - 🔄 **热重启功能**:修改配置后无需重启程序 - 📱 **移动端优化**:支持手机横屏模式,响应式设计 - 🔧 **通道映射配置**:可视化配置摇杆轴到通道的映射关系 - 🔄 **反转设置**:支持通道值反转,适应不同飞行器需求 - 📊 **实时监控**:Web界面实时显示通道数据和PWM值 - 🎯 **路径一致性**:命令行参数与Web界面配置路径保持一致 - 💬 **气泡消息系统**:现代化提示消息,无需点击确认 - ⚙️ **设备参数设置**:Web界面直接配置输入设备、目标地址等参数 ## 技术栈 - **编程语言**:Go 1.24+ - **MAVLink库**:gomavlib v2.2.0 - **目标平台**:ARM64 Linux - **通信协议**:UDP ## 快速开始 ### 环境要求 - ARM64 Linux设备(如大疆遥控器) - Go 1.24+ 开发环境 - QGroundControl地面站软件 ### 通过Shizuku + Termux运行(Android设备) 如果您的设备是Android系统,可以通过Shizuku和Termux来运行程序: 1. **安装必要应用** - 安装Termux应用 - 安装Shizuku应用并启动服务 2. **配置Termux** 在Termux中编辑`.bashrc`文件,添加Shizuku环境: ```bash # 编辑.bashrc nano ~/.bashrc # 添加以下内容 sh rish ``` 3. **复制和运行程序** ```bash # 进入临时目录 cd /data/local/tmp # 删除旧文件(如果有) rm 1 # 从SD卡复制程序 cp /sdcard/DCIM/1 ./ # 设置执行权限 chmod +x 1 # 运行程序(完整参数示例) ./1 -dev /dev/input/event6 -target 192.168.42.156:14550 -rate 100 -sysid 1 -compid 1 ``` ### 编译安装 ```bash # 克隆项目 git clone https://gitee.com/longcat99/dji-rc-plus-mavlink.git cd dji-rc-plus-mavlink # 编译ARM64 Linux版本 GOOS=linux GOARCH=arm64 go build -o dji_mavlink_linux_arm64 1.go # 设置执行权限 chmod +x dji_mavlink_linux_arm64 ``` ### 使用方法 ```bash # 基本用法(发送到默认地址192.168.42.1:14550) ./dji_mavlink_linux_arm64 -dev /dev/input/event6 # 指定目标地址 ./dji_mavlink_linux_arm64 -dev /dev/input/event6 -target 192.168.1.100:14550 # 指定发送频率 ./dji_mavlink_linux_arm64 -dev /dev/input/event6 -rate 20 # 指定系统ID和组件ID ./dji_mavlink_linux_arm64 -dev /dev/input/event6 -sysid 2 -compid 1 # 组合使用所有参数 ./dji_mavlink_linux_arm64 -dev /dev/input/event6 -target 192.168.42.156:14550 -rate 100 -sysid 1 -compid 1 ``` ## 演示视频 项目包含一个演示视频,展示了工具的实际运行效果: - **演示视频.mp4** - 展示了大疆遥控器摇杆数据实时转换为MAVLink协议并在QGroundControl中显示的效果 视频内容包含: - 大疆遥控器连接和配置 - 程序启动和参数设置 - 实时摇杆操作演示 - QGroundControl中RC_CHANNELS_OVERRIDE消息的实时显示 - 通道数据变化和响应测试 您可以通过以下方式查看演示视频: 1. 直接下载项目中的`演示视频.mp4`文件 2. 在项目仓库的"文件"页面找到并下载视频文件 3. 视频文件大小约为6.82MB,建议使用支持MP4格式的播放器观看 ## 命令行参数 | 参数 | 默认值 | 描述 | |------|--------|------| | `-dev` | `/dev/input/event6` | 摇杆设备路径 | | `-target` | `192.168.42.1:14550` | 目标地址(IP:端口) | | `-rate` | `10` | 发送频率(Hz) | | `-sysid` | `1` | MAVLink系统ID | | `-compid` | `1` | MAVLink组件ID | ## 通道映射 | 通道 | 摇杆轴 | 功能 | PWM范围 | |------|--------|------|---------| | 通道1 | 左摇杆X | 横滚(Roll) | 1000-2000 | | 通道2 | 左摇杆Y | 俯仰(Pitch) | 1000-2000 | | 通道3 | 右摇杆X | 油门(Throttle) | 1000-2000 | | 通道4 | 右摇杆Y | 偏航(Yaw) | 1000-2000 | | 通道5 | 辅助轴Z | 模式切换(Mode) | 1000-2000 | | 通道6 | 辅助轴RZ | 辅助功能(Aux1) | 1000-2000 | | 通道7 | 十字键X | 自定义功能 | 1000-2000 | | 通道8 | 十字键Y | 自定义功能 | 1000-2000 | ## Web管理界面 程序内置了完整的Web管理界面,提供实时监控和配置管理功能。 ### 访问方式 程序启动后,在浏览器中访问: ``` http://localhost:8080 ``` ### 功能特性 #### 1. 实时通道数据监控 - **实时显示**:8个通道的PWM值和原始数据 - **可视化进度条**:直观显示通道值变化 - **死区检测**:自动识别死区状态 - **反转状态显示**:清晰标注反转通道 #### 2. 配置管理页面 - **页面切换**:标题栏"配置管理"按钮切换页面 - **设备参数设置**:直接配置输入设备路径、目标地址、发送频率等 - **通道映射配置**:可视化配置摇杆轴到通道的映射 - **反转设置**:每个通道独立的反转开关 - **JSON配置编辑**:直接编辑JSON配置文件 - **一键恢复默认**:快速恢复默认配置(包括设备参数和通道映射) #### 3. 操作功能 - **加载配置**:从文件加载当前配置 - **保存配置**:保存修改后的配置 - **应用配置**:保存设备参数和通道映射并热重启 - **恢复默认配置**:一键恢复所有默认设置 - **热重启**:应用配置后无需重启程序 - **实时同步**:配置修改立即生效 - **气泡消息**:现代化提示系统,操作结果实时反馈 ### 移动端优化 - **响应式设计**:自动适配不同屏幕尺寸 - **横屏模式**:手机横屏时优化显示布局 - **触摸友好**:按钮和控件适合触摸操作 ## 配置文件管理 程序支持JSON配置文件,提供灵活的配置管理。 ### 配置文件路径 #### 1. 使用 `-c` 参数指定配置文件 ```bash ./1 -c /path/to/custom_config.json ``` - **读取配置**:从指定路径加载 - **保存配置**:Web界面保存到同一路径 - **路径一致**:确保配置一致性 #### 2. 默认配置文件 ```bash ./1 ``` - **自动检测**:在同目录下寻找 `config.json` - **智能生成**:如果不存在,自动生成默认配置 - **路径统一**:始终使用 `config.json` ### 配置文件结构 ```json { "version": "1.0", "device": { "input_device": "/dev/input/js0", "target_address": "127.0.0.1:14550", "send_rate": 20, "system_id": 1, "component_id": 1 }, "channel_mapping": { "channel_1": { "axis": "ABS_X", "function": "横滚 (Roll)", "min_value": 0, "max_value": 65535, "pwm_min": 1000, "pwm_max": 2000, "inverted": false } }, "web_interface": { "enabled": true, "port": 8080, "host": "0.0.0.0" } } ``` ## 高级使用 ### 配置文件示例 ```bash # 使用自定义配置文件 ./1 -c /home/user/my_config.json # 生成默认配置文件 ./1 # 程序会自动生成 config.json ``` ### Web界面操作流程 1. **启动程序**:程序自动启动Web服务器 2. **访问界面**:浏览器打开 http://localhost:8080 3. **监控数据**:查看实时通道数据 4. **配置管理**:点击"配置管理"进入配置页面 5. **修改配置**:调整通道映射和反转设置 6. **保存应用**:保存配置并热重启生效 ## QGroundControl配置 1. 打开QGroundControl 2. 进入"Vehicle Setup" -> "Parameters" 3. 搜索"RC_OVERRIDE"相关参数 4. 确保遥控器覆盖功能已启用 5. 验证通道数据是否正确显示 ## 项目结构 ``` dji-rc-plus-mavlink/ ├── 1.go # 主程序源代码 ├── go.mod # Go模块配置 ├── go.sum # 依赖版本锁定 ├── .gitignore # Git忽略规则 └── README.md # 项目说明文档 ``` ## 开发说明 ### 代码架构 - **主循环**:实时读取摇杆输入事件 - **数据处理**:将摇杆值映射到PWM范围 - **MAVLink序列化**:使用gomavlib生成标准消息 - **网络发送**:通过UDP客户端发送数据 ### 并发安全 使用读写锁(RWMutex)保护共享数据: - 主goroutine:写入摇杆数据(写锁) - 定时器goroutine:读取数据(读锁) ## 故障排除 ### 常见问题 1. **设备权限问题** ```bash # 检查设备权限 ls -la /dev/input/event* # 如果需要,添加用户到input组 sudo usermod -a -G input $USER ``` 2. **网络连接问题** ```bash # 测试网络连接 ping 192.168.42.1 # 检查防火墙 sudo ufw status ``` 3. **QGC无法接收数据** - 检查UDP链接配置 - 确认端口14550未被占用 - 查看MAVLink检查器消息 ## 许可证 本项目采用MIT许可证。详见LICENSE文件。 ## 贡献 欢迎提交Issue和Pull Request来改进项目! ## 联系方式 - 项目主页:https://gitee.com/longcat99/dji-rc-plus-mavlink - 作者:longcat99 --- **让大疆遥控器与开源飞控完美协作!** 🚁