发作品签到
专业版

智能的车

工程标签

1.4k
0
0
0

简介

基于GD32F470核心板、蓝牙通信、避障、播放音乐的智能小车

简介:基于GD32F470核心板、蓝牙通信、避障、播放音乐的智能小车

开源协议

GPL 3.0

创建时间:2023-05-04 14:40:03更新时间:2023-08-22 02:21:39

描述

原理图
SCH_Schematic1_1-P1_2023-07-02.png

Tip:1、循迹电路中ITR9909注意序号顺序(顺时针)1243,别放反了,并且画pcb时放到底层。
2、蜂鸣器供电应该3.3V,视频里是5V会导致一直响。
3、画PCB时超声波注意别摆反了(实物需要朝向前方)
4、建议增加按键或者蓝牙切歌

PCB版-顶层
1685633875332.jpg
PCB版-底层
1685633892451.jpg

模块:

  1. LED车灯:
    小车前方有两个LED光强度照明灯,左右各一个。
    1688231943705.jpg

  2. 按键:
    小车扩展板有2个独立按键,KEYS与KEYM,可用于启动和运动模式切换,在代码案例中有具体实现。KEYS按键有一个LEDS指示灯,KEYM按键有一个LEDM指示灯,按键按下可以切换灯的状态。当KEYM按下时进入避障模式,当KEYM没有按下时进入循迹模式,KKEYS是开启小车。

  3. 蜂鸣器:
    小车搭载了一个蜂鸣器,可用于遇到障碍物时发出警报,同时蜂鸣器的控制引脚还有定时器功能,可以改变其输出频率让其播放音乐

  4. ADC电压检测:
    小车搭载了ADC电压检测电路,利用ADC采集功能实现电压采集,当电池没电时,提醒我们及时充电。可以看出利用三个相同电阻分压来检测电池的压降。
    电路:
    1688232360777.jpg
    代码:
    if(adcValue < 3002)//电量低于6.6V时,蜂鸣器鸣叫
    {
    beep_on();
    }
    else//电量高于6.6V时,蜂鸣器关闭
    {
    beep_off();
    }

  5. 超声波模块:
    小车的正前方有一个HCSR04超声波模块,可以用于实现超声波避障。
    253e1da1106a72bb0134e5d13c12057.jpg
    tip:为了布线方便,改变摆放方向,导致超声波朝后,故飞线,故画PCB时要注意。

  6. 电机:
    小车有四个电机,使用RZ7899芯片驱动。可以实现前进,后退,左转,右转,停止(刹车/熄火),结合定时器PWM功能可以改变小车运动的速度。使用的电机时每分钟8000r,6000r足够,但是因为价格一样和为了更好的区分慢中快选择了8000r。

  7. 循迹:
    小车搭载了5路红外循迹,可用于循黑线行驶。使用ITR9909,一个灯发一个灯收,检测黑线,然后用电压比较器判断左右调整。
    引脚:
    1688233156834.jpg
    _ 实物:_
    1688233221484.jpg
    引脚顺序:
    1688233290163.jpg
    使用数字万用表测量PIN1,PIN2之间,可以测量LED单向导通特性。前向导通电压:1.01V。

  8. 避障:
    小车可以使用超声波模块完成避障功能。
    代码:
    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;
    }

  9. 蓝牙模块:
    小车提供了蓝牙模块接口,可配合手机蓝牙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; // 清空长度
    }
    _ 界面:_
    bda716d5ae3647d153e28a161b07c4e.jpg

  10. MP3
    MP3-TF-16P2,可使用TF卡和外插U盘,这里为了方便外接出了U盘。
    接线:
    1688234308420.jpg

管脚说明:
1688234426553.jpg

测试方法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模块相对应。
1688234660845.jpg
测试方法3:
自己写程序进行控制调试,这里的发送和接收用的PA9 PA10所以是串口0,调试程序时已经初始化,直接发送字节即可。
1688234737372.jpg
_ 代码:_
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

暂无BOM

附件

序号文件名称下载次数
1
carmp3.mp4
83
2
bluetooth - Compressed with FlexClip.mp4
73
3
obstacle_avoiding.mp4
68
4
综合测试.zip
20
5
MP3-TF-16P模块使用说明书.zip
141
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航