发布日期: 2024/04/23 06:18
用一块板两个模块三根线就可以爆改手机,实现语音控制刷抖音,上下滑动视频、点赞那都是基础操作,关键是还可以一键睡觉,懒人福音!
所谓一块板两个模块三根线,一块开发板就是负责接收和控制的香橙派H616开发板,两个模块分别是负责发送的语音识别模块SU-03T和一个mic,所以除了电源外,只需要将语音识别模块的TX(B7)接到香橙派的RX就可以,算上电源共三根线:
项目需求只是简单的通过语音指令来控制安卓手机刷抖音,以实现视频切换和点赞等功能:
项目中所需要的是一个非特定语音识别,也就是不识别特定人类的声音的模块。所以SU-03T这个模块的操作相较于其他语音识别模块更简单,不需要编程或二次开发,只需要通过厂家给的网站配置后即可使用。
对于语音识别模块,串口的RX和TX分别对应B6和B7,并设置相应的波特率:
参数的设置就是行为的名字,大写字母 ,16进制ASCII码,已空格分开
在完成以上步骤,并下载SDK并烧写进入语音识别模块后,可以打开串口助手来测试一下,分别说出对应的指令,看看语音识别模块是否会向串口发送对应的字符。
分别说出了四条指令,可见串口输出正确!
语音识别模块设置完成后,就可以将语音识别模块接到香橙派并进行Linux部分的代码编写,连接方式如下图所示:
新创建一个“douyin”文件夹,将语音刷抖音项目的代码放在这里面:
然后将一些代码拷贝进来方便修改:
重新编译一下,并说出4条控制语句:
可见,语音识别模块成功识别了指令,香橙派成功的接收了语音识别模块通过串口打印的字符!
现在,就需要修改serial_douyin.c中接收的代码,添加数据处理的部分,先简单写一个数据处理的框架
void *write_serial(void *arg)
{
char readbuf[32] = {'\0'};
while(1){
while(serialDataAvail (*((int *)arg))){
serialGetstring (*((int *)arg),readbuf) ;
if(strcmp(readbuf,"NEXT") == 0 ){
printf("收到下一条视频指令\n");
}else if(strcmp(readbuf,"PRE") == 0){
printf("收到上一条视频指令\n");
}else if(strcmp(readbuf,"ZAN") == 0){
printf("收到点赞指令\n");
}else if(strcmp(readbuf,"GUAN") == 0){
printf("收到关闭指令\n");
}else{
printf("未知指令\n");
}
memset(readbuf,'\0',32);
}
}
pthread_exit(NULL);
}
重新编译一下,并说出4条控制语句:
可见,函数框架正确,接下来只需要将printf替换成真正的操作手机的代码就可以了。
将我破旧的小米5C再次拿出哈哈哈,然后通过 TYPE-C -- USB 连接到香橙派:
香橙派输入dmesg指令查看手机接入情况,可见已经成功识别
由于安卓手机的底层也是用Linux系统来操作的,所以可以通过香橙派来直接进入控制手机shell的界面,但需要先安装adb工具,adb是做安卓开发中常用的工具
sudo apt-get insall adb
报错的本质原因是香橙派系统还不支持USB设备的热拔插和UDEV的机制。
、