ESP32接入小爱同学,实现语音控制

准备工作

安装手机app

  1. 米家app
  2. 小米音箱或小爱同学app
  3. 点灯科技app,app下载链接:https://diandeng.tech/dev

开发环境搭建

  • Arduino IDE需安装好esp32扩展
  • Arduino IDE 1.8.7或更新版本
  • 务必使用 2.0.0 或以上release版本的 ESP32 Arduino package
    Arduino安装包:链接:https://pan.baidu.com/s/1EolgWnV7W-cQiDAbJ-MicA
    提取码:au2i
    esp32 Arduino库:链接:https://pan.baidu.com/s/1LoBYfSvkebxX8-bsUe4AGg
    提取码:4xks
    blinker Arduino库:https://diandeng.tech/dev

ESP-WROOM-32环境搭建

之前已经写了一篇关于ESP-WROOM-32环境搭建(Arduino)的博客,但是由于esp32 - library版本太低,添加blinker - library之后,blinker的例程编译不通过,所以在此重写一下。
1.安装Arduino
2.打开Arduino IDE菜单 > 文件 >首选项,在 附加开发板管理器网址 输入框中,填入以下网址:
https://www.arduino.cn/package_esp32_index.json
3.下载esp32安装包,直接运行,程序会自动解压到相应位置
4.下载并安装blinker Arduino库
5.通过Arduino IDE 菜单>项目>加载库>添加.ZIP库 导入blinker到库,如图:
在这里插入图片描述

下载并安装点灯科技app

1.添加一个设备
在这里插入图片描述
2.选择第一个点灯
在这里插入图片描述
3.选择网络接入
在这里插入图片描述
4.复制key(代码中将要使用这个key)
在这里插入图片描述
5.给新添加的设备添加组件
在这里插入图片描述
6.添加一个按键,实现简单开关。组件键名很关键,和key一样,都要在代码中使用。
在这里插入图片描述

编写简单开关程序测试

代码中有四处需要修改:

  • 组件键名
  • blinker appkey
  • wifi 名字
  • wifi 密码
#define BLINKER_WIFI#include <Blinker.h>char auth[] = "Your Device Secret Key";
char ssid[] = "Your WiFi network SSID or name";
char pswd[] = "Your WiFi network WPA password or WEP key";// 新建组件对象
BlinkerButton Button1("Light_Button");
BlinkerNumber Number1("num-abc");int counter = 0;// 按下按键即会执行该函数
void button1_callback(const String & state)
{BLINKER_LOG("get button state: ", state);digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}// 如果未绑定的组件被触发,则会执行其中内容
void dataRead(const String & data)
{BLINKER_LOG("Blinker readString: ", data);counter++;Number1.print(counter);
}void setup()
{// 初始化串口Serial.begin(115200);BLINKER_DEBUG.stream(Serial);BLINKER_DEBUG.debugAll();// 初始化有LED的IOpinMode(LED_BUILTIN, OUTPUT);digitalWrite(LED_BUILTIN, HIGH);// 初始化blinkerBlinker.begin(auth, ssid, pswd);Blinker.attachData(dataRead);Button1.attach(button1_callback);
}void loop() {Blinker.run();
}

在APP中点击按钮就可以控制Arduino上的LED灯了。

实现小爱同学语音控制

1.打开米家app–>>我的–>>其他平台设备,添加设备
在这里插入图片描述
2.添加点灯科技
在这里插入图片描述
在这里插入图片描述
3.同步设备
在这里插入图片描述

编写程序

代码中有四处需要修改:

  • 组件键名
  • blinker appkey
  • wifi 名字
  • wifi 密码
#define BLINKER_WIFI
#define BLINKER_MIOT_LIGHT//支持小爱同学
#define BLINKER_WITHOUT_SSL      //非SSL加密通信接入,省堆栈  
#include <Blinker.h>#define LED   2  // 板子上的灯 
#define GPIO   2  // 板子上的灯// // 新建组件对象
BlinkerButton Button1("************");//注意:要和APP组件’数据键名’一致
char auth[] = "************"; // blinker app提供的秘钥
char ssid[] = "************";// wifi 名字
char pswd[] = " ************";// wifi 密码bool wsState;
uint8_t wsMode = BLINKER_CMD_MIOT_DAY;// 按下BlinkerAPP按键即会执行该函数
void button1_callback(const String & state) {BLINKER_LOG("get button state: ", state);digitalWrite(LED, !digitalRead(GPIO)); Blinker.vibrate();
}//小爱电源类操作的回调函数:
//当小爱同学向设备发起控制, 设备端需要有对应控制处理函数 
void miotPowerState(const String & state)
{BLINKER_LOG("need set power state: ", state);if (state == BLINKER_CMD_ON) {digitalWrite(LED, HIGH);  //高电平点灯BlinkerMIOT.powerState("on");BlinkerMIOT.print();wsState=true;}else if (state == BLINKER_CMD_OFF) {digitalWrite(LED, LOW); //低电平关灯BlinkerMIOT.powerState("off");BlinkerMIOT.print();wsState=false;}
}//小爱同学 的回调查询函数,照抄即可。主要是查询 当前灯的状态
void miotQuery(int32_t queryCode)
{BLINKER_LOG("MIOT Query codes: ", queryCode);switch (queryCode){case BLINKER_CMD_QUERY_ALL_NUMBER :BLINKER_LOG("MIOT Query All");BlinkerMIOT.powerState(wsState ? "on" : "off");BlinkerMIOT.color(0);BlinkerMIOT.mode(0);BlinkerMIOT.colorTemp(1000);BlinkerMIOT.brightness(1);BlinkerMIOT.print();break;case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :BLINKER_LOG("MIOT Query Power State");BlinkerMIOT.powerState(wsState ? "on" : "off");BlinkerMIOT.print();break;   default :BlinkerMIOT.powerState(wsState ? "on" : "off");BlinkerMIOT.color(0);BlinkerMIOT.mode(0);BlinkerMIOT.colorTemp(1000);BlinkerMIOT.brightness(1);BlinkerMIOT.print();break;}
}void setup() {// 初始化串口,并开启调试信息,调试用可以删除Serial.begin(115200); BLINKER_DEBUG.stream(Serial);// 初始化IOpinMode(LED, OUTPUT); digitalWrite(LED, LOW); // 初始化 led 低电平 ,则灯熄灭状态// 初始化blinkerBlinker.begin(auth, ssid, pswd);Button1.attach(button1_callback);//小爱同学务必在回调函数中反馈该控制状态 BlinkerMIOT.attachPowerState(miotPowerState);//注册回调函数BlinkerMIOT.attachQuery(miotQuery);
}void loop() {Blinker.run();
}

参考网址

Arduino安装esp32SDK
点灯科技教程
点灯科技接入小爱同学
https://blog.csdn.net/xddwg521125/article/details/105391169

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/50233.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

可惜我是水瓶座

这是我写的十二星座十二人的第七篇。我过去写过&#xff1a; 双子刘若英&#xff1a;《若》狮子陈奕迅&#xff1a;《狮子医生》天秤李安&#xff1a;《安》天蝎朴树&#xff1a;《蝎子朴树》摩羯周杰伦&#xff1a;《范特西》双鱼伊能静&#xff1a;《十二星座十二人之&#x…

机器人用上AI后,拥有了堪比人类皮肤的触觉:轻松引线穿针、夹取鸡蛋丨Science子刊...

萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 你见过能灵活夹取鸡蛋、可取可放的机器人吗&#xff1f; 不仅如此&#xff0c;甚至还能穿针引线&#xff1a; 就算是往它拿着的瓶子里倒水&#xff0c;也不会掉&#xff1a; 这是来自香港城市大学、香港大学、CMU和南方科技大学的…

谷歌年度AI技术总结来了!Jeff Dean执笔,附赠27个开源工具和数据大礼包

杨净 梦晨 发自 凹非寺量子位 报道 | 公众号 QbitAI Jeff Dean亲笔盘点谷歌AI研究成果&#xff0c;已经成了一年一度的保留节目。 今年也不例外&#xff0c;还是他抽出一部分假期时间完成的。 过去一年&#xff0c;谷歌研发投入依然是全球最高&#xff0c;在一整年的时间里产出…

高空抛物悲剧频出,AI 监控系统:让我来「罩」着你

来源&#xff5c;HyperAI超神经 文&#xff5c;神经小兮 近年来&#xff0c;因高空抛物、坠物造成的伤害事件屡上报端。水瓶、西瓜皮、易拉罐&#xff0c;甚至菜刀&#xff0c;都可能冷不丁地从天而降&#xff0c;砸向无辜的路人。轻则致伤&#xff0c;重则致命&#xff0c;让人…

OpenCV综合练习1——水瓶水位线合格检测

数字图像处理综合练习——水瓶水位线合格检测 马上就要转到学习深度学习的主干线了&#xff0c;这也是大势所趋&#xff0c;但不能忘本&#xff0c;传统图像处理的知识也是非常重要的&#xff0c;特此记录一下之前学习时做过的小练习。 整个项目的资源放在&#xff1a;水瓶水…

2022年中国便携水瓶市场现状研究分析报告

据我们的分析师调研显示&#xff0c;2021年中国便携水瓶市场销售收入达到了 万元&#xff0c;预计2028年可以达到 万元&#xff0c;2022-2028期间年复合增长率(CAGR)为 %。中国市场核心厂商包括Newell Brands、CamelBak、Tupperware Brands、Cascade Designs和BRITA等&#xff…

【实例篇】怎样测试一个矿泉水瓶

今天我们来分析关于实例的测试&#xff0c;测试一个矿泉水瓶。在测试的时候&#xff0c;需要从以下几个方面进行测试&#xff0c;比如说它的外观功能性能、安全性、易用性还有兼容性。 也可以不从这几个方面进行测试&#xff0c;这样的话能想起来的方面比较少&#xff0c;因为…

java为什么不能多继承_为什么Java不支持多继承

最近我的一个朋友进行了几次面试&#xff0c;碰到了一个很容易被问的问题&#xff1a;为什么Java不支持多重继承&#xff0c;尽管他回答Java可以通过实现多个interface的方式实现多重继承&#xff0c;但面试官却依然为什么不支持。也许我的朋友仅仅是阅读了一些相关的博客&…

我的世界服务器物品不堆叠,我的世界不可堆叠物品怎么堆叠

来源&#xff1a;游戏园日期&#xff1a;2019-05-11 04:03:07 我的世界不可堆叠物品怎么堆叠。那在我的世界里面怎么制作堆叠的不可堆叠物品&#xff0c;怎么感觉这个问的这么绕口呢&#xff1f;那不管了&#xff0c;下面就一起来看看下面的这个教你怎么堆叠不可堆叠物品的方法…

【花雕动手做】有趣好玩的音乐可视化系列小项目(14)---水杯水瓶灯

偶然心血来潮&#xff0c;想要做一个声音可视化的系列专题。这个专题的难度有点高&#xff0c;涉及面也比较广泛&#xff0c;相关的FFT和FHT等算法也相当复杂&#xff0c;不过还是打算从最简单的开始&#xff0c;实际动手做做试验&#xff0c;耐心尝试一下各种方案&#xff0c;…

我的AI不可能这么傻:深度学习的致命弱点

转载自 Nature 点击上方“迈微AI研习社”&#xff0c;选择“星标★”公众号 原作者: Douglas Heaven 关注公众号阅读原文&#xff0c;这个排版太差。 人工智能专家正在想办法修复神经网络的缺陷。 一辆自动驾驶汽车正在靠近一个停车让行标志&#xff0c;它非但没有停下&…

水瓶效果制作

前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 本次分享主要为水瓶效果&#xff0c;思路借鉴于https://www.patreon.com/posts/quick-game-art-18245226 该链接&#xff0c;不过部分内容较难理解&#xff0c;所以打算使用自己的思路实现一下 提示&…

读书笔记:深度学习进阶-自然语言处理(俗称鱼书二)

文章目录 前言一、神经网络的复习二、自然语言和单词的分布式表示2.1什么是自然语言处理2.2同义词词典2.3基于计数的方法2.3.1基于python的语料库的预处理2.3.2单词的分布式表示2.3.3分布式假设2.3.4共现矩阵2.3.5向量间的相似度2.3.6相似单词的排序 2.4基于计数的方法的改进2.…

隐私计算将改变金融行业的游戏规则?

开放隐私计算 01 背景 2月底&#xff0c;相关部门印发《数字中国建设整体布局规划》提出&#xff0c;到2025年&#xff0c;基本形成横向打通、纵向贯通、协调有力的一体化推进格局&#xff0c;数字中国建设取得重要进展&#xff1b;到2035年&#xff0c;数字化发展水平进入世界…

【ChatGLM】使用ChatGLM-6B-INT4模型进行P-Tunning训练记录及参数讲解

文章目录 模型训练步骤参数含义名词解释欠拟合泛化能力收敛性梯度爆炸 初步结论 小结 模型训练 首先说明一下训练的目的&#xff1a;提供本地问答知识文件&#xff0c;训练之后可以按接近原文语义进行回答&#xff0c;类似一个问答机器人。 步骤 安装微调需要的依赖&#xf…

几个潜在的AI科研助手

最近看到一个新闻说ChatGPT被某科研文章列为作者之一。以自然语言处理和深度学习为基础的人工智能在语言修改润色和翻译方面表现优异&#xff0c;似乎还将改变一些传统的论文阅读和写作方式。本文记录几个最近了解到的几个工具。 Scispace 地址&#xff1a;https://typeset.io/…

客户体验词汇表:需要了解的最重要的术语

无论如何&#xff0c;当我们说客户体验时&#xff0c;是什么意思&#xff1f; 这是最终的客户体验词汇表&#xff0c;可帮助指导您。 客户体验&#xff0c;也称为 CX&#xff0c;会影响从客户参与度、保留率、忠诚度、终生价值到最终盈利的方方面面。 难怪获得正确的客户体验是…

免费的chaGPT安利给大家 ,体验了一下还是不错的!!!分享下感受

第一点&#xff1a; 确实很智能、聪明 &#xff0c;知道你想问的问题&#xff0c;即使问题不清楚&#xff0c;比传统的单一搜索具有连贯性&#xff0c;能根据上几次问题进行连贯回答 。第二点&#xff1a; 用来搜索代码确实真的方便&#xff0c;代码注释都写的清清楚楚、详细 &…

ChatGPT这么火,你会被取代吗?

前言 ChatGPT爆火后&#xff0c;“程序员要失业了”、“程序员要下岗了”之声不绝于耳&#xff0c;引得程序员们不由得一阵惊慌。 ChatGPT这么火&#xff0c;以后是不是不需要那么多程序员了。 这个话题太过于火热&#xff0c;我也不由的试用了下&#xff0c;但是经过使用、和…

炸裂了!3分钟用GPT4做一个PPT!

GPT4有多强了&#xff0c;相信体验过的同学都知道&#xff0c;一个字爽&#xff01;无论是速度&#xff0c;还是数据集还是功能都比3.5要强大很多。现在越来越多的人开始用GPT4了&#xff0c;可以大幅的提高我们的工作和学习的效率&#xff0c;今天小编就用GPT4快速做一个PPT&a…