# DDC32FW **Repository Path**: mavengers/ddc32-fw ## Basic Information - **Project Name**: DDC32FW - **Description**: DonkeyDrift Car ESP32 Firmware - **Primary Language**: C++ - **License**: BSD-3-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 1 - **Created**: 2025-01-04 - **Last Updated**: 2025-07-25 ## Categories & Tags **Categories**: hardware **Tags**: None ## README # DDC32FW #### 介绍 DonkeyDrift ESP32-C3 Firmware-v1.0 #### 软件架构 项目采用分层架构设计,主要包含以下组件: 1. 硬件层 - ESP32-C3 主控芯片 - 传感器模块:MPU6050、INA219 - 执行机构:舵机、电机 - 通信接口:I2C、RS232 2. 固件层 - Arduino框架开发 - 实时控制核心 - 传感器数据采集 - 控制算法实现 3. 应用层 - Docker容器化开发环境 - TensorFlow/Keras机器学习框架 - DonkeyCar自动驾驶平台 - 数据采集与模型训练 4. 工具链 - Ubuntu 22.04 LTS 开发环境 - Docker容器化部署 - Git版本控制 - 持续集成支持 #### 安装教程 1. 硬件环境准备 - 安装ESP32-C3开发板驱动 - 连接传感器和执行机构 - 检查硬件连接 2. 开发环境搭建 - 安装Ubuntu 22.04 LTS - 安装Arduino IDE - 配置ESP32开发环境 - 安装必要的Python依赖 3. Docker环境配置 - 安装Docker和Docker Compose - 构建项目镜像: ```bash docker build -t donkeycar-ddc32 . ``` - 运行开发容器: ```bash docker run -it \ --name ddc32 \ -p 8887:8887 \ -p 3000:3000 \ -v /path/to/data:/home/projects/mycar/data \ -v /path/to/models:/home/projects/mycar/models \ -v /path/to/gym:/home/projects/GYM \ donkeycar-ddc32 ``` 4. 固件烧录 - 使用Arduino IDE编译项目 - 通过USB连接ESP32-C3 - 选择正确的开发板和端口 - 上传固件 #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 参与贡献 我们欢迎并感谢所有贡献!以下是贡献指南: 1. 分支管理 - 从main分支创建新分支 - 分支命名规范: - feature/功能名称 - bugfix/问题描述 - hotfix/紧急修复描述 - 保持分支与main同步 2. 代码提交 - 提交信息格式: ``` [类型]: 简短描述 (最多50字符) 详细描述 (可选) ``` - 类型说明: - feat: 新功能 - fix: bug修复 - docs: 文档更新 - style: 代码格式调整 - refactor: 代码重构 - test: 测试相关 - chore: 构建/工具更新 3. Pull Request流程 - 确保代码通过所有测试 - 更新相关文档 - 提供清晰的PR描述 - 关联相关issue - 等待代码审查 4. 代码审查 - 至少需要2个核心成员批准 - 遵循代码风格指南 - 确保测试覆盖率 - 通过CI/CD流水线 5. 开发环境 - 使用提供的Docker开发环境 - 遵循编码规范 - 编写单元测试 #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) ## 技术文档 ### 概述 这是一个用于ESP32的遥控车固件,支持多种控制模式,包括手动遥控、半自动和全自动驾驶模式。该固件集成了多个传感器和控制组件。 ### 硬件组件 - ESP32主控 - MPU6050 (加速度计和陀螺仪) - INA219 (电流电压监测) - WS2812B LED - 舵机和电调 - RC接收机 - RS232串口通信 ### 引脚定义 - LED_PIN: 10 - CH1_PIN: 6 (转向通道) - CH2_PIN: 7 (油门通道) - CH3_PIN: 8 (停车通道) - CH4_PIN: 9 (模式通道) - STEERING_PIN: 4 (舵机输出) - THROTTLE_PIN: 5 (电调输出) - I2C: SDA=2, SCL=3 - RS232: RX=20, TX=21 ### 主要功能 #### 1. 驾驶模式 系统支持三种驾驶模式: - 手动模式 (CAR_MODE_MANUAL):完全由遥控器控制 - 半自动模式 (CAR_MODE_SEMI_AUTO):自动控制方向,手动控制油门 - 全自动模式 (CAR_MODE_FULL_AUTO):完全自动控制 #### 2. 数据结构 ```cpp struct struct_message { int throttle; // 油门值 (-100 到 100) int steering; // 转向值 (-100 到 100) int mode; // 驾驶模式 (0:手动, 1:半自动, 2:全自动) bool park; // 停车状态 (true:停车, false:运行) }; ``` 系统中的数据实例: - `rc_data`: 存储来自遥控器的输入数据 - `pilot_data`: 存储来自上位机的控制数据 - `car_output`: 存储最终的车辆控制输出 - `esp_now_data`: 存储ESP-NOW无线通信数据 数据映射关系: 1. 遥控器输入映射: - 转向: 872~2113 → -100~100 - 油门: 888~2149 → -100~100 2. PWM输出映射: - 转向: -100~100 → SERVO_MID±SERVO_RANGE (1270±390) - 油门: -100~100 → MOTOR_MID±MOTOR_RANGE (1229±390) #### 3. 传感器功能 - MPU6050:提供加速度和陀螺仪数据 - INA219:监测系统电压和电流 - WS2812B LED:状态指示 #### 4. 通信接口 - USB串口 (115200波特率) - RS232串口 (115200波特率) - I2C (400kHz) #### 5. PWM控制参数 - PWM范围:819-1638 - 电机中值:1229 - 舵机中值:1270 - 控制范围:±390 ### 工作流程 1. 系统初始化:配置串口、I2C、传感器等 2. 读取遥控器输入信号 3. 根据当前模式处理控制逻辑: - 手动模式:直接映射遥控器输入 - 半自动模式:使用遥控器油门,自动控制转向 - 全自动模式:完全由上位机控制 4. 输出PWM信号控制舵机和电机 5. 循环执行传感器数据读取和状态更新 ### 调试功能 - 通过串口输出调试信息 - LED状态指示 - 传感器数据实时监测 ### 安全特性 - PWM输出限幅保护 - 停车功能控制 - 多模式切换保护 ### Docker环境配置 #### Dockerfile说明 项目包含一个用于构建开发和训练环境的Dockerfile,主要特点: 1. 基础环境 - 基于Python 3.11 slim镜像 - 包含基础开发工具:git, nano, vim, wget - 工作目录设置在 `/home/projects` 2. 主要依赖 - 机器学习框架:tensorflow, keras - 计算库:numpy, pandas - 图像处理:pillow, opencv-python-headless - 可视化:matplotlib - 硬件控制:Adafruit_PCA9685 - 游戏模拟:pygame 3. DonkeyCar配置 - 安装最新版本的donkeycar - 自动创建mycar项目 - 支持数据和模型的持久化存储 4. 端口映射 - 8887:Web控制界面 - 3000:训练可视化 #### 使用方法 1. 构建Docker镜像 ```bash docker build -t donkeycar-ddc32 . ``` 2. 运行容器 ```bash docker run -it \ --name ddc32 \ -p 8887:8887 \ -p 3000:3000 \ -v /path/to/data:/home/projects/mycar/data \ -v /path/to/models:/home/projects/mycar/models \ -v /path/to/gym:/home/projects/GYM \ donkeycar-ddc32 ``` 3. 开发环境访问 ```bash docker exec -it ddc32 bash ``` #### 资料查询 * DFRobot 社区: [蘑菇云论坛](https://mc.dfrobot.com.cn/forum-74-1-467-0.html)