用ASR PRO离线语音芯片和月饼盒做一个会跑会跳会说话的机器狗

中秋节刚过,大家月饼盒应该还有,不要扔,可以做点小玩意。

机器狗的创意来自B站石桥北的视频,他使用了一块ESP32芯片和打印件加四个舵机实现,应该说是比较复杂的,需要有3D打印机打印外壳,还得会手机编程,有一定的专业度。

我这个简略版核心部件一块ASR芯片+4个舵机,四个舵机就是四条腿,ASR芯片本身带离线对话功能,自己设计一下对话控制舵机就好了。如果要增加趣问性,可以加一块OLED屏幕显示一些操作指令和绘制一些表情,

如上图,asrpro芯片包含六个舵机引脚pwm0到pwm5,我们只使用了四个,剩下两个有兴趣的还可以加上个尾巴和头,或者加上红外,温湿度传感器之类,oled屏将会占去两个,其他引脚就看大家发挥了。

最好是方形的盒子,这样好定位,贴着盒子底部,在盒子两侧一边挖两个方形的洞,如上图,正好可以把舵露出来舵机头为好,口的大小以能卡住固定镙丝的地方为宜。可以先使用纸片沿着舵机屁股裁一块相同大小的纸片,然后用这个纸片在盒子上比划出大小,然后使用美工刀挖出来。易拉罐应该也可以的,不过要使用胶带包一下,防止划破手,如下:

最终如下,:

接线:

PA2,PA3,PA5,PA6初始化为四个舵机,

PA0和PA1初始化为OLED屏。

完整的代码和图:

#define ASC2_12#include "asr.h"
extern "C"{ void * __dso_handle = 0 ;}
#include "setup.h"
#include "myLib/asr_event.h"
#include "myLib/asr_ssd1306.h"
#include "myLib/asr_servo.h"uint32_t snid;
Servo servo_3;
Servo servo_2;
Servo servo_5;
Servo servo_6;
void ASR_CODE();//{speak:程程-标准男童,vol:10,speed:10,platform:haohaodada}
//{playid:10001,voice:汪汪汪,用旺旺唤醒我。}
//{playid:10002,voice:我去玩了,用旺旺唤醒我}SSD1306 ssd1306(128,64,0,1);
/*描述该功能...
*/
void ASR_CODE(){switch (snid) {case 0:ssd1306.clear((0));ssd1306.set_cursor(0,0);ssd1306.draw_hanzi_12("有什么事请吩咐");ssd1306.fill_circle(86,44,10,(1));ssd1306.fill_circle(40,44,10,(1));ssd1306.display();break;case 1:ssd1306.clear((0));ssd1306.set_cursor(0,0);ssd1306.draw_hanzi_12("打开灯光");ssd1306.display();break;case 2:ssd1306.clear((0));ssd1306.set_cursor(0,0);ssd1306.draw_hanzi_12("关闭灯光");ssd1306.display();break;case 3:ssd1306.clear((0));ssd1306.draw_rectangle(44,22,84,42,(1));ssd1306.display();break;case 4:ssd1306.clear((0));ssd1306.draw_circle(64,32,20,(1));ssd1306.display();break;case 5:ssd1306.clear((0));ssd1306.fill_circle(86,44,10,(1));ssd1306.fill_circle(40,44,10,(1));ssd1306.fill_round_rect(76,29,96,59,10,(1));ssd1306.fill_round_rect(30,29,50,59,10,(1));ssd1306.display();servo_3.write(0);servo_2.write(0);servo_5.write(180);servo_6.write(180);break;case 6:ssd1306.clear((0));ssd1306.fill_round_rect(76,39,96,49,5,(1));ssd1306.fill_round_rect(30,39,50,49,5,(1));ssd1306.display();servo_3.write(90);servo_2.write(90);servo_5.write(90);servo_6.write(90);break;case 7:ssd1306.clear((0));ssd1306.draw_line(30,39,45,44,(1));ssd1306.draw_line(30,49,45,44,(1));ssd1306.draw_line(96,39,81,44,(1));ssd1306.draw_line(96,49,81,44,(1));ssd1306.display();servo_3.write(180);servo_2.write(180);servo_5.write(0);servo_6.write(0);break;case 8:vol_set(7);break;case 9:vol_set(3);break;case 10:vol_set(1);break;case 11:servo_2.write(0);servo_3.write(90);servo_5.write(180);servo_6.write(90);ssd1306.clear((0));ssd1306.fill_round_rect(76,29,96,59,10,(1));ssd1306.fill_round_rect(30,29,50,59,10,(1));ssd1306.display();break;case 12:servo_2.write(180);servo_3.write(180);servo_5.write(0);servo_6.write(0);ssd1306.clear((0));ssd1306.fill_round_rect(76,39,96,49,5,(1));ssd1306.fill_round_rect(30,39,50,49,5,(1));ssd1306.display();break;case 13:servo_2.write(90);servo_3.write(90);servo_5.write(90);servo_6.write(90);ssd1306.clear((0));ssd1306.draw_line(30,39,45,44,(1));ssd1306.draw_line(30,49,45,44,(1));ssd1306.draw_line(96,39,81,44,(1));ssd1306.draw_line(96,49,81,44,(1));ssd1306.display();break;case 14:servo_2.write(90);servo_3.write(0);servo_5.write(90);servo_6.write(180);ssd1306.clear((0));ssd1306.draw_line(30,39,50,49,(1));ssd1306.draw_line(30,49,50,39,(1));ssd1306.draw_line(76,39,96,49,(1));ssd1306.draw_line(76,49,96,39,(1));ssd1306.display();break;case 15:servo_2.write(90);servo_3.write(90);servo_5.write(90);servo_6.write(90);break;case 16:servo_2.write(90);servo_3.write(90);servo_5.write(90);servo_6.write(90);break;}}void hardware_init(){vol_set(3);set_wakeup_forever();taskENTER_CRITICAL();ssd1306.begin(0x3c);ssd1306.clear((0));ssd1306.set_cursor(0,0);ssd1306.draw_hanzi_12("欢迎使用旺旺");ssd1306.display();taskEXIT_CRITICAL();vTaskDelete(NULL);
}void setup()
{//{ID:0,keyword:"唤醒词",ASR:"旺旺",ASRTO:"我在"}//{ID:1,keyword:"命令词",ASR:"打开灯光",ASRTO:"好的,马上打开灯光"}//{ID:2,keyword:"命令词",ASR:"关闭灯光",ASRTO:"好的,马上关闭灯光"}//{ID:3,keyword:"命令词",ASR:"正方形",ASRTO:"马上执行"}//{ID:4,keyword:"命令词",ASR:"圆形",ASRTO:"马上执行"}//{ID:5,keyword:"命令词",ASR:"最大角度",ASRTO:"好的"}//{ID:6,keyword:"命令词",ASR:"中等角度",ASRTO:"好的"}//{ID:7,keyword:"命令词",ASR:"最小角度",ASRTO:"好的"}//{ID:8,keyword:"命令词",ASR:"大声一点",ASRTO:"好的"}//{ID:9,keyword:"命令词",ASR:"小声一点",ASRTO:"好的"}//{ID:10,keyword:"命令词",ASR:"最小音量",ASRTO:"好的"}//{ID:11,keyword:"命令词",ASR:"坐下",ASRTO:"我已经坐下了,主人"}//{ID:12,keyword:"命令词",ASR:"卧倒",ASRTO:"我已经 卧倒了,主人"}//{ID:13,keyword:"命令词",ASR:"起立",ASRTO:"我已经站立了,主人"}//{ID:14,keyword:"命令词",ASR:"趴下",ASRTO:"我已经趴下了,主人"}//{ID:15,keyword:"命令词",ASR:"打招呼",ASRTO:"你好"}//{ID:16,keyword:"命令词",ASR:"走路",ASRTO:"好的"}//{ID:17,keyword:"命令词",ASR:"生气",ASRTO:"好的"}setPinFun(3,SECOND_FUNCTION);setPinFun(2,SECOND_FUNCTION);setPinFun(5,SECOND_FUNCTION);setPinFun(6,SECOND_FUNCTION);servo_3.attach(3);servo_2.attach(2);servo_5.attach(5);servo_6.attach(6);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1538507.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Qt串口助手开发:基于多线程moveToThread方法串口通信工具

介绍了一个基于Qt框架开发的简易串口助手,满足粉丝的需求。该项目展示了如何利用Qt的moveToThread方法实现多线程串口通信,确保数据接收和发送功能的流畅性。项目中的核心类包括SerialWorker类和MainWindow类,分别负责串口操作和用户界面交互…

【数据可视化】Arcgis api4.x 热力图、时间动态热力图、timeSlider时间滑块控件应用 (超详细、附免费教学数据、收藏!)

1.效果 目录 1.效果 2.安装配置 3.热力图 4.TimeSlider滑块应用 4.1 时间滑块控件 4.2 添加控件 5.时间动态热力图 2.安装配置 这里不教大家如何在前端框架使用arcgis api。不过npm安装、css如何引入、教学数据存放与图层加载的教程,可以浏览我之前发的一篇文…

高效财税自动化软件的特点与优势

随着企业管理信息系统和互联网的不断发展,企业对财务管理提出了更高的要求。为有效助力企业规范财务工作,提高工作效率和准确性,实现信息化管理,越来越多的企业选择引入RPA等高效财税自动化软件。本文金智维将围绕RPA高效财税自动…

LeetCode 2332.坐上公交的最晚时间 (双指针 + 贪心)

给你一个下标从 0 开始长度为 n 的整数数组 buses ,其中 buses[i] 表示第 i 辆公交车的出发时间。同时给你一个下标从 0 开始长度为 m 的整数数组 passengers ,其中 passengers[j] 表示第 j 位乘客的到达时间。所有公交车出发的时间互不相同,…

基于SpringCloud的能源管理系统-能源管理平台源码-双碳平台源码-能管管理系统源码

一、介绍 基于SpringCloud的能管管理系统-能源管理平台源码-能源在线监测平台-双碳平台源码-SpringCloud全家桶-能管管理系统源码 二、软件架构 二、功能介绍 三、数字大屏展示 四、数据采集原理 五、软件截图

Mycat搭建读写分离

启动Mycat 进入 /mycat/conf/datasources目录下,修改prototypeDs.datasource.json文件 去mycat/bin目录用启动mycat ./mycat start (关闭mycat ./mycat stop)连接mycat 默认端口8066 用户名root 密码123456 注意:这里ip设为null表示任何ip都可以访问…

【设计模式-组合】

**Composite Pattern(组合模式)**是一种结构型设计模式,旨在将对象组合成树形结构,以表示“部分-整体”的层次结构。这种模式允许客户端以统一的方式处理单个对象和对象集合,从而简化了树形结构的处理。 核心思想 组…

LLM应用实战: 文档问答系统Kotaemon-1. 简介及部署实践

1.背景 本qiang~这两周关注到一个很火的开源文档问答系统Kotaemon,从8月28日至今短短两周时间,github星标迅猛增长10K,因此计划深挖一下其中的原理及奥秘。 本篇主要是Kotaemon的简介信息,涉及到主要特点,与传统文档…

MindShare PCIE 3.0 笔记-第一二章

MindShare 官网,地址如下: MindShare Chapter 1:PCIE 背景介绍 - PCI 总线模型 1. 以 PCI 总线作为外设总线的 SOC 芯片架构 下图展示了一个以 PCI 总线作为外设总线的 SOC 芯片架构(PCI 总线类似 AXI 下的 AHB?): 由上图可知…

虚拟机与物理机的文件共享

之前往虚拟机里传文件都是直接拖拽或者借助工具上传,都不太方便,倘若物理机的文件直接能在虚拟机里读取使用,那多好啊~ 1 虚拟机设置 注意文件夹名称不要中文/空格 2 验证Kali下分享文件夹功能是否启用 vmware-hgfsclient 3 创建挂载目录…

数据库基础知识---------------------------(2)

MYSQL的存储过程 就是数据库 SQL 语言层面的代码封装与重用 语法格式 delimiter 自定义结束符号 create procedure 存储名({in,out,inout} 参数名,数据类型...) begin sql 语句 end 自定义结束符 delimiter; 变量定义 局部变量 用户自定义 仅在begin / end 块中有效 当将查询…

apach httpd多后缀解析漏洞

漏洞详情: httpd支持一个文件拥有多个后缀,并为不同后缀执行不同的指令。 那么,在有多个后缀的情况下,只要一个文件含有.php后缀的文件即将被识别成PHP文件,没必要是最后一个后缀。 利用这个特性,可以绕过…

Linux硬连接、软连接和复制的区别

‌硬连接、软连接和复制在Linux系统中的主要区别体现在以下三点: 文件链接的方式文件独立性文件系统的操作上。‌ 一、硬连接 1. 硬连接是通过ln命令创建的,它为文件创建别名,与源文件共享同一inode号码,因此硬连接和源文件实际…

Mint Expedition Season 3 拉开帷幕:登顶高峰的时刻到了

自 7 月 15 日 Mint Expedition 启动以来,Mint,一条专注于 NFT 行业的以太坊 Layer 2,日常交易量和交易额都出现了爆发式增长。这一成功离不开 Mint 社区的合作,包括 Minters、Web3 去中心化应用程序的开发者,以及大量…

02 ETH

以太坊与比特币有什么不同? 以太坊立足比特币创新之上,于 2015 年启动,两者之间有一些显著不同。 比特币就仅仅是比特币;以太坊包括以太币,以太币才是和比特币对等的存在。以太坊是可编程的,所以你可以在…

示例:WPF中Grid显示网格线的几种方式

一、目的:介绍一下WPF中Grid显示网格线的几种方式 二、几种方式 1、重写OnRender绘制网格线(推荐) 效果如下: 实现方式如下: public class LineGrid : Grid{protected override void OnRender(DrawingContext dc){Pen…

SQL 多表联查

目录 1. 内联接(INNER JOIN) 2. 左外联接(LEFT JOIN) 3. 右外联接(RIGHT JOIN) 4. 全外联接(FULL JOIN) 5. 交叉联接(CROSS JOIN) 6. 自联接&#xff0…

MATLAB系列07:稀疏矩阵、单元阵列和结构

MATLAB系列07:稀疏矩阵、单元阵列和结构 7. 稀疏矩阵、单元阵列和结构7.1 稀疏矩阵7.1.1 sparse数据类型7.1.1.1 产生稀疏矩阵7.1.1.2 稀疏矩阵的运算 7.2 单元阵列(cell array)7.2.1 创建单元阵列7.2.1.1 用赋值语句创建单元阵列7.2.1.2 用cell函数创建单元阵列 7.…

Day02Day03

1. 为什么拦截器不会去拦截/admin/login上,是因为在SpringMvc中清除了这种可能。 2.使用自己定义注解,实现AOP(insert ,update) 3.使用update最好使用动态语句,可以使用多次 4.使用阿里云的OSS存储。用common类 5.在写…

【BoF】《Bag of Freebies for Training Object Detection Neural Networks》

arXiv-2019 https://github.com/dmlc/gluon-cv 文章目录 1 Background and Motivation2 Related Work3 Advantages / Contributions4 Method4.1 Visually Coherent Image Mixup for Object Detection4.2 Classification Head Label Smoothing4.3 Data Preprocessing4.4 Traini…