Arduino与LU-ASR01语音识别模块的双向串口通信实现

这篇具有很好参考价值的文章主要介绍了Arduino与LU-ASR01语音识别模块的双向串口通信实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

    之前我写了一篇《Arduino的智能语言输入实现》,讨论了Arduino与LU-ASR01之间通过串口通信实现Arduino的中文语音输入,不过那个通信是不完整的,因为LU-ASR01的串口只有一个发送端口TX,而没有接收端口RX。其实在真正的应用中,LU-ASR01通常也需要接收上位机的数据,例如为确保上位机已经收到LU-ASR01发送的数据,上位机需要返回一个已收到数据的应答,又例如上位机想让LU-ASR01发出某条语音消息或让LU-ASR01进行某个操作,都需要由上位机发送数据,然后由LU-ASR01接收数据后,进行相应的处理。

    为解决LU-ASR01的串口没有接收端口RX这个问题,我们可以利用LU-ASR01的I/O端口(前文介绍过LU-ASR01共有8个I/O端口),取其中的2个端口挪作串口通信用,然后采用软串口通信的方式来实现Arduino与LU-ASR01之间的双向串口通信。

    因为在网上查找不到一点LU-ASR01模块的软串口通信资料,只能通过不断地测试,因为手头连最基本检测工具示波器等都没有,只有一台电脑、一块Arduino板和一块LU-ASR01板,为检测软串口有没有发送数据,我甚至只能连接LED到串口,查看在串口发送数据时LED有没有闪烁。经历了数十次的失败,几乎已经绝望地想放弃了LU-ASR01的软串口通信实现,哈哈,最后当然成功啦,不然我就写不了这篇文章了。

    闲话不说了,本次实验就是通过由LU-ASR01发送命令,Arduino收到该命令后,再返回发送该命令数据(即同样的数值)到LU-ASR01作为应答,最后LU-ASR01收到了Arduino发回的该命令数据,进行比较后(即判别发送的数据与接收到的数据是否相等),确认该命令发送成功了。

   本次实验中,Arduino UNO仍然采用硬件串口通信,使用TX和RX端口,LU-ASR01则使用IO6端口作为发送数据的软TX,IO7端口作为接收数据的软RX。由Arduino提供5V电源给LU-ASR01(下图中的红黑2线),Arduino的TX连接到LU-ASR01的IO7端口(软RX),Arduino的RX连接到LU-ASR01的IO6端口(软TX),连接图如下:

Arduino与LU-ASR01语音识别模块的双向串口通信实现

LU-ASR01仍然采用“天问block”的图形化编程平台,下面是在“天问block”上的完整程序:

Arduino与LU-ASR01语音识别模块的双向串口通信实现

Arduino与LU-ASR01语音识别模块的双向串口通信实现 

 

然后我们将下面的程序下载到Arduino UNO板,完整程序如下:

/*

   Arduino与ASR01语音识别模块的串口通讯实验

   为确保ASR01发送的数据能够接收到,采用应答方式,Arduino每接收到一个可识别的

   命令后,都会将这个命令会送给ASR01

*/

// 定义引脚

const int LedPin =  13;      // led连接的引脚,作为LED灯的正极

char Txbyte;  //串口发送的字符数据

char Rxbyte;  //串口读取的字符数据

//初始化

void setup() {

  Serial.begin(9600); //设置串口波特率9600

  pinMode(LedPin, OUTPUT);  //设置LedPin    

}

//主程序

void loop() {

    if(Serial.available() > 0){ //当串口缓冲区有数据

      Rxbyte=char(Serial.read());

        if(Rxbyte==0x21) {    //当Rxbyte为0x21则LedPin置高电平,即开灯

          Serial.write(Rxbyte);

          digitalWrite(LedPin, HIGH);

        }

        if(Rxbyte==0x22) {    //当Rxbyte为0x22则LedPin置低电平,即关灯

          Serial.write(Rxbyte);

          digitalWrite(LedPin, LOW);

        }

        if(Rxbyte==0x20){     //当Rxbyte为0x20则Led灯闪3下

          Serial.write(Rxbyte);

          for(int i=0;i<3;i++){   //Led灯闪3下

            digitalWrite(LedPin, HIGH);

            delay(100);

            digitalWrite(LedPin, LOW);

            delay(100);

          }

        }

        delay(2);

      }

}

    两边的程序下载完后,连接好4条联线,LU-ASR01首先会播报“我们正在进行实验,请呼唤我“不赦先生”唤醒我。我暂时休息了,有事请呼唤我:不赦先生”,然后我们呼叫“不赦先生”,则LU-ASR01回答“我在”后就通过软串口发送了一个字节的命令:0x20,Arduino收到0x20后,再次发送0x20到LU-ASR01;当LU-ASR01收到数据后,与之前发送的数据进行比较,如果相等,则播报:“阿杜已经收到命令了”,否则等待1秒钟,没有收到正确的数据0x20,则播报:“超时了,阿杜没有收到命令,请重新发”(这里说明下,为简化程序,程序中没有再次重新发送该数据)。接着可以测试“打开灯光”和“关闭灯光”。文章来源地址https://www.toymoban.com/news/detail-446770.html

到了这里,关于Arduino与LU-ASR01语音识别模块的双向串口通信实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • STM32使用ASR01语音播报模块

    先下载天问block软件 点击这里下载天问block  选上设备:  添加扩展:   自己再根据鹿小班模块进行操作进行相关操作,先接上usb数据线 记得先生成模型再去编译下载    发送给单片机通信时只需要vcc gnd 还有tx接上单片机rx,如果想用stm32控制语音模块,可以接线,让asr01读

    2024年02月16日
    浏览(58)
  • 通过串口中断的方式进行ASR-01S模块与STM32通信(问题与解决)

    最近在做一个智能家居的项目,需要实现语音控制的功能,于是我选用了ASR-01S模块与STM32通信,这个模块最大的好处在于有配套的编程软件和语音库,不用自己训练且编程简单(少儿编程的程度)。ASR-01S的代码架构在这不多说,总之在收到语音后它会通过串口发送一串命令给

    2024年04月22日
    浏览(35)
  • MP3 Module 语音播放模块(Arduino和串口控制)

    Emakefun MP3语音模块内置8 MB存储空间,无需外接SD卡,若一个音效以秒计算,8M的内存可以存储两百多个音效供您选用。存储方式和使用U盘一样简单,可随时更新模块内的音效。使用上非常的简单,使用PH2.0接口,减少了接线的烦恼;支持MP3、WAV音频格式,可做指定播放,循环

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

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

    2024年02月03日
    浏览(39)
  • ASR项目实战-语音识别

    本文深入探讨语音识别处理环节。 本阶段的重点特性为语音识别、VAD、热词、文本的时间偏移、讲话人的识别等。 业界流派众多,比如Kaldi、端到端等,具体选择哪一种,需要综合考虑人员能力、训练数据量和质量、硬件设施、交付周期等,作出相对合理的交付规划。 基于

    2024年02月04日
    浏览(34)
  • 语音识别 - ASR whisper

    目录 1. 简单介绍 2. 代码调用 Introducing Whisper https://openai.com/blog/whisper/ OpenAI 的开源自动语音识别神经网络 whisper 安装 Python 调用

    2024年02月12日
    浏览(29)
  • ASR 语音识别接口封装和分析

    这个文档主要是介绍一下我自己封装了 6 家厂商的 短语音识别 和 实时流语音识别 接口的一个包,以及对这些接口的一个对比。分别是,阿里,快商通,百度,腾讯,科大,字节。 zxmfke/asrfactory (github.com) 之前刚好在测试各家的语音识别相关功能,但是每家的返回值都不同,

    2024年02月13日
    浏览(34)
  • 开源(离线)中文语音识别ASR(语音转文本)工具整理

    开源(离线)中文语音识别ASR(语音转文本)工具整理 Open AI在2022年9月21日开源了号称其英文语音辨识能力已达到人类水准的Whisper神经网络,且它亦支持其它98种语言的自动语音辨识。 Whisper系统所提供的自动语音辨识(Automatic Speech Recognition,ASR)模型是被训练来运行语音辨识与翻

    2024年02月13日
    浏览(37)
  • Python使用PaddleSpeech实现语音识别(ASR)、语音合成(TTS)

    目录 安装 语音识别 补全标点 语音合成 参考 PaddleSpeech是百度飞桨开发的语音工具 注意,PaddleSpeech不支持过高版本的Python,因为在高版本的Python中,飞桨不再提供paddle.fluid API。这里面我用的是Python3.7 需要通过3个pip命令安装PaddleSpeech: 在使用的时候,urllib3库可能会报错,因

    2024年04月25日
    浏览(25)
  • Python使用whisper实现语音识别(ASR)

    目录 Whisper的安装 Whisper的基本使用 识别结果转简体中文 断句 Whisper是OpenAI的一个强大的语音识别库,支持离线的语音识别。在使用之前,需要先安装它的库: 使用whisper,还需安装setuptools-rust: 但是,whisper安装时,自带的pytorch可能有些bug,因此需要卸载重装: 卸载: 重装

    2024年03月20日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包