763浏览
查看: 763|回复: 6

[ESP8266/ESP32] FireBeetle 语音控制台灯

[复制链接]
这次制作的是一个通过语音控制台灯的作品,主控是 FireBeetle ESP32,用于识别语音的是Gravity:I2C语音识别模块(DFR0715)【参考1】。

FireBeetle 语音控制台灯图1

这款模块是 I2C接口,硬件连接非常简单,同时编程上也非常简单,首先设置需要识别的词语。例如:asr.addCommand("dakai deng guang",0);  表示当收到“打开灯光”之后输出0。接下来我们使用之前用过的 433Mhz 遥控开关【参考2】。基本思想就是:如果语音模块收到了对应的命令,那么通过433Mhz模块发送遥控指令,对应的 433Mh遥控开关会接收这个指令并且做出相应动作从而实现语音控制台灯。
首先进行硬件设计:

FireBeetle 语音控制台灯图2

除了前面提到的主控和语音识别模块,这里还带有一个电池和充放电管理模块。这个充放电管理模块是基于IP5306的,用于实现CR123A可充电式锂电池【参考3】的管理。这款电池直径1.6cm高3.4cm,体积相当于18650 的一半,适用于一些对于体积要求较高的产品。
FireBeetle 语音控制台灯图3
PCB设计上电池、电池管理模块和FireBeetle是放在背面的,其中为了方便用户查看管吃管理模块上的电量指示灯,左下角预留了一个长方形的阻焊层,这样指示灯灯光可以透过PCB在正面查看到。
3D 预览如下:
FireBeetle 语音控制台灯图4
焊接之后成品:

FireBeetle 语音控制台灯图5

硬件完成之后即可着手软件设计:

  1. #include "DFRobot_ASR.h"
  2. #include <RCSwitch.h>
  3. RCSwitch mySend = RCSwitch();
  4. #define Led 8                    //定义Led引脚为8
  5. DFRobot_ASR  asr;
  6. void setup()
  7. {
  8.   Serial.begin(115200);
  9.   pinMode(Led,OUTPUT);           //初始化LED引脚为输出模式
  10.   digitalWrite(Led,LOW);         //LED引脚低电平
  11.   /*
  12.     begin函数有两个参数:
  13.     1)设置语音识别模式:1.LOOP(默认,循环模式) 2.PASSWORD(指令模式) 3.BUTTON(按钮模式)
  14.     2)选择模块的录音输入方式:1.MIC(默认,此时板载咪头和3.5mm输入接口工作)2.MONO(3.5mm外接音频输入接口工作)
  15.   */
  16.   asr.begin(asr.LOOP);
  17.   asr.addCommand("da kai deng guang",0);
  18.   asr.addCommand("guan bi deng guang",1);
  19.   //开始识别
  20.   asr.start();
  21.   Serial.println("Start");
  22.   mySend.enableTransmit(25);
  23.   
  24.   // Optional set protocol (default is 1, will work for most outlets)
  25.    mySend.setProtocol(1);
  26.      
  27. }
  28. void loop()
  29. {
  30.   switch(asr.read())            //判断识别内容,在有识别结果的情况下asr.read()会返回识别到的词条编号,否则返回-1
  31.   {
  32.     case 0:                     //若是指令“da kai deng guang”
  33.       digitalWrite(Led,HIGH);   //点亮LED
  34.       Serial.println("received'da kai deng guang',command flag'0'");//串口发送received"kai deng",command flag"0"
  35.       mySend.send(7057192 , 24);
  36.       break;
  37.     case 1:                     //若是指令“guan bi deng guang”
  38.       digitalWrite(Led,LOW);    //熄灭LED
  39.       Serial.println("received'guan bi deng guang',command flag'1'");//串口发送received"guan deng",command flag"1"
  40.       mySend.send(7057188 , 24);
  41.       break;
  42.   }
  43. }
复制代码

其中的70571927057188分别是对应的433Mhz遥控插座的开和关。关于这个数值的解释可以在【参考4】看到。

参考:





zoologist  高级技匠
 楼主|

发表于 2023-6-30 15:56:49

工作测试视频

本帖最后由 zoologist 于 2023-6-30 15:59 编辑

工作测试视频可以在B站看到
【语音控制的遥控开关】 https://www.bilibili.com/video/B ... 819bfc37d4672cb6d54




回复

使用道具 举报

zoologist  高级技匠
 楼主|

发表于 2023-6-30 16:03:45

本文提到的电路图下载
下载附件VoiceRemoteControl.zip
回复

使用道具 举报

腿毛利小五郎  初级技匠

发表于 2023-7-5 09:18:13

感谢分享
回复

使用道具 举报

流浪剑士  初级技师

发表于 2023-7-5 14:22:03

厉害,感谢分享
回复

使用道具 举报

花生编程  中级技匠

发表于 2023-7-29 22:15:14

厉害厉害!!!
回复

使用道具 举报

花生编程  中级技匠

发表于 2023-7-29 22:17:22

好赞啊!!不错不错!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail