ESP32-S3+JQ8900S语音播报模块

简介:

核心板还是随便在淘宝买的一款ESP32-S3-DevKitC-1,因为使用到了一些传感器,获取了一些数据,所以也需要一个语音模块帮助我播报。我选择的是JQ8900S。淘宝随便搜。我遇到的困难就是,根本不知道怎么让ESP32-S3去控制模块播报,今天终于突破了。TvT,真的有点子心酸。

测试思路:

模块如图所示:

1.首先是测试语音:

看到模块的USB口了不,注意不是Type-C的,是以前比较传统的梯形。

USB 数据线(注意需要可以传输数据)连接芯片,插上电脑,电脑会自动识别,如下图所示:

然后双击新盘,把要放置的声音拷贝过去即可。声音的话,可以找一些语音合成软件,这边不提供哈。

2.利用专门串口调试软件调试:

模块和usb转ttl连接在一起,电脑发送数据,测试模块是否可以正常使用。这边我没有接喇叭,喇叭不分正负,接在SPK-,SPK+即可。接线如图所示:

然后可以发送一些数据:

举个例子:

如果是需要播放,就用串口助手发送 AA 01 00 AB,如果有播放,那一切正常。

3.利用ESP32-S3,配合USB转TTL测试:

此处两条数据线都插在电脑上,尝试控制开发板用串口发送数据,然后用另一个com口接收数据。看是否有显示。如果有,那就把手动发送数据改成开发板自主发送数据,那就大功告成了。

代码部分:

1.引入库,因为我用的是原始的TX和RX,所以不需要别的库,如果你是硬件串口,需要额外添加:

#incldue <HardwareSerial.h>

如果是软件串口,需要额外下载zip库:网页搜索SoftwareSerialESP32 即可找到网友链接。

添加好库之后:

#incldue <SoftwareSerial.h>

 现在我用的是原始TX,RX,所以我只需要:

#include <Arduino.h>

2.初始化:


void setup() {
 Serial.begin(9600);
 delay(100);
}

其他串口,自行找初始化方法哦。

3.循环体:

void loop() {
  SetVolume_10();
  delay(2000);
  Start();
  delay(2000);
  Next();
  delay(2000);
}

这里的函数是我自己写的:

.Write()就是串口发送数据。

void SetVolume_10(void){
  Serial.write(0xAA);
  Serial.write(0x13);
  Serial.write(0x01);
  Serial.write(0x0A);
  Serial.write(0xC8);
} 
void Start(void){
  Serial.write(0xAA);
  Serial.write(0x02);
  Serial.write(0x00);
  Serial.write(0xAC);
}
void Next(void){
  Serial.write(0xAA);
  Serial.write(0x06);
  Serial.write(0x00);
  Serial.write(0xB0);
}

全部代码:

#include <Arduino.h>

void setup() {
 Serial.begin(9600);
 delay(100);
}

void loop() {
  SetVolume_10();
  delay(2000);
  Start();
  delay(2000);
  Next();
  delay(2000);
}

//设置音量为10
void SetVolume_10(void){
  Serial.write(0xAA);
  Serial.write(0x13);
  Serial.write(0x01);
  Serial.write(0x0A);
  Serial.write(0xC8);
} 

//播放
void Start(void){
  Serial.write(0xAA);
  Serial.write(0x02);
  Serial.write(0x00);
  Serial.write(0xAC);
}

//下一首
void Next(void){
  Serial.write(0xAA);
  Serial.write(0x06);
  Serial.write(0x00);
  Serial.write(0xB0);
}

如果还需要什么功能,可以自己找模块说明书,找需要发送的数据。

总结:

测试了那么多个模块,我一直被一个问题困扰,那就是电平转换问题

我所用的哪些模块,全都是5V供电,但是我使用5V是无论如何都没有用的。

这里的1,6.大概就是问题的所在。我用的ESP32-S3,IO口的电平都是3.3,虽然我搜索的是可以兼容5V但是还是不行。所以我把模块供电都改为3.3V,最后就成功了。

希望以后使用模块,可以注意这些问题,希望也可以解决大家的一些问题。

其实还有别的博主有发布关于JQ8900S模块的使用代码,但是我个人感觉都比较繁琐,就是他们大部分都是模拟了串口发送的过程,什么时候给高电平什么时候给低电平,但是我直接用的Write()函数,个人感觉方便,还易懂。

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值