FireBeetle 语音控制台灯

2023-06-306186
AI 快速预览详细 收起
这个项目是通过FireBeetle ESP32和Gravity:I2C语音识别模块实现的语音控制台灯。硬件连接非常简单,只需要将主控板、语音识别模块和433Mhz遥控开关连接起来。编程部分也非常直观,通过设置需要识别的词语(如“打开灯光”和“关闭灯光”),当语音模块收到对应的命令时,通过433Mhz模块发送遥控指令,从而实现语音控制台灯的功能。这个项目不仅适合STEM教育场景,还可以作为亲子共学的项目,帮助孩子掌握语音控制技术。
这次制作的是一个通过语音控制台灯的作品,主控是 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】看到。

参考:





创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(6)
花生编程
花生编程
好赞啊!!不错不错!
花生编程
花生编程
厉害厉害!!!
流浪剑士
流浪剑士
厉害,感谢分享
腿毛利小五郎
腿毛利小五郎
感谢分享
zoologist
zoologist
作者
本文提到的电路图下载

zoologist
zoologist
作者
工作测试视频可以在B站看到
【语音控制的遥控开关】 https://www.bilibili.com/video/BV1K14y1m7mj/?share_source=copy_web&vd_source=5ca375392c3dd819bfc37d4672cb6d54
- 没有更多了 -