野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 350|回复: 0

【野火】第二期瑞萨RA MCU创意氛围赛+蓝牙语音遥控小车

[复制链接]
发表于 2024-11-2 16:54:59 | 显示全部楼层 |阅读模式
本帖最后由 skyjz 于 2024-11-6 10:09 编辑

本项目用瑞萨的R7FA6M5BH3CFC作为主控,四个直流减速电机为小车提供基本的动力,小车搭载蓝牙模块、语音交互模块、电机驱动模块。


本项目是基于启明6M5开发板完成设计,RA6M5芯片配置如下:基于支持 TrustZone 的 Arm Cortex-M33F 内核。最高频 率 200 MHz。高达 2 MB 的闪存和 512 KB 的 SRAM。电压范围为 2.7 V 到 3.6 V。外设包括数据转换 器、定时器、外部存储总线、以太网、全速和高速 USB、CAN、安全功能、电容式触摸感应和用于 TFT 显示的图形 LCD 控制器,以及一个 2D 图形引擎。
野火论坛202411021838448838..png 野火论坛202411021839177841..png



语音模块采用野火小智系列 AI离线语音识别模块云知声US516P6传感器,US516P6模块配置如下:US516P6芯片采用高性能32位RISC内核,最高频率240MHz,支持DSP指令,集成FPU支持浮点运算,通过神经网络对音频信号进行训练学习,提高语音信号的识别能力。该方案支持150条本地指令离线识别,支持RTOS轻量级系统,具有丰富的外围接口,以及简单友好的客制化工具。US516P6芯片具有丰富的系统外设,包括UART,I2C,SPL,PWM,RTC,Timer,.ADC,DAC等,是一款低功耗高性能,主控级别的离线语音识别芯片。

野火论坛202411021843598680..png 野火论坛202411021844172184..png


蓝牙模块采用HC-05系列蓝牙模块,HC-05模块配置如下:KEY、VCC、GND、RXD、TXD、STATE,STATE是蓝牙状态引出脚,未连接时输出低电平,连接时输出高电平。KEY为AT指令设置脚,和按键功能相同。空旷环境下有效距离为10米,超过10米也是有可能的,但超10米不能保证通信质量。通过手机app端软件可以控制小车的前进、后退、左转、右转、调速等等功能。

野火论坛202411021846523567..png 野火论坛202411021845484996..png

前后避障模块采用野火小智系列CS100A超声波测距模块工业级测距芯片可代替HC-SR04,HC-SR04配置如下:CS100A超声波测距模块有两个超声波探头,分别用于发射和接收超声波,TRIG脚用于触发发射超声波,若接收到返回的超声波ECHO脚会输出高电平,根据高电平的持续时间计算目标距离。

采用CS100A工业级超声波测距芯片;使用8MHz高精度晶振,测距更加稳定;超声波测距模块前方处尽量空旷,测距最大可达5M。
当前方遇到障碍则LED2亮起;后方遇到障碍则LED1亮起。
野火论坛202411021852339469..png




语音模块配置通过云知声unios开放平台,配置如下:

野火论坛202411021850459718..png 野火论坛202411021849288399..png 野火论坛202411021849425690..png


配置代码如下:四个gpt分别控制四个轮子,Gpt2->左前轮,Gpt4->右前轮,Gpt6->左后轮,Gpt8->右后轮,实现前进,后退,左转,右转,调速的功能;串口9与语音模块通讯,串口3与蓝牙模块通讯。cs100A车前车后各有一个,实现小车避障的功能,当前方的cs100a检测到有障碍物,则小车停止前进,可以进行后退的操作;当后方的cs100a检测到有障碍物,则小车停止后退,可以进行前进的操作。

野火论坛202411021853515761..png 野火论坛202411021854094010..png 野火论坛202411021854256617..png 野火论坛202411021854426457..png 野火论坛202411021855104783..png 野火论坛202411021855295087..png 野火论坛202411021857166017..png 野火论坛202411021857403210..png 野火论坛202411021936131532..png

主函数代码如下:

#include "hal_data.h"

FSP_CPP_HEADER
void R_BSP_WarmStart(bsp_warm_start_event_t event);
FSP_CPP_FOOTER

#include "gpt/gpt.h"
#include "led/led.h"
#include "usart/usart3.h"
#include "usart/usart4.h"
#include "usart/usart9.h"
#include "cs100a/cs100a.h"
/*******************************************************************************************************************//**
* main() is generated by the RA Configuration editor and is used to generate threads if an RTOS is used.  This function
* is called by main() when no RTOS is used.
**********************************************************************************************************************/
char SendBuffer[20];
void hal_entry(void)
{
    /* TODO: add your own code here */

    led_init();

//   BLOOTH_DISABLE;

    usart3_init();
    usart4_init();
    usart9_init();
    printf("start!\r\n");

    AGT0_Timing_Init();
    CS100A_Init();

    Gpt2_Init();//左前轮
    Gpt4_Init();//右前轮
    Gpt6_Init();//左后轮
    Gpt8_Init();//右后轮

    Gpt_Pwm_Setduty(GPT2,0);
    Gpt_Pwm_Setduty(GPT4,0);
    Gpt_Pwm_Setduty(GPT6,0);
    Gpt_Pwm_Setduty(GPT8,0);

    GPT2_A_OFF();
    GPT2_B_OFF();
    GPT4_A_OFF();
    GPT4_B_OFF();
    GPT6_A_OFF();
    GPT6_B_OFF();
    GPT8_A_OFF();
    GPT8_B_OFF();

    LED1_OFF();
    LED2_OFF();
    LED3_OFF();

//    BLOOTH_ENABLE;
//    memset(SendBuffer,'\0',20);
//    sprintf(SendBuffer,"AT+RESET\r\n");
//    Usart_SendString(&g_uart9_ctrl,SendBuffer);
//    R_BSP_SoftwareDelay(1,BSP_DELAY_UNITS_SECONDS);
//
//    sprintf(SendBuffer,"AT+VERSION?\r\n");
//    Usart_SendString(&g_uart9_ctrl,SendBuffer);
//    R_BSP_SoftwareDelay(1,BSP_DELAY_UNITS_SECONDS);
//
//    sprintf(SendBuffer,"AT+NAME?\r\n");
//    Usart_SendString(&g_uart9_ctrl,SendBuffer);
//    R_BSP_SoftwareDelay(1,BSP_DELAY_UNITS_SECONDS);
//
//    sprintf(SendBuffer,"AT+CMODE=1\r\n");
//    Usart_SendString(&g_uart9_ctrl,SendBuffer);
//    R_BSP_SoftwareDelay(1,BSP_DELAY_UNITS_SECONDS);
//
//    sprintf(SendBuffer,"AT+CMODE?\r\n");
//    Usart_SendString(&g_uart9_ctrl,SendBuffer);
//    R_BSP_SoftwareDelay(1,BSP_DELAY_UNITS_SECONDS);
//
//    sprintf(SendBuffer,"AT+BIND?\r\n");
//    Usart_SendString(&g_uart9_ctrl,SendBuffer);
//    R_BSP_SoftwareDelay(1,BSP_DELAY_UNITS_SECONDS);
//
//    sprintf(SendBuffer,"AT+STATE?\r\n");
//    Usart_SendString(&g_uart9_ctrl,SendBuffer);
//    R_BSP_SoftwareDelay(1,BSP_DELAY_UNITS_SECONDS);

    while(1)
    {
//        Cs100A_Check();
        Cs100A_FrontCheck();
        Cs100A_RearCheck();
//       R_BSP_SoftwareDelay(50,BSP_DELAY_UNITS_MILLISECONDS);
//        R_BSP_SoftwareDelay(1,BSP_DELAY_UNITS_SECONDS);

//        GPT2_FRONT();
//        GPT4_FRONT();
//        GPT6_FRONT();
//        GPT8_FRONT();
//        LED1_TOGGLE;
//        R_BSP_SoftwareDelay(1,BSP_DELAY_UNITS_SECONDS);
//        Gpt_Pwm_Setduty(6,0);
//        Gpt_Pwm_Setduty(4,100);
//        R_BSP_SoftwareDelay(3,BSP_DELAY_UNITS_SECONDS);
//        Gpt_Pwm_Setduty(4,0);
//        Gpt_Pwm_Setduty(6,0);
//        R_BSP_SoftwareDelay(1,BSP_DELAY_UNITS_SECONDS);
//        Gpt_Pwm_Setduty(4,0);
//        Gpt_Pwm_Setduty(6,100);
//        R_BSP_SoftwareDelay(3,BSP_DELAY_UNITS_SECONDS);
//        Gpt_Pwm_Setduty(4,0);
//        Gpt_Pwm_Setduty(6,0);
//        R_BSP_SoftwareDelay(1,BSP_DELAY_UNITS_SECONDS);
    }

实物图如下:
野火论坛202411021924414083..jpg


SmartCar_RA6M5 (1102).zip (1.61 MB, 下载次数: 2)


B站视频展示链接:

https://www.bilibili.com/video/BV1z3SzYkEdc/?vd_source=789de4862a6096312089ce8258d4c9af


由于本人最近一段时间比较忙,没有足够的时间去完善一些功能,很多其他的功能之前其实已经规划好了,但是没办法只能这样草草的结尾了,在整个学习过程中,野火编写的文档还是比较清晰的,跟着pdf一步一步的走省去了很多的麻烦。如果还有机会参与下一次的氛围赛,我会努力提交一个完整的有特色的作品。





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-21 17:59 , Processed in 0.138012 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表