前言:
看到那么多读者点赞和收藏这个系列的文章,编者在这里谢谢大家的支持,这篇文章我会按保姆级的教程分享机器人的制作办法。这里事先说明,编者完成这一项目时编程水平不算很高,算法较为简单,但有更好的优化思路。这里只对我第一代版本进行讲解,未运用高级算法。
与原定计划有变的是代码篇拆分成上下两篇。上篇讲解硬件接线(收到读者反馈,有些基础较差的同学不懂硬件,接受和学习能力较差,不会硬件接线。这里是为了照顾这些读者,望理解);下篇讲解代码编写,给大家一个编写框架,按照这个框架执行代码会非常好调试和稳定。如有看完文章后有不明白的地方可以私信我,文章有错误的地方欢迎大佬指正,如对文章内容有改善意见,欢迎大家在评论区留言或私信我。
编者已成功帮助一位粉丝复刻了这个机器人,后续视频和照片会以他的复刻产品照片为例为大家讲解。
粉丝复刻的机器人:
注意:车身一定不要弄成金属的,否则金属会干扰陀螺仪的磁场,让陀螺仪反馈的角度值不准确;GPS一定要和陀螺仪离远些,否则GPS会干扰陀螺仪的磁场,让陀螺仪反馈的角度值不准确。
一、硬件接线
1.TB6612电机驱动
TB6612上自带4路编码器电机接口、4路5V稳压电源,5V稳压电源可以给各类模块和单片机供电。这里需要注意,这4路5V电源实际测量值为5.3 - 5.4V的电压值,用杜邦线把一路5V电源给STM32F103ZET6供电,由于实际供电电压略大于5V,单片机可能会有电感震荡的声音传出,这属于正常现象,不必担心。此时整个机器人的电路系统基本完成。
第一步:先把四个电机找对孔位安装好,再把电机的线引导上层来插入白色的公头中,安装好轮胎,机器人基本外观框架构建完成。在一步都是动手的活,没什么需要注意的地方,我就不占用篇幅做具体讲解了。
第二步:用轧带把电池固定到小车上,把电源的电线按如下图所示接入到端子中来,红线那一侧标了一个+12V
图1-1所示为电池与TB6612电机驱动的连线。
图1-1 电池与TB6612电机驱动
图1-2-1和图1-2-2所示为TB6612电机驱动与单片机的连线。
图1-2-1 TB6612电机驱动端5V电源引脚
图1-2-2 单片机端5V电源引脚
这两张图片中白线接的是5V,黑线接的是GND,此时在确保电源接入电机驱动,电机驱动端5V接入单片机5V后,打开TB6612的开关,此时电机驱动绿灯亮起,单片机红色电源指示灯亮起。此时若没有按文章所说,赶快断电,否则会有烧芯片的风险,在回过头来检查一遍电路查找问题所在,直至成功上电。到这里小车基本框架和基本电路完成。
第三步:把电机驱动上的电机线引脚接到单片机上,这里大家需要保证电机插入编码器的方式和我一致才能完全不用修改代码,如有基础的同学可自行修改代码来保证前进、左转、右转功能可正常使用。
这里大家可以回过头去观看文章的第一张图片,以红黑电源线的地方为车尾。小车左前方电机接入到电机驱动的左上方;右前方电机接入到电机驱动的右上方;左后方电机接入到电机驱动的左下方,右后方电机驱动接入到电机驱动的右下方。
大家可以看到电机驱动端写有1N1、1N2、1P、G;2IN1、2IN2、2P、G;3IN1、3IN2、3P、G;4IN1、4IN2、4P、G;这里1IN1和1IN2代表了第一个电机的正反转,接PF0和PF1,1P代表了第一个电机的转速快慢,接口某个定时器接口,这里接的是PB9;2IN1和2IN2接PF2和PF3,2P接PC2。3IN1和3IN2接PF4和PF5,3P接PA1;4IN1和4IN2接PF6和PF7,4P接PB8。具体接线如图1-2-3所示:
电机驱动引脚 | 电机转动方向 | 单片机引脚 |
1N1 | 对应的应是值为1时是正转的那根线 | PF0 |
1N2 | 对应的应是值为1时是反转的那根线 | PF1 |
1P | - | PB9 |
2IN1 | 对应的应是值为1时是反转的那根线 | PF2 |
2IN2 | 对应的应是值为1时是正转的那根线 | PF3 |
2P | - | PC2 |
3IN1 | 对应的应是值为1时是反转的那根线 | PF4 |
3IN2 | 对应的应是值为1时是正转的那根线 | PF5 |
3P | - | PA1 |
4IN1 | 对应的应是值为1时是正转的那根线 | PF6 |
4IN2 | 对应的应是值为1时是反转的那根线 | PF7 |
4P | - | PB8 |
图1-2-2 单片机端5V电源引脚
在这里对这个电机驱动做一个简单的讲解:IN1和IN2负责电机正反转,如果说我让IN1=1,IN2=0,这时候电机以满转速转动。此时再让PB7(PWM引脚)占空比为50%,则电机以50%的转速转动。如果说我让IN1=IN2=1或者0,此时PWM无论占空比为多少电机都不会转动。
2.ATK-1218-BD接线(GPS+BD双模定位模块)
ATK-1218-BD | STM32 |
PPS | - |
RXD | PB10 |
TXD | PB11 |
GND | GND |
VCC | 3V3/5V |
图1-3-1 单片机与ATK-1218-BD接线图
在拿到模块后可自行用串口助手搭配正点原子的上位机进行定位测试,测量一下定位是否存在着较高的误差,确认误差在可控范围内后在安装使用,这里需要注意GPS的信号接收线一定不能被东西给遮挡,周围也不要存在金属物品,尽量选在空旷地方进行定位。
3.IMU901/601接线(陀螺仪/角度传感器)
IMU901/601 | STM32 |
VCC | 3V3/5V |
RX | PA2 |
TX | PA3 |
GND | GND |
其余接口 | - |
图1-3-1 单片机与IMU901/601接线图
在拿到模块后一定要多看这方面相关的文章,否则你根本不知道他的三个角度对应现实中的方向是什么,编者已有文章对其进行详细介绍,详情可参考https://blog.csdn.net/weixin_66429380/article/details/132012199。在了解完方向,只需按文章介绍,把陀螺仪和车头方向保持一致,想办法将其固定,记得一定要远离ATK-1218-BD(否则会对陀螺仪的数据造成极大的干扰)。
到此所有的模块基本安装完毕(语音模块ASRPRO选装【可以实现定点播报目的地的功能,可做的产品方向有:校园导航机器人,外卖配送机器人,导游机器人,快递配送机器人等等】,有兴趣可以私信或留言评论区,这里为了篇幅就不进行讲解了)。
二、总结
硬件部分到此连接完毕,下一步就可以着手进行代码编写,你们的点赞收藏关注是我更新的最大动力,也希望大家能够多多支持。
代码篇上如果反响较好,我会尽早提上日程更新下一篇章的,也感谢大家的观看,文章如有错误之处还请读者指出。
更多开源项目可看我主页...........................................................................................................