|
本帖最后由 topdog 于 2021-4-11 14:16 编辑
HLK-V20是海凌科电子针对大量纯离线控制场景和产品最新推出的高性能纯离线语音识别模块,可广泛且快速的应用于智能家居、各类智能小家电、86盒、玩具、灯具、工业、医疗、物联网、汽车、安防与照明等需要语音操控的产品。模块采用32bit RSIC架构内核,并加入了专门针对信号处理和语音识别所需要的DSP指令集,支持浮点运算的FPU运算单元,以及FFT加速器,通过神经网络对音频信号进行训练学习,提高语音信号的识别能力。该方案支持150条本地指令离线识别,可自由定制唤醒词、命令词与应答播报词,具有丰富的外围接口。
模块实物图如下图所示:
官方提供的资料下载地址:https://h.hlktech.com/mobile/download/fdetail/93
HLK-V20 配套测试底板方便客户直观的体验语音控制 LED 灯、语音识别后串口输出协议数据。
演示固件支持语音唤醒词:小科小科、小凌小凌、你好台灯、你好魔方、小海小海。
本地语音指令控制 LED 灯,不需要MCU配合,直接将固态继电器接到B2,B6,B7管脚就能实现语音控制,非常的方便。
操作过程如下:
1、 使用 USB 数据线给测试底板供电,外接喇叭、麦克风。
2、 模块唤醒后,使用命令词”打开空调”,底板 LED3 点亮,对应模块上 B7 引脚,使用命令词”关闭空调”,LED3 灯熄灭。
3、 使用命令词”打开灯光”,底板 LED2 点亮,对应模块上 B6 引脚,使用命令词”关闭灯光”,LED2 灯熄灭。
4、 使用命令词”打开开关”,底板 LED1 点亮,对应模块上 B2 引脚,使用命令词”关闭开关”,LED1 灯熄灭。
5、出厂 demo 固件只有以上 3 个引脚有动作,其他引脚都无动作,如需更多引脚进行输出,联系海凌科业务进行定制。
下面以控制风扇为例子演示一下,实现打开和关闭风扇,风扇调速等功能。解释一下:
(1)软串口截获字符串HLK_V20_feedback,解析字符串使用endsWith()函数,如果反馈的字符串尾部含有“openElectricfan”就执行相应“打开风扇”的动作。(2)调速需要使用PWM功能,请注意UNO 硬件支持PWM 功能的管脚是3, 5, 6, 9, 10 和11。(3)语音命令对应的反馈字符串大家参考附件表格。
接线如下:
HLKZ-V20 UNO
GND GND
VCC 5V
TX 2
RX 3
风扇的电源接 UNO的管脚4,调速开关(MOS管)接管脚9。
程序实现如下:
[pre]#include <SoftwareSerial.h>
const int powerPin = 4;
const int analogOutPin = 9;
SoftwareSerial HLK_V20_Serial(2, 3);
void setup()
{
Serial.begin(115200);
HLK_V20_Serial.begin(115200);
pinMode(powerPin, OUTPUT);
}
void loop()
{
int outputValue = 0;
String HLK_V20_feedback = "";
while (HLK_V20_Serial.available()) {
HLK_V20_feedback = HLK_V20_Serial.readString();
Serial.println(HLK_V20_feedback);
delay(100);
}
if (HLK_V20_feedback.endsWith("openElectricfan") == 1) {
digitalWrite(powerPin, HIGH);
Serial.println("打开风扇");
} else if (HLK_V20_feedback.endsWith("closElectricfan") == 1) {
digitalWrite(powerPin, LOW);
Serial.println("关闭风扇");
} else if (HLK_V20_feedback.endsWith("AdjustGearmin") == 1) {
outputValue = map(1, 0, 3, 0, 1023);
analogWrite(analogOutPin, outputValue);
Serial.print(outputValue);
Serial.println("风速调到最小");
} else if (HLK_V20_feedback.endsWith("AdjustGearmax") == 1) {
outputValue = map(3, 0, 3, 0, 1023);
analogWrite(analogOutPin, outputValue);
Serial.print(outputValue);
Serial.println("风速调到最大");
}[/pre]
串口显示状况如下:
小伙伴们可以按照第二种方法稍加修改就能制作出智能语音控制的浴室,气氛环境灯等酷炫的作品呦。
|
|