前言

本文基于STM32F103C8T6作为主控,实现单腿二自由度的舵机驱动小四足;详细介绍了从 简单原理 到 硬件组成 到 代码实现 各个部分。
楼主认为非常适合作为单片机入门的项目,既可简单实现,也可在此基础上开发更多功能,也能跑实时操作系统;既可不用深究原理就实现一个小机器人的开发,也可对其硬件驱动原理、控制方法进行深入的学习与理解。

  • 用到的软件:keil、STM32CubeMX
  • 用到的硬件:
    • 主控 STM32F103C8T6
    • 舵机控制板 PCA9685
    • 8个MG90S舵机
    • 蓝牙模块HC-05
    • 12V电源、DC线开关、降压板
    • jlink下载线

整机方案

一、结构设计

本文结构是直接嫖来的,可在B站搜索黑人黑科技-蠢萌四足机器人,楼主懒得去量尺寸一步步画了,只是修改了外观,让它更像狗狗一些;大家也可以按照黑人黑科技的实现方案来做(有开源源码和图纸);不过楼主会介绍的更详细,而且提供评论区答疑服务,欢迎交流;
事实证明,直接拿来的东西很难不出问题,还是建议大家对关键部位(转轴连接处、走线)等仔细审查一下,确保安装的时候稳定可靠,有精力自己设计更好。
楼主改动之后长下图这样:

零部件皆为3D打印,转轴处将轴承改为了3D打印的尼龙轴套,整体连接多为自攻螺丝(足端与膝关节舵机的连接用的3根M2长22mm的螺栓),结构更紧凑,不过还是改为螺栓螺母会更可靠一些

效果视频

迷你小四足~

二、主要模块

2.1 主控 STM32103C8T6

STM32是小四足的核心模块,靠它给各个模块发指令,让机器人动起来;如果没有用过单片机,可以简单学习一下C语言和单片机;推荐下方视频,只看C语言和单片机部分就足以完成本文项目;
嵌入式开发系统学习路线

开发过程中可以用STM32CubeMX快速搭建工程;
楼主就不带着一步步做了,不然太长得录视频了,可以点击下方使用STM32定时器实现PWM输出控制舵机转动的例子,看一下如何用STM32CubeMX快速搭建工程进行硬件驱动,本文所使用的舵机也是下方链接中使用的MG90S。
STM32控制舵机转动_从0到1

2.2 舵机控制板 PCA9685


驱动舵机可以使用STM32定时器控制输出PWM,如上面链接中介绍的;本文要同时驱动四条腿八个舵机(MG90S)完成四足的基础运动,因此外接舵机控制板会更方便且高效且优雅;

PCA9685是16路12位PWM信号发生器,可用于控制舵机、led、电机等设备,I2C通信,节省主机资源。
如何使用STM32CubeMX搭建I2C驱动程序,先码着,后面如果有需要再补上;

PCA9685通过I2C挂载到STM32F103C8T6,编写好PCA9685的驱动程序,即可控制输出16路周期和占空比均可调的PWM,进而控制16路舵机按照想要的方式运动,楼主学习时参考的博文找不到了,下面贴出我工程里使用的PCA9685驱动程序;

pca9685.h

#ifndef _PCA9685_H
#define _PCA9685_H
#include "i2c.h"#define uint8 unsigned char
#define uint16 unsigned int
#define uint32 unsigned long#define PCA9685_SUBADR1 0x2
#define PCA9685_SUBADR2 0x3
#define PCA9685_SUBADR3 0x4#define LED0_ON_L 0x6
#define LED0_ON_H 0x7
#define LED0_OFF_L 0x8
#define LED0_OFF_H 0x9
#define ALLLED_ON_L 0xFA
#define ALLLED_ON_H 0xFB
#define ALLLED_OFF_L 0xFC
#define ALLLED_OFF_H 0xFD#define PCA9685_MODE1 0x0
#define PCA9685_PRESCALE 0xFE
#define PCA9685_adrr 0x80void PCA9685_Reset(void);
void PCA9685_Go(void);
void SetPWMFreq(float freq);
void SetPWM(uint32_t num,uint32_t on,uint32_t off);
uint8_t PCA9685_read(uint8_t startAddress);
void PCA9685_write(uint8_t startAddress, uint8_t buffer);#endif

pca9685.c

#include "pca9685.h"
#include "i2c.h"
#include "math.h"void PCA9685_Reset()
{PCA9685_write(PCA9685_MODE1,0x00);
}void PCA9685_Go()
{PCA9685_Reset();
}
void SetPWMFreq(float freq)
{//calc prescaleuint32_t prescale,oldmode,newmode;float prescaleval;freq *= 0.92;  // Correct for overshoot in the frequency settingprescaleval = 25000000;prescaleval /= 4096; //12 bit accuracyprescaleval /= freq;prescaleval -= 1;prescale = floor(prescaleval + 0.5);//set prescaleoldmode = PCA9685_read(PCA9685_MODE1);newmode = (oldmode&0x7F) | 0x10; // sleepPCA9685_write(PCA9685_MODE1, newmode); // go to sleepPCA9685_write(PCA9685_PRESCALE, prescale); // set the prescalerPCA9685_write(PCA9685_MODE1, oldmode);HAL_Delay(2);PCA9685_write(PCA9685_MODE1, oldmode | 0xa1);}
void SetPWM(uint32_t num,uint32_t on,uint32_t off)
{PCA9685_write(LED0_ON_L+4*num,on);PCA9685_write(LED0_ON_H+4*num,on>>8);PCA9685_write(LED0_OFF_L+4*num,off);PCA9685_write(LED0_OFF_H+4*num,off>>8);
}void PCA9685_write(uint8_t startAddress, uint8_t buffer) {//Send address to start reading from.uint8_t tx[2];tx[0]=startAddress;tx[1]=buffer;HAL_I2C_Master_Transmit(&hi2c1,PCA9685_adrr, tx,2,10000);
}

然后还在mian程序中调用PCA9685_Go()函数,即可对pca9685进行读写操作,输出PWM,控制舵机转动;

2.3 蓝牙模块HC-05

蓝牙模块主要是实现遥控功能,从手机端发消息,控制四足运动、停止。
本文使用蓝牙模块HC-05接收手机发送的数据,手机下载蓝牙调试APP(从应用商店里下载几个,挑一个顺眼的就行)。
HC-05通过UART串口将数据发送给STM32f103c8t8,STM32判断接收到的数据,进而控制小四足的不同运动状态;

HC-05的使用可以参考以下链接:
HC-05蓝牙串口通信模块使用详解

HC-05配置好后,接收到手机发送的数据,会自动转发给STM32,不过需先配置后STM32的UART串口模块;这里使用STM32CubeMX搭建UART串口驱动程序,使用UART中断接收,在回调函数里,判断数据,进行下一步操作;

STM32CubeMX搭建UART串口驱动程序也先码着,有需要再贴出详细步骤;

2.4 陀螺仪MPU6050

先码着;

三、供电方案

稳定的供电系统是机器人能正常工作/工作好的重要基础,楼主在做小四足的过程中才渐渐意识到硬件各部分的重要性所在,以小见大,一个开发智能产品的公司,是需要专业的电源系统开发人员的。

3.1 电源&开关


如图,选择上图电源,楼主选择的是12V 3000mAh锂电池,当然还需要一个开关,控制整个电路的通断,如下图所示,电池接DC开关,再接稳压板,稳压板给STM32F103和PCA9685供电。

3.2 稳压板


楼主在开发过程中,使用上图所示的降压板,DC接口12V输入,三路输出12V、5V、5V(USB):

  • 5V输出给PCA9685驱动电路供电,驱动8路舵机运转。
  • 5V(USB)输出给STM32F103供电,同时由于STM32与舵机PCA9685控制电路VCC相连,自然也给PCA9685控制电路供电。

四、功能实现

上述步骤中,已经搭建好了小四足的硬件平台,完成了各模块的驱动程序;如果都能运行正常,下面就开始写小四足的控制程序;写之前先看一下四足运动的简单分析,下方链接:
蜘蛛型小四足机器人运动分析
下面就把链接中的介绍代码实现一下,程序就先不贴出来了,后面有时间把工程整合优化后再贴出来详细介绍,可以访问最下方链接下载整个工程的源码(源码可以实现四足的行走);

4.1 前进

4.2 旋转

4.3 姿态调整

五、源码

GitHub:Mini_Quadruped_robot
百度网盘:Mini_Quadruped_robot,提取码:robo

迷你四足机器人制作_从0到1相关推荐

  1. python 四足机器人运动学_【基础知识】四足机器人的站立姿态控制原理

    理解本文所需要掌握的基础知识为:姿态的欧拉角表示方法 变换矩阵的含义与使用 概述 四足机器人运动过程中,身体部分的姿态会不断地发生变化.假如机器人的足端一直保持与地面接触且相对位置不发生变化,此时的身 ...

  2. python 四足机器人运动学_撸了个四足机器人

    纯粹分享一下踩过的坑-- Robot,男人的浪漫- 组装完成后,就是这样子了: 1 )主控:Raspberry Pi Zero W,1 个 对于新手,这是最容易上手的硬件了.软件方面有很好的支持,资料 ...

  3. 基于STM32与PCA9685制作四足机器人(代码开源)

            前言:本文为手把手教学基于STM32的四足机器人项目--JDY-31蓝牙控制,特别地,本次项目采用的是STM32作为MCU.四足机器人的支架为3D打印件,SG90舵机驱动机器人实现姿态 ...

  4. gazebo 直接获取传感器数据_【ROS-Gazebo】IMU插件使用与数据采集——以四足机器人pigot为例...

    最近在琢磨别的事情,Gazebo探索上面进展不大,但也有一些收获,秉承慢慢写的佛系态度记录一下:pigot四足项目的步态改进,前行换成了摆线步态,加入了斜向步态 Gazebo-IMU(惯性测量单元)插 ...

  5. 赤兔四足机器人的作用_跑得快,打不死!清华大学开发“小强”机器人,壮汉狂踩也挡不住前进步伐...

    大数据文摘编辑部出品 提到蟑螂,很多同学都深恶痛绝. 这种身型小巧的虫子不仅跑得快.繁殖能力强,而且超级抗打抗压,在所有的环境下都能顽强地生存下去. 12mm高的蟑螂可以躲进4mm的缝隙 也难怪周星驰 ...

  6. 赤兔四足机器人的作用_腾讯 Robotics X 实验室四足移动机器人Jamoca首亮相,可挑战高难度梅花桩...

    11月20日,腾讯公布了其在移动机器人研究方面的新进展:四足移动机器人 Jamoca 和自平衡轮式移动机器人首次对外亮相. Jamoca 是国内首个能完成走梅花桩复杂挑战的四足机器人,而自平衡轮式移动 ...

  7. 赤兔四足机器人的作用_国产四足机器人“赤兔”惊艳亮相《我是未来》

    "赤兔"机器人 你印象中的机器人是什么样的?动作平稳,行动缓慢,与四肢发达的生物还有一定差别?本周日,由湖南卫视.唯众传媒联合出品.中国科学院科学传播局特别支持的中国首档顶尖原创科 ...

  8. 赤兔四足机器人的作用_国产四足机器人“赤兔”亮相《我是未来》

    图集 你印象中的机器人是什么样的?动作平稳,行动缓慢,与四肢发达的生物还有一定差别?本周日,<我是未来>中,"赤兔"机器人的亮相将彻底打破你的这种刻板印象!这" ...

  9. 制作小型四足机器人(一)

    最近发现一个很棒的四足机器人项目,通过制作这个来实践STM32编程. 原贴地址 首先是原贴地址:https://www.instructables.com/id/DIY-Spider-RobotQua ...

最新文章

  1. 电镀面积计算机公式,电镀面积计算法.pdf
  2. 《编码:隐匿在计算机软硬件背后的语言(美)》读书笔记一
  3. ABAddressBookSave关于保存到通讯录失败的问题
  4. pfsense下的流量管理(转)
  5. 前端学习(1851)vue之电商管理系统电商系统配置ssh
  6. Swift中文教程(六)函数
  7. 十一、多线程——5-线程同步
  8. 如果你选择城市创业的话,可以先从小本生意做起
  9. OpenCV-Python实战(番外篇)——OpenCV、NumPy和Matplotlib直方图比较
  10. 后缀表达式----栈
  11. 微处理器内部结构(寄存器)
  12. flex:1代表什么意思
  13. 高压均质机原理、使用方法及维护注意事项
  14. css解决transform 方法字体抖动
  15. Linux之NTFS、FAT32、exFAT 各种格式硬盘挂载整理
  16. “内鬼”作祟,国内知名游戏公司被黑
  17. laravel阿里SDK对接
  18. 数据结构 python的书推荐-学习数据结构,有哪些值得推荐的好书?
  19. ESP32-总体理解
  20. 写一个爬虫,可以爬取百度文库内容

热门文章

  1. 功不唐捐——《程序员职场第一课》后记
  2. Web Services Ksoap 下载多张图片
  3. studio 和mac快捷键
  4. 【Stream】java8新特性Stream流总结
  5. ab.exe压力测试
  6. MAC 扩展屏,颜色描述文件
  7. 什么是MTTF、MTBF、MTRF?
  8. Silicon单片机芯片解密
  9. 小内存海量数据,找中位数: 只有2G内存,在10G数据量怎样找到中位数?
  10. 千兆光纤 GBIC和SFP接口规格介绍