![cover](https://img-blog.csdnimg.cn/c81d20db6e6e45a7a2cbf032fcf4d5b1.png)
语音控制开关灯----mega2560
mega2560 语音识别
·
介绍
亲爱的创客伙伴们,本期要给大家分享的是语音控制开关灯,将会使用三种单片机来展示(stm32、esp32以及mega2560,除mega2560为8位外,另外两个为32位单片机)。我们只需要掌握一个知识点,串口通信,就可以完成本demo。
对于语音,我们采用快速开发的方法,直接使用模块化编程,也就是说语音识别用一个模块,在来一个单片机控制灯光。
使用到的模块,LU-ASR01和3W 8欧姆的喇叭,需要的单片机:esp32/esp8266、stm32、mega2560/uno中单片机任一个,或者啥单片机都没有,看我文章了解下也可以呀。
模块喇叭如下,因为我们使用的是串口通信,需要RX、TX两个引脚,模块没有引出RX引脚,需要手动焊接一下。
mega2560
1、库文件下载
关于mega2560 的软串口通信,我之前写过一篇。(140条消息) esp8266与mega2560开发板串口通信_哆啦哆小魔仙的博客-CSDN博客_mega2560串口通信https://blog.csdn.net/weixin_58125062/article/details/124763604
本次继续使用软串口,我这里使用了ws2812灯条,效果会更炫一点,也可以用普通led代替。
首先,我们要下载ws2812的驱动库,Adafruit_NeoPixel。点击管理库,搜索进行安装。
2、mega2560接线及代码
rx、tx接mega2560的10、11引脚,ws2812灯光接7引脚。
//mega2560软串口代码,语音识别炫彩灯部分
#include <SoftwareSerial.h>
#include <Adafruit_NeoPixel.h>
SoftwareSerial arduinoSerial = SoftwareSerial(10, 11);
String message = "";//定义字符串接收串口消息
#define PIN 7
#define NUMPIXELS 12 //灯个数
Adafruit_NeoPixel strip(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
uint32_t red = strip.Color(255, 0, 0);
uint32_t green = strip.Color(0, 255, 0);
uint32_t off_close = strip.Color(0, 0, 0);
uint32_t yellow = strip.Color(255, 255, 0);
uint32_t orange = strip.Color(255, 97, 0);
uint32_t blue = strip.Color(0, 0, 255);
uint32_t white = strip.Color(255, 192, 203);
void Light_up(uint32_t mess)//只亮灯
{
for (int i = 0; i < NUMPIXELS; i++) {
strip.setPixelColor(i, mess);
strip.show();
delay(30);
}
}
void openp() {
Light_up(orange);
delay(300);
Light_up(blue);
delay(300);
Light_up(yellow);
}
void closee() {
Light_up(off_close);
}
void setup() {
Serial.begin(9600);
arduinoSerial.begin(9600);
arduinoSerial.flush();
strip.begin();
strip.setBrightness(50); //设置亮度 (0~255)
}
void loop()
{
if (arduinoSerial.available() > 0) {
message = message + char(arduinoSerial.read());
Serial.println(message);
if (message == "a") {
openp();
}
if (message == "b") {
closee();
}
message = "";
}
}
3、语音识别模块代码
语音识别这个模块有自己的开发软件,有图形化编程,也可以直接写代码,十分方便。
波特率一定要保持一致。
#include "asr.h"
#include "setup.h"
#include "myLib/asr_event.h"
uint32_t snid;
//{ID:250,keyword:"命令词",ASR:"最大音量",ASRTO:"音量调整到最大"}
//{ID:251,keyword:"命令词",ASR:"中等音量",ASRTO:"音量调整到中等"}
//{ID:252,keyword:"命令词",ASR:"最小音量",ASRTO:"音量调整到最小"}
void ASR_CODE()
{
//{ID:29,keyword:"唤醒词",ASR:"小杜小杜",ASRTO:"我在呢"}
if(snid == 29){
Serial.println("hello");
}
//{ID:30,keyword:"命令词",ASR:"打开炫彩灯",ASRTO:"灯光已打开"}
if(snid == 30){
set_RGB(1,1);
Serial.println("a");
}
//{ID:31,keyword:"命令词",ASR:"关闭灯光",ASRTO:"灯光已关闭"}
if(snid == 31){
Serial.println("b");
set_RGB(1,0);
}
}
void setup()
{
//播报音设置为快速版TTS生成模型时间可以1分钟内完成
//{speak:小蝶-清新女声,vol:10,speed:10,platform:haohaodada}
//{playid:10001,voice:请用小杜唤醒我}
//{ID:0,keyword:"唤醒词",ASR:"小爱同学",ASRTO:"我在呢哦"}
Serial.begin(9600);
Serial.setTimeout(10);
}
4、效果
语音识别mega2560
更多推荐
所有评论(0)