STM32F407VET6_HEXAPOD:基于 STM32F407VET6 与 FreeRTOS 的六足机器人控制系统项目

STM32F407VET6_HEXAPOD

分支1Tags0
文件最后提交记录最后更新时间
2 个月前
2 个月前
2 个月前
2 个月前
2 个月前
2 个月前
2 个月前
2 个月前
2 个月前

STM32F407VET6 Hexapod Robot (六足机器人)

? 项目简介

本项目是一个基于 STM32F407VET6 微控制器和 FreeRTOS 实时操作系统的多功能六足机器人(Hexapod Robot)控制系统。项目集成了多达 18 个自由度(DOF)的舵机控制、多种远程控制方式(PS2、RC、蓝牙、Blinker App、ROS)、环境感知(温湿度、多种气体浓度)以及基于 MPU6050 的姿态解算和平衡控制。

?? 硬件架构

  • 主控芯片:STM32F407VET6
  • 舵机驱动:基于 PCA9685 的 16 路 PWM 舵机驱动模块(控制 18 个关节舵机,结合总线/PWM舵机)
  • 姿态传感器:MPU6050 (6 轴 IMU),用于机器人姿态检测与平衡控制
  • 环境传感器阵列
    • SHT30:温湿度传感器 (I2C)
    • MQ-2:烟雾传感器 (ADC)
    • MQ-3:酒精传感器 (ADC)
    • MQ-7:一氧化碳传感器 (ADC)
    • MQ-8:氢气传感器 (ADC)
    • MQ-135:空气质量传感器 (ADC)
  • 外部交互与扩展
    • 激光雷达 (Lidar) - 用于避障模式
    • 寻迹模块 (Xunji) - 用于路线循迹模式
    • OLED 屏幕显示
    • 蜂鸣器 (Buzzer) 与 状态指示灯 (LED)
    • PS2 接收器 / 蓝牙模块 / 串口透传 / GPS 接口

? 软件架构 (基于 FreeRTOS)

系统采用 FreeRTOS 进行多任务调度,确保运动控制与传感器数据采集的实时性。核心任务(Tasks)如下:

  • StartDefaultTask (控制核心):处理 PS2/RC/雷达/蓝牙/Blinker 等多模式输入,计算 X/Y/R 期望速度,并更新步态(Gait)。
  • StartTask02 (舵机控制):实时下发 PCA9685 舵机 PWM 控制信号,执行具体的腿部动作。
  • StartTask03 (IMU 处理):读取 MPU6050 DMP 数据,解算 Pitch/Roll/Yaw 姿态角。
  • StartTask04 (数据上报):向 ROS 主机或串口终端发送机器人状态数据。
  • StartTask05 (电源管理):实时监测电池电压,欠压时触发警报指示灯。
  • StartTask06 (定位通信):处理 GPS 及额外串口数据通信。
  • StartTask07 (环境感知):通过 ADC + DMA 采集各路 MQ 气体传感器电压并计算浓度,读取 SHT30 温湿度数据。

? 控制模式 (Control Modes)

机器人支持在多种模式间无缝切换:

  1. PS2_MODE:索尼 PS2 无线手柄遥控模式
  2. RC_MODE:航模遥控器模式 (SBUS/PPM)
  3. BLUE_MODE:手机蓝牙遥控模式
  4. BLINKER_MODE:物联网 App (Blinker) 远程控制模式
  5. LIDAR_MODE:基于激光雷达的自主避障模式
  6. XUNJI_MODE:地面循迹模式
  7. ROS_MODE:受控于 ROS 上位机节点,接收 cmd_vel 等指令

?? 开发与构建指南

依赖环境

  • IDE:Keil MDK-ARM (推荐 V5.32 及以上版本)
  • 底层配置:STM32CubeMX (V6.13.0) + STM32Cube FW_F4 V1.28.1
  • 编程语言:C 语言 (HAL 库 + FreeRTOS API)

编译步骤

  1. 克隆或下载本项目源码。
  2. 进入 MDK-ARM 目录,双击打开 F407VET6_HEXAPOD.uvprojx 工程文件。
  3. 在 Keil 中点击 Build (F7) 编译整个工程。
  4. 使用 ST-Link 或 DAP-Link 将程序烧录(Download)到 STM32F407VET6 主控板中。

CubeMX 配置修改

如需修改底层引脚或时钟配置:

  1. 双击根目录下的 F407VET6_HEXAPOD.ioc
  2. 在 STM32CubeMX 中进行图形化修改。
  3. 点击 Generate Code 重新生成工程代码(注意保留用户自定义代码区 USER CODE BEGIN/END 内的实现)。

? 工程目录结构

STM32F407VET6_HEXAPOD/
├── Core/               # 核心系统代码 (main.c, freertos.c, 中断处理等)
├── Drivers/            # STM32 HAL 库驱动与 CMSIS 核心文件
├── MDK-ARM/            # Keil 工程目录
│   └── HardWare/       # ? 机器人所有外部硬件驱动 (OLED, MPU6050, 舵机, 传感器等)
├── F407VET6_HEXAPOD.ioc# STM32CubeMX 配置文件
└── README.md           # 项目说明文档

项目介绍

STM32F407VET6_HEXAPOD

定制我的领域