Arduino Uno接JQ8900-16p语音播报模块
前言
记录一个比较好用的语音播报模块JQ8900,这个模块成本低廉(十几块就能买到),使用方便。
此外,这个模块还有以下优点:
①搭载配套的软件可以支持文字转语音,生成mp3格式的文件,可以像U盘一样拷贝到模块中,并在代码中选择播放某个mp3文件;
②有多种人声可选,可调音量、音调和音速。
一、所需材料及接线
所需主要材料:
1.Arduino Uno开发板一块;
2.JQ8900-16p语音播报模块(含喇叭)一个;
3.杜邦线若干
语音播报模块如下图:
将mp3文件拷贝进入模块的内存接线:找到一根合适的数据线,一端接JQ8900模块,另一端连接电脑的USB口,将文件直接复制进去即可。
Arduino控制JQ8900模块接线:
Arduino Uno | JQ8900-16p |
---|---|
3 | VPP |
GND | GND |
5V | DC-5V |
JQ8900-16p | 喇叭 |
---|---|
SPK- | 正极 |
SPK+ | 负极 |
(白色的是喇叭)
二、代码
通过串口控制选择对应的mp3文件播放:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99/* 整合系统功能: 1.语音提示-串口选择mp3播放 */ char val="";//接收串口发送过来的值 int pin = 3;//接vpp引脚 void setup() { pinMode(pin,OUTPUT); Serial.begin(9600);//设置波特率 Serial.println("请输入你要发送的数据:");//提示字符 } void loop() { while(Serial.available()>0){//检验在串口缓存区中是否有数据,如果有则返回1,没有就是0. val = char(Serial.read());//Serial.read()一位一位的从串口缓存区里读数据 delay(10); if(val=='S') Sys_start(); if(val=='T') Say_thanks(); } } //系统已启动-语音提示 void Sys_start() { //设置音量为20 SendData(0x0a); //清空数字 SendData(0x02); //音量20 SendData(0x00); SendData(0x0c); //设置音量 delay(2000); //延时 //选取曲目1播放 SendData(0x0a);//清空数字 SendData(0x01);//曲目数字,对应00001.mp3 SendData(0x0b);//选曲播放 delay(2000); //开始播放 //SendData(0x11);//开始播放 //delay(2000); } //谢谢使用-语音提示 void Say_thanks() { //设置音量为20 SendData(0x0a); //清空数字 SendData(0x02); //音量20 SendData(0x00); SendData(0x0c); //设置音量 delay(2000); //延时 //选取曲目2播放 SendData(0x0a);//清空数字 SendData(0x02);//曲目数字,对应00002.mp3 SendData(0x0b);//选曲播放 delay(2000); //开始播放 //SendData(0x11);//开始播放,这部分可以没有 //delay(2000); } void SendData (char addr )//发送函数 { digitalWrite(pin,HIGH); /*开始拉高*/ delayMicroseconds ( 1000 ); digitalWrite(pin,LOW); /*开始引导码*/ delayMicroseconds ( 3200 );/*此处延时最少要大于2ms*/ for (int i = 0; i < 8; i++ ) /*总共8位数据 */ { digitalWrite(pin,HIGH); if ( addr & 0x01 ) /*3:1表示数据位1,每个位用两个脉冲表示 */ { delayMicroseconds ( 600 ); digitalWrite(pin,LOW); delayMicroseconds ( 200 ); } else /*1:3表示数据位0 ,每个位用两个脉冲表示 */ { delayMicroseconds (200); digitalWrite(pin,LOW); delayMicroseconds ( 600 ); } addr >>= 1; } digitalWrite(pin,HIGH); }
实现的效果是通过串口输入不同的值选择不同的mp3播放。
相关资料
语音播报模块相关的语音合成软件和资料:
链接:https://pan.baidu.com/s/1q0tWEnxipMKokLdAQdNoUQ?pwd=sv4m
提取码:sv4m
–来自百度网盘超级会员V5的分享
最后
以上就是尊敬小熊猫最近收集整理的关于Arduino Uno接JQ8900-16p语音播报模块的全部内容,更多相关Arduino内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复