基于OrangePi的语音控制刷抖音项目

这篇具有很好参考价值的文章主要介绍了基于OrangePi的语音控制刷抖音项目。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前期准备:

基于OrangePi的语音控制刷抖音项目,linux,adb,智能手机,物联网

Orange Pi Zero 2、AI智能语音识别模块、USB转TTL串口模块、USB-typeCx2、杜邦线若干

                  基于OrangePi的语音控制刷抖音项目,linux,adb,智能手机,物联网基于OrangePi的语音控制刷抖音项目,linux,adb,智能手机,物联网基于OrangePi的语音控制刷抖音项目,linux,adb,智能手机,物联网

1、SU03T语音模块的配置

使用USB串口转TTL模块,将配置固件烧写到SU03T语音模块中

步骤:1、进入智能公元/AI产品零代码平台 (smartpi.cn)官网进行语音模块的配置

           2、尤其是对这两个管脚的配置

基于OrangePi的语音控制刷抖音项目,linux,adb,智能手机,物联网

        3 、设置好对应的指令

基于OrangePi的语音控制刷抖音项目,linux,adb,智能手机,物联网

        4、生成对应的SDK,然后下载固件(此过程需要等到30分钟左右)

基于OrangePi的语音控制刷抖音项目,linux,adb,智能手机,物联网 

        5、将串口与语音模块进行接入,将配置好的SDK固件烧入语音模块里(注意接线)

 基于OrangePi的语音控制刷抖音项目,linux,adb,智能手机,物联网

        6、用烧录工具进行烧录

基于OrangePi的语音控制刷抖音项目,linux,adb,智能手机,物联网

        7、可以打开串口助手工具查看是否烧录成功

基于OrangePi的语音控制刷抖音项目,linux,adb,智能手机,物联网

2、编程实现语音指令的识别

此处编程涉及到wiringPi库的一些使用

将语音模块插入开发板并编程实现基础逻辑代码,添加串口读取一个字符的接口 myserialGetchar()

myserialGetchar()函数的使用,这里对指令进行测试


#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <stdarg.h>
#include <string.h>
#include <termios.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <pthread.h>
#include "uartTool.h"
int fd;

char myserialGetchar (const int fd)
{
	char x ;

	if (read (fd, &x, 1) != 1)
		return -1 ;

	return x ;
}


void* readSerial()
{
	char cmd;
	while(1){
		cmd = myserialGetchar(fd);
		//printf("GET->0x%c\n",cmd);
		switch (cmd){
			case 'N':
				printf("next\n");				
				break;
			case 'P':
				printf("pre\n");			
				break;
			case 'Z':
				printf("dianzan\n");		
				break;
			case 'Q':
				printf("guanbi\n");
				break;
		}

	}
}
/*
   void* sendSerial()
   {
   char buffer[32];
   while(1){
   memset(buffer,'\0',sizeof(buffer));
   scanf("%s",buffer);
   serialSendString(fd, buffer);
   }
   }

*/

int main(int argc, char **argv)
{
	char deviceName[32] = {'\0'};
	pthread_t readt;
	//	pthread_t sendt;
	if(argc < 2){
		printf("uage:%s /dev/ttyS?\n",argv[0]);
		return -1;
	}
	strcpy(deviceName, argv[1]);
	if( (fd = myserialOpen(deviceName, 115200)) == -1){
		printf("open %s error\n",deviceName);
		return -1;
	}
	pthread_create(&readt, NULL, readSerial,NULL);
	//	pthread_create(&sendt, NULL, sendSerial,NULL);
	while(1){sleep(10);}
	return 0;
}

基于OrangePi的语音控制刷抖音项目,linux,adb,智能手机,物联网

此处有个小插曲(热拔插机制)

手机接入Linux热拔插相关

a. 把手机接入开发板

b. 安装adb工具,在终端输入adb安装指令:
 sudo apt-get install adb

c. dmeg能查看到手机接入的信息,但是输入adb devices会出现提醒
 dinsufficient permissions for device: user in plugdev group; are your udev rules wrong?

d. 配置文件,以支持USB设备的热拔插,支持UDEV的机制 
在/etc/udev/rules.d 文件夹下创建规则文件 cd /etc/udev/rules.d/ sudo vim 51-android.rules
在文件中添加内容 
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0666"

e. 在手机开发者选项中,打开USB调试,重新拔插手机

f. 手机弹出调试提醒,点确认手机调试模式

这里的热拔插就相当于给手机添加一个管理的文件,正是有了这个文件,手机才能够于Linux系统进行交互

3、adb指令的控制

用shell指令来操作手机屏幕,模拟手动滑屏幕

向下滑动540是水平的,1300是竖直方向,下是500,下滑的操作时间为100ms
adb shell input swipe 540 1300 540 500 100

向上滑动
adb shell input swipe 540 500 540 1300 100 

点赞(点击屏幕两次,用到了循环的脚本)
adb shell "seq 3 | while read i;do input tap 350 1050 & input tap 350 1050 &
sleep 0.01;done;" 

锁屏
adb shell input keyevent 26

4.代码功能的整合

uartTool.h


int myserialOpen (const char *device, const int baud);

void serialSendString (const int fd, const char *s);
							
char myserialGetchar (const int fd);

int serialGetString (const int fd, char *buffer);


uartTool.c

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <stdarg.h>
#include <string.h>
#include <termios.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>

#include "wiringSerial.h"

int myserialOpen (const char *device, const int baud)
{
	struct termios options ;
	speed_t myBaud ;
	int	 status, fd ;
	switch (baud)
	{
		case	9600:	myBaud =	B9600 ; break ;
		case  115200:	myBaud =  B115200 ; break ;

	}

	if ((fd = open (device, O_RDWR | O_NOCTTY | O_NDELAY | O_NONBLOCK)) == -1)
		return -1 ;
	fcntl (fd, F_SETFL, O_RDWR) ;

	// Get and modify current options:

	tcgetattr (fd, &options) ;

	cfmakeraw   (&options) ;
	cfsetispeed (&options, myBaud) ;
	cfsetospeed (&options, myBaud) ;

	options.c_cflag |= (CLOCAL | CREAD) ;
	options.c_cflag &= ~PARENB ;
	options.c_cflag &= ~CSTOPB ;
	options.c_cflag &= ~CSIZE ;
	options.c_cflag |= CS8 ;
	options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG) ;
	options.c_oflag &= ~OPOST ;

	options.c_cc [VMIN]  =   0 ;
	options.c_cc [VTIME] = 100 ;	// Ten seconds (100 deciseconds)

	tcsetattr (fd, TCSANOW, &options) ;

	ioctl (fd, TIOCMGET, &status);

	status |= TIOCM_DTR ;
	status |= TIOCM_RTS ;

	ioctl (fd, TIOCMSET, &status);

	usleep (10000) ;	// 10mS

	return fd ;
}

void serialSendString (const int fd, const char *s)
{
	int ret;
	ret = write (fd, s, strlen (s));
	if (ret < 0)
		printf("Serial Puts Error\n");
}

int serialGetString (const int fd, char *buffer)
{
	int n_read;
	n_read = read(fd,buffer,32);
	return n_read;
}


uartTest.c 

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <stdarg.h>
#include <string.h>
#include <termios.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <pthread.h>
#include "uartTool.h"
int fd;

char myserialGetchar (const int fd)
{
	char x ;

	if (read (fd, &x, 1) != 1)
		return -1 ;

	return x ;
}


void* readSerial()
{
	char cmd;
	while(1){
		cmd = myserialGetchar(fd);
		//printf("GET->0x%c\n",cmd);
		switch (cmd){
			case 'N':
				printf("next\n");
				system("adb shell input swipe 540 1300 540 500 100");
				break;
			case 'P':
				printf("pre\n");
				system("adb shell input swipe 540 500 540 1300 100");

				break;
			case 'Z':
				printf("dianzan\n");
				system("adb shell \"seq 3 | while read i;do input tap 350 1050 &
						input tap 350 1050 & sleep 0.01;done;\"");
				break;
			case 'Q':
				printf("guanbi\n");
				system("adb shell input keyevent 26");

				break;
		}

	}
}
/*
   void* sendSerial()
   {
   char buffer[32];
   while(1){
   memset(buffer,'\0',sizeof(buffer));
   scanf("%s",buffer);
   serialSendString(fd, buffer);
   }
   }

*/

int main(int argc, char **argv)
{
	char deviceName[32] = {'\0'};
	pthread_t readt;
	//	pthread_t sendt;
	if(argc < 2){
		printf("uage:%s /dev/ttyS?\n",argv[0]);
		return -1;
	}
	strcpy(deviceName, argv[1]);
	if( (fd = myserialOpen(deviceName, 115200)) == -1){
		printf("open %s error\n",deviceName);
		return -1;
	}
	pthread_create(&readt, NULL, readSerial,NULL);
	//	pthread_create(&sendt, NULL, sendSerial,NULL);
	while(1){sleep(10);}
	return 0;
}

关键语句

基于OrangePi的语音控制刷抖音项目,linux,adb,智能手机,物联网

运行结果

基于OrangePi的语音控制刷抖音项目,linux,adb,智能手机,物联网文章来源地址https://www.toymoban.com/news/detail-838320.html

到了这里,关于基于OrangePi的语音控制刷抖音项目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Orangepi Zero2 全志H616】驱动舵机控制 / Linux定时器(signal、setitimer)

    一、SG90舵机开发 舵机基本介绍 二、Linux定时器 signal 函数 setitimer 函数原型 signal、setitimer函数API调用 三、舵机 软件PWM实现 如下图所示,最便宜的舵机sg90,常用三根或者四根接线,黄色为PWM信号控制用处: 垃圾桶项目开盖用、智能小车的全比例转向、摄像头云台、机械臂等

    2024年02月05日
    浏览(52)
  • 嵌入式linux物联网毕业设计项目智能语音识别基于stm32mp157开发板

    stm32mp157开发板FS-MP1A是华清远见自主研发的一款高品质、高性价比的Linux+单片机二合一的嵌入式教学级开发板。开发板搭载ST的STM32MP157高性能微处理器,集成2个Cortex-A7核和1个Cortex-M4 核,A7核上可以跑Linux操作系统,M4核上可以跑FreeRTOS、RT-Thread等实时操作系统。开发板搭配仿真

    2024年02月02日
    浏览(82)
  • 【Orangepi Zero2 全志H616】驱动串口实现Tik Tok—VUI(语音交互)

    一、编程实现语音和开发板通信 wiringpi库源码 demo.c 二、基于前面串口的代码修改实现 uartTool.h uartTool.c uartTest.c 三、ADB adb控制指令 四、手机接入Linux热拔插相关 a. 把手机接入开发板 b. 安装adb工具,在终端输入adb安装指令: sudo apt-get install adb c. dmeg能查看到手机接入的信息,

    2024年02月21日
    浏览(41)
  • AI智能语音识别模块(二)——基于Arduino的语音控制MP3播放器

    在前面一篇文章里我们对AI智能语音识别模块进行了介绍,并对离线语音模组下载固件的过程进行了一个简单描述,不知道大家还记不记得,这篇文章也是鸽了好久,,本文将用这个语音控制模块结合前面介绍的DFPlayer Mini MP3模块来做一个有趣的应用,在上一期文章中,我们只

    2024年02月03日
    浏览(58)
  • 基于RAM树莓派实现智能家居:语音识别控制,Socket网络控制,火灾报警检测,实时监控

    目录 一   项目说明 ①   设计框架 ②   功能说明 ③   硬件说明 ④   软件说明 二   项目代码 1 mainPro.c 主函数 2 InputCommand.h 控制设备头文件 3 contrlDevices.h 外接设备头文件 4 bathroomLight.c 泳池灯 5 livingroomLight.c 卧室灯 6 restaurantLight.c 餐厅灯 7 upstairLight.c 二楼灯 8 fire.c 火焰

    2024年02月02日
    浏览(59)
  • 基于ARM树莓派实现智能家居:语音识别控制,Socket网络控制,火灾报警检测,实时监控

    目录 一   项目说明 ①   设计框架 ②   功能说明 ③   硬件说明 ④   软件说明 二   项目代码 1 mainPro.c 主函数 2 InputCommand.h 控制设备头文件 3 contrlDevices.h 外接设备头文件 4 bathroomLight.c 泳池灯 5 livingroomLight.c 卧室灯 6 restaurantLight.c 餐厅灯 7 upstairLight.c 二楼灯 8 fire.c 火焰

    2024年02月03日
    浏览(65)
  • 毕业/课程设计——基于STM32的智能灯光控制系统(物联网、智能家居、手机APP控制、语音控制)

            文章 首先介绍本系统所包含的功能 ,主要包含六方面功能, 之后逐步分享开发过程 ,其流程如下:点亮灯带(三极管) → 调节灯光亮度(PWM)→为系统添加远程控制功能→为系统添加语音识别功能→添加超声波姿态监测功能→添加OLED显示功能         特别

    2024年02月03日
    浏览(65)
  • 基于Orangepi 3 lts 的云台相机

    利用orangepi 3 lts 和arduino nano 制作了一个云台相机,可用于室内监控。 硬件: orangepi 3   ,arduino nano ,usb相机,180度舵机两个 WeChat_20230806213004 软件: 整体采用mqtt进行消息的中转。 相机采用python 利用opencv进行取图。 云台利用c语言对舵机机进行角度控制,并使用串口与orangep

    2024年02月13日
    浏览(38)
  • 基于ASR-PRO离线语音芯片制作的控制小黑盒

    一、功能介绍: 1、支持语音控制,通过唤醒词来唤醒小黑盒,说出命令后实现相应功能。 2、还可以通过按键控制。 3、对应功能都配有指示灯和电源指示灯。 4、配有220V的电压电流显示。 二、输出方式 1、一共3组继电器输出,电源选择可以是220V或者直流电。 2、一组一个继

    2023年04月08日
    浏览(45)
  • 毕业设计——基于ESP32的智能家居系统(语音识别、APP控制)

    多种控制方式 ① 语音控制 ②APP控制 ③本地按键控制 ESP32嵌入式单片机实战项目演示  这一个基于esp32c3的智能家居控制系统,能实现语音、app和按键控制。有手动和自动两种模式,自动模式下会根据当前的光照强度控制灯的亮灭,当温湿度达到设定值之后报警器会响。而且

    2024年04月25日
    浏览(113)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包