
智能的车
简介
基于GD32F470核心板、蓝牙通信、避障、播放音乐的智能小车
简介:基于GD32F470核心板、蓝牙通信、避障、播放音乐的智能小车开源协议
:GPL 3.0
描述
原理图
Tip:1、循迹电路中ITR9909注意序号顺序(顺时针)1243,别放反了,并且画pcb时放到底层。
2、蜂鸣器供电应该3.3V,视频里是5V会导致一直响。
3、画PCB时超声波注意别摆反了(实物需要朝向前方)
4、建议增加按键或者蓝牙切歌
PCB版-顶层
PCB版-底层
模块:
-
LED车灯:
小车前方有两个LED光强度照明灯,左右各一个。
-
按键:
小车扩展板有2个独立按键,KEYS与KEYM,可用于启动和运动模式切换,在代码案例中有具体实现。KEYS按键有一个LEDS指示灯,KEYM按键有一个LEDM指示灯,按键按下可以切换灯的状态。当KEYM按下时进入避障模式,当KEYM没有按下时进入循迹模式,KKEYS是开启小车。 -
蜂鸣器:
小车搭载了一个蜂鸣器,可用于遇到障碍物时发出警报,同时蜂鸣器的控制引脚还有定时器功能,可以改变其输出频率让其播放音乐。 -
ADC电压检测:
小车搭载了ADC电压检测电路,利用ADC采集功能实现电压采集,当电池没电时,提醒我们及时充电。可以看出利用三个相同电阻分压来检测电池的压降。
电路:
代码:
if(adcValue < 3002)//电量低于6.6V时,蜂鸣器鸣叫
{
beep_on();
}
else//电量高于6.6V时,蜂鸣器关闭
{
beep_off();
} -
超声波模块:
小车的正前方有一个HCSR04超声波模块,可以用于实现超声波避障。
tip:为了布线方便,改变摆放方向,导致超声波朝后,故飞线,故画PCB时要注意。 -
电机:
小车有四个电机,使用RZ7899芯片驱动。可以实现前进,后退,左转,右转,停止(刹车/熄火),结合定时器PWM功能可以改变小车运动的速度。使用的电机时每分钟8000r,6000r足够,但是因为价格一样和为了更好的区分慢中快选择了8000r。 -
循迹:
小车搭载了5路红外循迹,可用于循黑线行驶。使用ITR9909,一个灯发一个灯收,检测黑线,然后用电压比较器判断左右调整。
引脚:
_ 实物:_
引脚顺序:
使用数字万用表测量PIN1,PIN2之间,可以测量LED单向导通特性。前向导通电压:1.01V。 -
避障:
小车可以使用超声波模块完成避障功能。
代码:
int32_t HCSR04_Get_Distance(void)
{
uint32_t t=0;//Echo高电平时间
int32_t d=0;Trig=1;
delay_1us(20);
Trig=0;t=0;
while(Echo==0)
{
delay_1us(1);
t++;if(t >= 1000000) return -1;//设备响应超时处理,设备出现故障
}
t=0;
while(Echo)
{delay_1us(9); t++; if(t >= 10000)//超出测量范围处理 return -2;
}
d = t*3/2; //t是波来回的时间,除以2是单个路程。
return d;
} -
蓝牙模块:
小车提供了蓝牙模块接口,可配合手机蓝牙APP实现无线遥控小车的功能。
代码:
if(g_recv_complete_flag) // 数据接收完成
{
g_recv_complete_flag = 0; // 等待下次接收
printf("g_recv_length:%d ",g_recv_length); // 打印接收的数据长度
printf("g_recv_buff:%s\r\n",g_recv_buff); // 打印接收的数据
switch(g_recv_buff[0]){
case 0x01: //前进
car_front(speed);
break;
case 0x02://后退
car_back(speed);
break;
case 0x03://左转
car_left(80);
break;
case 0x04: //右转
car_right(80);
break;
case 0x05: // 停止
car_stop(Brake_Stop);
break;
case 0x06: //左右灯亮
led_l_on();
led_r_on();
break;
case 0x07: //左右灯灭
led_l_off();
led_r_off();
break;
case 0x08: //低速
speed=42;
break;
case 0x09: // 中速
speed=66;
break;
case 0x0a: // 高速
speed=100;
break;
default:
printf("指令错误!!!\r\n");
break;
}
memset(g_recv_buff,0,g_recv_length); // 清空数组
g_recv_length = 0; // 清空长度
}
_ 界面:_
-
MP3
MP3-TF-16P2,可使用TF卡和外插U盘,这里为了方便外接出了U盘。
接线:
管脚说明:
测试方法1:
只需要用到4根接线即可,VCC,GND连接电源,SPK1(或者SPK2),GND连接喇叭,接好以后,插入装有MP3音乐文件的TF卡或U盘,然后,短接ADKEY1和GND,就可以直接播放TF卡里的音乐了
测试方法2:
使用串口助手软件,将模块上的TX,RX分别接至USB转串口的下载调试接口上,通过串口助手软件发送控制指令,如播放TF卡中的第一首歌曲,相应的指令为:7E FF 06 03 00 00 01 FE F7 EF,具体的指令含义可以参考使用说明手册。要注意一点的就是发送的内容只能以16进制的方式发送,串口的波特率一定要选择9600,和MP3模块相对应。
测试方法3:
自己写程序进行控制调试,这里的发送和接收用的PA9 PA10所以是串口0,调试程序时已经初始化,直接发送字节即可。
_ 代码:_
delay_1ms(1000);
usart_send_data(0x7e);
usart_send_data(0xff);
usart_send_data(0x06);
usart_send_data(0x03);
usart_send_data(0x00);
usart_send_data(0x00);
usart_send_data(0x01);
usart_send_data(0xef);
设计图

BOM


评论