一、项目介绍
该项目是基于FreeRTOS实时操作系统,主控为 STM32F103C8T6 开发板 ,机械臂为四轴分别被四个舵机控制。本项目实现了 3 种控制方法,分别为摇杆控制、示教器控制和串口蓝牙控制,采用8路ADC采集按键摇杆传感器和旋钮电位器的模拟量并由DMA搬运数据,可自制手机蓝牙APP或者直接使用官方手机蓝牙助手作为上位机,USART串口蓝牙实时收发信息,IIC驱动OLED屏幕实时显示机械臂移动张爪夹爪信息,人为控制抓取目标物。
扩展:后续可以通过二维数组或者链表实现存储动作,通过SPI驱动W25Q128模块进行动作记忆扩容,即可以录制上百组动作,还可以附加树莓派等开发板进行视觉抓取开发,等以后有时间我再把扩展功能一起实现呈现给大家。
二、前期准备
1.硬件准备
本项目可用步进电机和驱动器作为支撑,以便提高项目扩展性,但在这里我直接用四个舵机实现。
首先你可以自己建模3D打印四轴机械臂模型,也可以直接去网上购买一套成品套件。然后需要四个舵机控制机械臂,型号无所谓,控制起来是一样的,注意需要是180度的角度型舵机,而不是360度的速度型舵机,在这里我选择SG90舵机模块
然后需要购买两个按键摇杆传感器实现摇杆控制,购买蓝牙模块实现串口蓝牙控制,购买四个旋钮电位器实现示教器控制。
硬件清单:
- 四轴机械臂模型
- 四个舵机
- 两个按键摇杆传感器
- HC系列蓝牙串口模块
- 四个旋钮电位器
- IIC协议OLED屏幕
- SPI协议W25Q128模块
2.开发环境
单片机型号为STM32F103C8T6,开发环境为STM32CubeMX和Keil5,蓝牙控制需要手机下载蓝牙助手,在这里我下载的是官方给的HC蓝牙助手,(需要蓝牙调试助手的可以私信作者提供)
STM32F103C8T6原理图:
3.CubeMX配置
我用STM32CubeMX配置如下,仅供参考:
RCC:配置外部高速晶振
SYS:Debug设置成Serial Wire
ADC:打开8个通道
DMA:搬运ADC数据
TIM2:PWM输出:选用799*1799,这样可以把舵机有效的 0.5~2.5ms / 20ms 这个区间分成180段,对应0~180度。
usart:设置波特率为9600,因为蓝牙模块默认波特率为9600,开启NVIC中断接收信息
I2C:用来显示OLED模块
时钟树配置:
最后点击 generate code 生成代码
基于STM32与FreeRTOS的四轴机械臂项目-2