语音助手-智能家居

Posted 北極星

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了语音助手-智能家居相关的知识,希望对你有一定的参考价值。

 

 

 

-项目概述-

寝室里,我离门最远,寝室的大学牲小朋友们却总是早早的爬上了床,要我去开门关灯,这很烦!

技术宅需要解放生产力。要不,弄一个语音助手吧!

 目的:

  • 语音控制所有接入接口的开关器件
  • PWM分级控制模拟量器件(如灯的亮度)
  • 多种电平兼容
  • 场景分离控制(如主卧的灯,次卧的灯)
  • 自定义APP(可选择WiFi连接)
  • 屏幕显示接入设备,设备在线显示,离线警告,电压显示,温度显示,时显
  • 可在断网情况下手动控制

-项目预览-

 

-项目框架-

主要思路:小爱同学接入点灯科技,点灯科技留出接口供ESP8266使用,ESP8266与51串口通讯,51控制所有硬件外设。

项目框架如下:

 

 

-项目代码-

主框架代码很简单,如下:

 #define BLINKER_WIFI
 #define BLINKER_MIOT_LIGHT 
 #include <Blinker.h>
 
 #define LED   2  
 char auth[] = "077eb2b1e5a6"; // blinker 秘钥
 char ssid[] = "PotatoWorld";  // wifi 名字
 char pswd[] = "jrj827508";    // wifi 密码
 
 bool wsState;
 
 uint8_t wsMode = BLINKER_CMD_MIOT_DAY;
 // 新建组件对象
 BlinkerButton Button1("btn-abc");//注意:要和APP组件’数据键名’一致
  
 // 按下BlinkerAPP按键即会执行该函数
 void button1_callback(const String & state) 
  BLINKER_LOG("get button state: ", state);
  digitalWrite(D3, !digitalRead(D3));
  digitalWrite(LED, !digitalRead(LED)); 
  Blinker.vibrate();
 
  
 //小爱电源类操作的回调函数:
 //当小爱同学向设备发起控制, 设备端需要有对应控制处理函数 
 void miotPowerState(const String & state)
 
     BLINKER_LOG("need set power state: ", state);
 
     if (state == BLINKER_CMD_ON) 
         //digitalWrite(LED_BUILTIN, LOW);
         digitalWrite(D3, HIGH);
         BlinkerMIOT.powerState("on");
         BlinkerMIOT.print();
     
     else if (state == BLINKER_CMD_OFF) 
         //digitalWrite(LED_BUILTIN, HIGH);
         digitalWrite(D3, LOW);
         BlinkerMIOT.powerState("off");
         BlinkerMIOT.print();
     
 
 
 void miotMode(uint8_t mode)
 
     BLINKER_LOG("need set mode: ", mode);
 
     if (mode == BLINKER_CMD_MIOT_DAY) 
         
     
     else if (mode == BLINKER_CMD_MIOT_NIGHT) 
         
     
     else if (mode == BLINKER_CMD_MIOT_COLOR) 
        
     
     else if (mode == BLINKER_CMD_MIOT_WARMTH) 
       
     
     else if (mode == BLINKER_CMD_MIOT_TV) 
        
     
     else if (mode == BLINKER_CMD_MIOT_READING) 
         // 床上灯光
         digitalWrite(D1, HIGH); 
     
     else if (mode == BLINKER_CMD_MIOT_COMPUTER) 
         
         digitalWrite(D1, LOW);
     
 
     wsMode = mode;
 
     BlinkerMIOT.mode(mode);
     BlinkerMIOT.print();
 
 
 void setup() 
  // 初始化串口,并开启调试信息,调试用可以删除
  Serial.begin(115200); 
  pinMode(D1, OUTPUT);
  digitalWrite(D1, LOW);
  
  BLINKER_DEBUG.stream(Serial);
  // 初始化IO
  pinMode(LED, OUTPUT); 
  pinMode(D1, OUTPUT);
  pinMode(D3, OUTPUT);
  
  digitalWrite(LED, HIGH); // 初始化 led 高电平 ,则灯熄灭状态
  digitalWrite(D3, LOW);
  digitalWrite(D1, LOW);
  
  
  // 初始化blinker
  Blinker.begin(auth, ssid, pswd);
  Button1.attach(button1_callback);
  
  //小爱同学务必在回调函数中反馈该控制状态 
  BlinkerMIOT.attachPowerState(miotPowerState);//注册回调函数
  BlinkerMIOT.attachMode(miotMode);
 
 
 
 void loop() 
  Blinker.run();
 

 

  • 点灯科技的开发文档:https://diandeng.tech/doc
  • 点灯科技接入ESP8266详细教程:https://www.bilibili.com/video/BV1jg4y1q7mQ/
  • 点灯科技接入米家:https://zhuanlan.zhihu.com/p/128643917

 

-项目槽点-

 

以上是关于语音助手-智能家居的主要内容,如果未能解决你的问题,请参考以下文章

小白如何做一个Python人工智能语音助手

ChatGPT-语音助手

智能语音生活助手实现(QT)

爆肝一周,用Python在物联网设备上写了个智能语音助手-阿里云智能语音交互

智能语音助手的工作原理是?先了解自然语言处理(NLP)与自然语言生成(NLG)

如何快速搭建一个像“天猫精灵”的智能语音助手?