一直以来就有想法自己做一个小车玩玩,但是一直没提上日程,这次寒假是个很好的机会,在这里把过程中的一些心得和资源分享给大家,源程序将在文末贴出来供大家参考
硬件部分
底盘
底盘用的是某宝现成的底盘,之前在学校比赛用的是亚克力板,这次选用的是铝合金材料的,怎么造也不会坏,也不贵,一二十块钱吧
麦克纳母轮
在选轮子的时候首先想到的就是麦轮,不仅可以实现全向移动,看起来逼格也更高,选购的时候一定要分清楚左轮和右轮,因为左轮和右轮在旋转时产生的分力是不一样的,想要小车向某一个方向移动,必须抵消掉其他方向的力,否则小车将不受控制我采用的是ABAB式安装,这也是常用的组装方法
减速电机
减速电机种类和样式简直是五花八门,价格也是参差不齐,有高标准的小伙伴们建议多了解一下这里面的套路,我用的是最最最普通的TT电机,速度不是很快,加5V电压的话转速在190r/min左右,主要是性价比让我动心,尤其是对于经济困难的我来说,这种几块钱一个的电机再合适不过了,另外一个要注意的是电机和轮子连接着一块要着重看看
主控模块
原本是准备用stm32的板子的,但是还没学完,就先用51单片机凑合用,其实对于玩玩来说51就够了,编程也简单,这次不是用的传统的带底座的单片机,而是选择了一款新的贴片封装的,看起来要轻巧一些,其实功能都一样,只是这款的TXD和RXD没有标注出来,学过的朋友应该知道其实就是P30和P31两个IO口,关于单片机的知识我不多说,不会的朋友请先简单学习学习,另外,这款板子容易自锁,导致stc一直检测不到单片机,这时候只需要把P10和P11两个IO口同时接地即可,源程序将在文末贴出来
电源模块
电源标称电压5V就够了,重点是要容量大,我用的是4000mAh的,容量太小跑一会儿就没电了影响体验
驱动模块
我选择的是一个集成的四路驱动,其他都挺好,可能散热差一点,有条件的可以选其他带散热片的驱动,驱动的选择不会影响程序的编写
蓝牙模块
蓝牙模块也有很多种,我用的是蓝牙2.0的HC-06主从一体模块,某宝上价格不一,推荐在经常去的店买,有保障,相对于HC-05来说这款更简便,上电就是AT模式,AT指令集我放在下面的链接里了,自取,手机端用的是SPP蓝牙助手
链接:https://pan.baidu.com/s/1RxVXp85P2vCJ9Oy9LTLdzA
提取码:YYDS
舵机
SG90舵机,需要给定持续输出的占空比0.5MS~2.5MS、周期20MS的方波才能转动,0.5MS对应-90°,2.5MS对应90°,SG90舵机角度极限是180°
软件部分
软件以及串口驱动
编译软件:Keil4
烧录软件:stc-isp
串口驱动:CH340
源程序
/**************************************************************
***名称: 蓝牙遥控小车
***作者: ZhangGe0404
***创作日期: 2021.1.19
***晶振: 12M
/*************************************************************/
#include<reg52.h>
#include<intrins.h>
sbit In1=P2^0; //左前电机
sbit In2=P2^1;
sbit In3=P2^2; //右前电机
sbit In4=P2^3;
sbit In5=P2^4; //左后电机
sbit In6=P2^5;
sbit In7=P2^6; //右后电机
sbit In8=P2^7;
sbit SG_PWM=P1^5;//舵机控制端
#define uchar unsigned char //宏定义
/*****************************
***定义全局变量
/****************************/
uchar count=0; //计数变量
uchar PWM_count=15; //预设变量
uchar a=0;
/**************************************************
***初始化定时器函数
/*************************************************/
void Timer_Init()
{
TMOD=0x01; //设置定时器模式为1
TH0=0xfe;
TL0=0xa4; //设置定时器初值为0.1MS
ET0=1; //打开定时器0中断
TR0=1; //定时器0开始计时
EA=1;