听话的狗子

  • 功能描述
  • 成品展示
    • 视频展示
  • 硬件介绍
    • 电源部分
      • 手册参考电路
      • 实际使用电路
    • 主控电路
    • 下载电路
    • 舵机驱动模块
    • 语音识别模块
    • 其他注意事项
  • 软件简介
    • 主体框架
    • 语音识别代码
    • 蓝牙APP
  • 机械结构
  • 学习笔记
  • 总结

功能描述

四足机器人:目前已经支持语音控制前进、后退、左转、右转、扭身子、握手、跳跃等;支持AP模式,用终端连接热点,访问网页进行控制;还支持使用HC05和蓝牙调试器进行控制;超声波避障还在优化中。

成品展示

视频展示

1.自己的方案:【立创训练营–听话的狗子-哔哩哔哩】
2.官方作业:【立创训练营–仿生机器狗(丐版)-哔哩哔哩】
其他的学习作品:
1.【Hi3861+oled播放动画-哔哩哔哩】
2.OpenHarmony学习笔记——Hi3861+ASR-01的语音识别助手
3.【OpenHarmony南向开发日常–基于Hi3861与onenet的远程温湿度检测-哔哩哔哩】

硬件介绍

电源部分

由于整个项目需要驱动9个舵机,需要比较大的电流,所以供电选用两节18(直径)65(长度)0(圆柱形)锂电池,电源部分主要使用12V-5V,以及5V-3.3V的LDO(这里有个优化点,作者当时图简单,使用的都是LDO,实测发热还是比较严重,后面有打算换成DCDC进行供电)。

手册参考电路

LM1084(商城料号:C259973):

UZ1084:(商城料号:C84897)

实际使用电路

主控电路

主控使用的是传智教育的Hi3861模组(商城料号C2923578),该模组内置最小系统电路,简化了该部分电路设计,只需要额外增加一个复位电路以及在电源部分添加一个100nF的旁路电容C7(大电容滤除低频噪声,小电容滤除高频噪声)即可。

下载电路

上一期训练营,没有添加CH340需要外部接线,给我人接麻了,疼定思痛,加上了CH340G模块,由于使用的是Type-c接口,所以在CC1和CC2要下来俩个电阻,方便电脑识别如果不加有可能会识别不到。另外,Hi3861是3.3V电压基准,为了保证统一电平,这里CH340G采用3.3V供电(上一期笔者有用5V供电烧录失败的经历)所以对应的V3端口也要接3.3V,而非5V供电时的那样。

舵机驱动模块

由于PCA9685商城没有现货,在某宝查了一下价格,买个芯片和买个模块要花差不多的米,本着提高成功率的态度,买了模块。

语音识别模块

语音识别使用的是鹿小班语音识别模块,官方简介:
ASR-01是一颗专用于语音处理的人工智能芯片,可广泛应用于家电、家居、照明、玩具等产品领域,实现语音交互及控制。
ASR-ONE内置自主研发的脑神经网络处理器BNPU,支持200条命令词以内的本地语音识别,内置CPU核和高性能低功耗Audio Codec模块,集成多路UART、IIC、PWM、GPIO等外围控制接口,可以开发各类高性价比单芯片智能语音产品方案。

想要购买的戳这——「LU-ASR01鹿小班智能语音识别模块 离线识别 自定义词条远超LD3320」他们近期出了一款PRO版本,据说是支持声纹识别的,笔者还没买来尝鲜,有兴趣的同学自行了解吧。

其他注意事项

可能是由于这个模组BootLoader的影响,在上电和烧录时,如果其它引脚接入了模块就会造成乱码和无法复位的问题,所以在设计电路的时候,对于IO的使用尽量用排针排母引出使用而不是在电路中焊死,例如串口1的TX、RX如果上电之前已经接了CH340之类的就有可能出现无法启动,无法复位,无法烧录的问题。

软件简介

主体框架

程序主体还是用的传智官方的示例,在此基础上进行了亿点点修改,主要是增加了一个串口任务和动作逻辑。


static void UART_Task(void)
{IotUartAttribute uart_attr = {//baud_rate: 9600.baudRate = 9600,//data_bits: 8bits.dataBits = 8,.stopBits = 1,.parity = 0,.rxBlock = 0,.txBlock = 0,};//Initialize uart driverIoTUartInit(HI_UART_IDX_1, &uart_attr);while (1){printf("=======================================\r\n");printf("*************SIZU_example**************\r\n");printf("=======================================\r\n");// //通过串口1发送数据// IoTUartWrite(HI_UART_IDX_1, (unsigned char *)data, strlen(data));//通过串口1接收数据IoTUartRead(HI_UART_IDX_1, uart_buff_ptr, UART_BUFF_SIZE);SIZU_Uart_Cmd((char *)uart_buff_ptr);printf("Uart1 read data:%s\r\n", uart_buff_ptr);usleep(500000);}}static void start(void) {osThreadAttr_t attr;//设置GPIO_2引脚复用功能为PWMIoTIoSetFunc(IOT_IO_NAME_5, IOT_IO_FUNC_5_UART1_RXD);IoTIoSetFunc(IOT_IO_NAME_6, IOT_IO_FUNC_6_UART1_TXD);IoTIoSetFunc(IOT_IO_NAME_10, IOT_IO_FUNC_10_I2C0_SDA);IoTIoSetFunc(IOT_IO_NAME_9, IOT_IO_FUNC_9_I2C0_SCL);IoTI2cInit(0, 400000);dog_init();genki_services_start();init_service();attr.name = "UART_Task";attr.attr_bits = 0U;attr.cb_mem = NULL;attr.cb_size = 0U;attr.stack_mem = NULL;attr.stack_size = UART_TASK_STACK_SIZE;attr.priority = UART_TASK_PRIO;if (osThreadNew((osThreadFunc_t)UART_Task, NULL, &attr) == NULL){printf("[ADCExample] Falied to create UART_Task!\n");}
}APP_FEATURE_INIT(start);

动作逻辑主要参考的B站——【金属舵机+3D打印四足机器人-哔哩哔哩】

//  --------                 --------
// |  D9    |               |  D7    |
// | joint9 |               | joint7 |
//  ----- --------     --------- -----
//       |  D8    |   |  D6    |
//       | joint8 |   | joint6 |
//        --------     --------
//       |  D2    |  |   D4    |
//       | joint2 |  |  joint4 |
//  ----- --------    --------- -----
// |  D3    |               |  D5    |
// | joint3 |               | joint5 |
//  --------                 --------
//                Front

然后是语音识别,参考的笔者上期做的笔记——OpenHarmony学习笔记——Hi3861+ASR-01的语音识别助手,由于功能比较简单,也就没有去弄数据包,一个简单的开头和一个数字,然后使用atoi函数获取数字,进行判断,最后执行操作即可。

// An highlighted block
enum{Get_Down,//趴下Hand_shake,//握手Go_Forward,//前进Go_Backward,//后退Go_Left,//左转Go_Right,//右转Twist_Body,//扭身子Stretch_Oneself,//伸懒腰WAIT//d
};//检测串口指令
void SIZU_Uart_Cmd(char *str)
{char  *Str;unsigned char ID=255;Str=&str[1];//定位到指令的数字部分“U1”ID=atoi(Str);if(strstr((const char *)str,"G")!=NULL)         //如果字符串str中包含有“G”{switch(ID){case Get_Down: //趴下  G0sithome();printf("Get_Down\r\n");break;case Hand_shake:   // 握手G1wink(10);printf("Handshake\r\n");break;case Go_Forward:    // 前进G2forward(5);printf("Go_Forward\r\n");break;case Go_Backward:    // 后退G3backward(5);printf("Go_Backward\r\n");break;case Go_Left:  // 左转G4leftturn(5);printf("Go_Left\r\n");break;case Go_Right: // 右转G5rightturn(5);printf("Go_Right\r\n");break;case Twist_Body: // 扭身子twist();printf("LED_Add\r\n");break;case Stretch_Oneself:   //伸懒腰printf("LED_Reduce\r\n");stand3();break;default:printf("%s ERROR",str);standhome();break;}}memset(uart_buff,0,sizeof(uart_buff));
}

语音识别代码

语音识别使用的是天问的鹿小班模块,内置图形化编程模块,YYDS,会拖动模块就可以了,想玩语音识别的,强烈推荐此款。

蓝牙APP

由于笔者没有学习过APP的制作,这里用的是蓝牙调试器来制作的上位机,这个调试器功能还是蛮强的,有兴趣的可以去试试。

顺便问一下,哪位同学有好的APP制作教程啊,就做做简单上位机的那种。

机械结构

笔者也是第一次自己绘制3D结构件,还不太OK啊,跟着画了个锤子,然后觉着自己画的结构实在不太靠谱,于是去海鲜市场捞了一下,找到了这个,有相同烦恼的同学可以去看看,38米——四足机器人3D打印件(打印件不是整机,电子件、螺丝等自备)。

学习笔记

这里有亿点点OpenHarmony的学习笔记,放在这欢迎大家交流学习,有错误之处欢迎私信教我修改,不然误人子弟了。
OpenHarmony学习笔记——南向开发环境搭建
OpenHarmony学习笔记——编辑器访问Linux服务器进行编译
OpenHarmony学习笔记——点亮你的LED
OpenHarmony学习笔记——多线程的创建
OpenHarmony学习笔记——I2C驱动0.96OLED屏幕
OpenHarmony学习笔记——Hi3861使用DHT11获取温湿度
OpenHarmony学习笔记——Hi3861接入OneNET
手把手教你OneNET数据可视化
OpenHarmony学习笔记——Hi386+ASR-01的语音识别助手
Hi3861网络通信——UDP收发

总结

文中如有不妥之处欢迎批评指出,工程资料链接——听话的狗子。

[立创传智黑马程序员CSDN]训练营——仿生机械狗相关推荐

  1. 飞鸽传书官方网站 创立黑马程序员训练营

    张孝祥于2001年创办锐信科技有限公司,2005年创办传智播客科技有限公司,飞鸽传书官方网站 创立黑马程序员训练营,一直致力于陶瓷的飞鸽传书软件开发教育事业,张孝祥老师善于解剖和分析问题,善于使用生动 ...

  2. 【传智播客】Javaweb程序设计任务教程 黑马程序员 课后答案【合集】

    [传智播客]Javaweb程序设计任务教程 黑马程序员 第一章 课后答案 [传智播客]Javaweb程序设计任务教程 黑马程序员 第二章 课后答案 [传智播客]Javaweb程序设计任务教程 黑马程序 ...

  3. 传智播客.黑马程序员,学C++不再难!

            众所周知,C++难.就好像博大精深的汉语比英语难,这是客观事实,我们并不否认.        但,转念想想,英语也不简单吧?从小学开始学,到了大学,挂在四六级上的同学数不胜数.可貌似没 ...

  4. 想进入黑马程序员——传智播客学习

    前些天突然有感自己即将毕业了,小小的感触了一番.反思反思自己这几年大学的所作所为,确实学到的东西太少了,本来是学计算机网络方面的,现在都偏离了本行,搞起了软件方面,可是软件方面的基础也不扎实,面临的各 ...

  5. 重磅!华为云社区·CSDN【寻找黑马程序员】有奖征文活动奖项公布!!

    华为云社区·CSDN[寻找黑马程序员]第一期有奖征文活动在大家的鼎力支持下顺利落幕啦,非常感谢大家一直以来的支持~现在小宅就要隆重公布本次活动的奖项了!! 请各位获奖的伙伴在8月18日前私信联系提供联 ...

  6. 华为云社区·CSDN【寻找黑马程序员】有奖征文活动,邀你挥洒才情

    还在独自一人挥洒热血敲代码?还在默默孤单写项目?专业的文字没人懂? 别再埋没你的才华啦,华为云寻找黑马程序员计划,寻找才华无限的你! 来这里,和我们分享您程序员道路上的经验总结.技术干货或者在华为云上 ...

  7. 黑马程序员-黑马程序员训练营基础测试

    ---------------------- ASP.Net+Unity开发. .Net培训.期待与您交流! ---------------------- 为了帮助更多的人了解黑马,让更多想知道黑马测 ...

  8. 黑马程序员训练营十道满分题解

    黑马程序员训练营基础测试题十道 代码下载见GitHubs:https://github.com/fairyxingyun/Itheima_exam_10_answer 1. 编写一个函数,函数内输出一 ...

  9. 黑马程序员入学Java知识——精华总结

    黑马程序员入学Java知识--精华总结 J2SE部分,Java高新技术部分,7K面试题部分等黑马入学要求的知识点总结! 一.黑马程序员-java概述与基础知识 6 1.何为编程? 6 2.Java语言 ...

最新文章

  1. ASP.NET 2.0 正式版中无刷新页面(客户端回调)的开发
  2. PMCAFF高端俱乐部首次集结,最顶级产品人的私密俱乐部!
  3. boost::hana::range_c用法的测试程序
  4. GoogLeNet系列解读
  5. .NET 6新特性试用 | 自动生成高性能日志记录代码
  6. Problem G. Graph 2015-2016 acmicpc neerc 拓扑排序模拟
  7. 学习Python,在人工智能的风口抢占未来
  8. 《Cortex-M0权威指南》之体系结构---嵌套中断控制器(NVIC)
  9. 09 动态数组和数据
  10. 【C/C++】基本数据类型的隐式类型转换
  11. 面试:输出循环小数的循环节
  12. Pytorch中RNN输出的h_n和output是什么
  13. 优化无极限:从96秒到1.5秒
  14. 推荐好书:《电子设计从零开始》
  15. 不想做外包,当不了药神,AI公司如何才能走通制药这条路?
  16. java layoutinflater_LayoutInflater详解
  17. 计算机网络 数据链路层 数据链路层的作用
  18. 计算机软件 硬件的组成部分,计算机软硬件组成.ppt
  19. 工程师的终极灵魂拷问: 谷歌和FB的offer, 应该怎么选?
  20. 3D点云之PCL学习之路(一)

热门文章

  1. python+selenium 拉勾网信息获取,主要是定位元素的练习
  2. 华为服务器如何设置网站dns,华为ensp服务器dns配置
  3. 车规级需要满足哪些规范?
  4. img预加载获取图片大小方法
  5. 《千与千寻》高清下载
  6. 《华仪酒店管理系统》项目研发性总结
  7. php编辑器怎么修改字体,vscode怎么改变字体
  8. java 例外_【JAVA基础】浅析JAVA例外处理(转)
  9. 【苹果群发苹果相册推】通过安装软件或使用此类Apple Services
  10. 寻找市场中的Alpha—WorldQuant的阿尔法设计理念(上)