基于单片机的蓝牙遥控小车设计
2022-11-17肖涛
肖 涛
(湖南科技学院 智能制造学院,湖南 永州 425199)
0 引言
51单片机虽然诞生很多年,是最简单的单片机之一。史上最廉价的51遥控车,加上充电器两节,当时价格是79元左右[1]。蓝牙遥控小车是一个综合系统,主要是以单片机为核心进行控制移动,在国内的市场还没有出现真正意义上的跟随性智能载物小车[2]。本设计尝试通过软硬件的设计实现蓝牙遥控基本操作和基本的红外避障、红外寻迹、超声波避障等功能。
1 设计与实现
1.1 直流电机驱动
L298N有两个供电功能,一是逻辑控制部分的5 V供电,二是电机供电。电机供电能到46 V[3],12 V是给电机供电的,接通之后,电机运转。板上有一个5 V稳压管,如果板上5 V有效,L298N的逻辑部分供电就从这个稳压管获得,这样就不用外接5 V,此时还可以将得到的5 V稳压给别的模块供电。如果外接5 V,板上5 V会自动断开而无效[4]。
稳压管的输入和输出有压差,如果给电机的供电太低,通过压差后可能会降低太多,那么逻辑控制部分的5 V电压达不到要求,此时需要将板上5 V断开,外接5 V的电源给逻辑控制部分供电。
1.2 L298N模块
L298N模块是两路电机驱动模块,左右两侧的接线帽各接电机,中间的4根插针是控制线,左边两个控制左边电机(电平颠倒后电机反转)。其中有两个接线帽,每个接线帽接有两个插针,一个是使能端,一个是5 V,3P的接线帽中间是接GND,左侧是接高电源输入(最高可能12 V),右侧是5 V输出,因此这个模块可以作为5 V电源。
1.3 蓝牙模块
蓝牙模块电路连接是串口线,蓝牙在51遥控车上只需要3根线,即gnd,vcc,tx,其中tx接到51的rx即P3.0引脚。注意蓝牙模块具有固定的波特率,可以设置成主模块或从模块(主模块可以主动连接其他蓝牙模块),设置方式是将蓝牙模块连接到USB转TTL上。注意tx和rx反接进入AT模式,既可以设置蓝牙名字,又可以设置密码、主从角色等。
1.4 程序原理
整个小车系统可以分为手机端和单片机端两个部分。手机端设计的App是利用蓝牙,按下某个键会将对应的数字发送到安装于单片机端的蓝牙模块,蓝牙模块再将其发送到单片机上的蓝牙模块。单片机端要对单片机程序进行设置具体寄存器,要注意波特率和晶振是对应的4800或者9600,注意信号线要连接正确。初始化设置如下。
SCON=0x50;PCON=0x00;TMOD=0x20;
EA=1;ES=1;TL1=0xfd;TH1=0xfd;TR1=1;
执行语句:
void serial() interrupt 4{
while(1){
ES=0;RI=0;buf=SBUF;
switch(buf){
case 0x31: P1=0xfe;FM=1;Car_Run(1);break;
case 0x32: P1=0xfd;FM=1;Car_Run(0);break;
case 0x33: P1=0xfb;FM=0;Car_Run(2);break;
case 0x34: P1=0xf7;FM=1;Car_Run(1);Car_Run(4);break;
case 0x35: P1=0xef;FM=1;Car_Run(1);Car_Run(3);break;
}ES=1;}}
不同case的情况中,按下不同的按键会发过来不同的代码,这些代码是0x31,0x32等。不同的App不一样,可以使用串口助手通过USB转ttl接收蓝牙模块的信号,然后根据发过来的消息进行相应的控制。几个Car_Run函数是用来控制小车前进后退的程序。串口中断的原理是执行main函数时接收到串口信号,则停止执行主函数,然后去执行中断函数里面的函数。
1.5 超声波模块
超声波模块共有4只引出脚,从左往右,第一脚为VCC,该模块工作电压为5 V;第二只脚为Trig,输入触发信号;第三只脚为Echo,输出回响信号;第四只脚为接地。这里设计的时候要注意:第一,至少给Trig 10 us的高电平信号;第二,模块自动发送8个40 kHz的方波,自动检测是否有信号返回;第三,有信号返回,通过Echo输出一高电平,高电平持续的时间就是超声波从发射到放回的全部时间;第四,测试距离=(高电平时间×声速(340 m/s))/2。超声波测距的关键一点就是对时间的精确测量。要想精确测量时间需要用到定时器,比如前面T0用于PWM,T1用于串口通信。这里我们使用了T2。T2与T0,T1的使用方式有所差异,T2不能直接用于超声波的计时,把T2用作波特率发生器,T1用于计时,则需要对寄存器重新进行配置,充分利用3个定时/计数器,最终可以达到预期效果。
1.6 编码器模块
为了调节小车前进的速度和提高避障速度,采用EC11旋转式编码器,该编码器可用于光度、湿度、音量调节等参数的调节。EC11编码器的形状类似于电位器,中心有一个旋钮可以调节PWM信号。光电码盘利用光电转换原理输出3组方波脉冲,显示小车转速以及左右编码器数值和电池电压等参数。OLED显示模块,分辨率较高,而且功耗低。正常显示时仅0.06 W,供电电压范围在3.3~5 V,有IIC和SPI两种通信协议可供选择。显示模块的亮度和对比度可以通过程序设置。由于它使用寿命长以及其他的优点,OLED更加适合小系统。本系统由于单片机引脚有限,不适合利用简单的LCD1602或者12864来显示,在多方对比之下OLED的效果更好。
1.7 小车架子
车架子作为车的支撑和承载结构,极大地影响到车的最终效果,应该选购合适的车架。其中有一点需要说明的是,选择的车架前轮转弯的调整方式应该是通过电机来调整比较合适,通过舵机调整的效果更好。电机的实现比较优雅的转弯方式可以查询相关的“万向轮”和“转向前桥”。使用结构比较简单的万向轮来实现转弯。除了转弯实现方式,电机是否与小车架子匹配也是很重要的。
2 结语
本文设计实现的蓝牙智能小车已经完成,但小车的功能还远远不止这些,后期的功能还可以进一步提升,比如使用图像处理、音频处理、嵌入式、人工智能等,还应继续拓展小车其他的功能,对小车的探究还需要进一步的努力。