Arduino应用开发——通过小爱同学控制灯光
目录
- Arduino应用开发——通过小爱同学控制灯光
-
- 前言
- 1 工作原理
- 2 硬件准备
- 3 软件准备
-
- 3.1 Arduino IDE环境搭建
- 3.2 Blinker APP账 注册和使用
- 4 编写程序
- 5 关联米家APP和Blinker设备
- 6 语音控制测试
- 7 进阶用法
-
- 7.1 亮度控制
- 7.2 色温控制
- 7.3 模式控制
- 结束语
前言
我之前发布了一篇关于如果用手机APP控制LED灯的文章,是基于Blink APP和它的服务器实现的,这一讲我们在之前的基础上做一些扩展,通过手机的小爱同学,使用语音控制灯光。没有看过上一篇博客的同学可以先看一下。
Arduino应用开发——手机APP控制LED
1 工作原理
Blinker APP控灯原理:
Blinker厂家有自己的一个服务器,我们的设备(esp8266、esp32、手机等)都可以通过 络接入到这个服务器,手机app我们看不到源码不确定是以什么样的方式接入的,我主要讲一下MCU(esp8266、esp32等)这边,MCU是通过WIFI连接到互联 的,然后通过MQTT协议接入到Blinker的服务器,MCU作为客户端,服务器作为服务端。具体MQTT的实现原理这里不多说了,光是MQTT这一个话题都可以写好多文章了,想深入了解的同学可以自行查阅资料。
当MQTT连成功之后,MCU会一直侦听,等待服务器下发数据。这个时候我们可以通过手机app操作,比如点一下开灯,服务器收到这个开灯命令后会通过MQTT发送命令到MCU,MCU接收到数据并解析命令后执行点灯的操作。服务器在这里相当于一个中转站,把手机的操作转发到设备端,实现了手机和设备之间的互动。不过有一点要说明的是,设备和服务器是通过MQTT连接的,而手机app和服务器则不一定是用MQTT,个人觉得用http的可能性更大,但是看不到源码,所以实际上是怎么通讯的就不清楚了,这个也不是很重要,并不影响实际的使用。
小爱同学控灯原理:
说明:这里的小爱同学可以是小米手机里面的小爱,也可以是小米的智能音箱。
前面我们已经把我们的设备(esp8266、esp32等)连接到了Blinker的服务器,实现了数据的上传下发。而Blinker本身是有对接小爱同学的,并且设定好了一些固定的语音指令。我们只通过米家APP关联Blinker的账 就能实现小爱同学和Blinker服务器的联动,再结合之前Blinker服务器和我们的硬件设备的连接,就可以间接的实现小爱同学和硬件设备的交互。
简单来说就是我们的语音指令通过小爱同学发送到Blinker的服务器,再由Blinker的服务器转发到我们的硬件设备。Blinker服务器在这里起到一个数据解析、中转的作用。
2 硬件准备
我这里以ESP8266和ESP32为例讲解,其他MCU方法和原理都是一样的,所以根据自己的MCU选择其中一种即可。
硬件配置如下:
模块 | 型 | 说明 |
---|---|---|
ESP8266 | ESP-12F | 这是安信可的一款模组,内部主要是用乐鑫的ESP8266EX再加上一个片外FLASH组成,开发板型 是NodeMCU-12F(CH340版本) |
ESP32 | ESP-WROOM-32 | MCU是乐鑫的一款芯片,开发板型 ESP32 DEVKITV1 |
具体的硬件参数和电路原理图这里就不发出来了,不同厂家做的开发板引脚可能会有点差别。
3 软件准备
软件 | 版本 | 备注 |
---|---|---|
Arduino IDE | 1.8.16 | Blinker需要配合1.8.x及以上版本的Arduino IDE |
ESP8266 package | 3.0.2 | Blinker需配合使用3.0.0或以上release版本的ESP8266 package |
ESP32 package | 3.0.2 | Blinker需配合使用2.0.0或以上版本的ESP32 package |
Blinker arduino package | 0.3.9 | 当前最新版本,以后可能会有更新 |
Blinker APP | 2.5.2(安卓版) | 当前最新版本,以后可能会有更新 |
米家APP | 7.5.705.5319(安卓版) | 当前最新版本,以后可能会有更新 |
3.1 Arduino IDE环境搭建
这个在我的博客里面讲过很多次了,这里就不再说了,不懂的同学先按上一讲把环境搭好(根据自己的MCU选择对应的教程)。
Arduino应用开发——手机APP控制LED
esp8266开发入门教程(基于Arduino)——环境安装
ESP32 Arduino开发环境搭建
3.2 Blinker APP账 注册和使用
这个内容比较多,这里不再赘述了,不懂的同学先看下上一讲的第4点。
Arduino应用开发——手机APP控制LED
4 编写程序
上一讲的教程讲了怎么用Blinker APP创建设备并实现远程控制。
Arduino应用开发——手机APP控制LED
这一讲在这基础上增加小爱同学的语音控制。我们保留上一讲的功能,然后增加电源控制和设备查询这两个回调函数,这两个函数的接口在Blinker的库源码中已经定义好了,我们直接使用即可。我们通过电源控制回调函数实现LED灯的开关控制。
示例代码:
提示:代码中的WIFI的账 和密码根据实际情况修改。
5 关联米家APP和Blinker设备
打开 ,点击,点击,点击,在列表中找到,点击,登录你的Blinker账 ,最后点击即可。设备同步成功之后就可以看到你在Blinker APP上创建的所有设备。
提示1:Blinker账 的注册以及APP的使用请跳转到3.2查看。我在上一篇博客有详细的教程。
提示2:同步设备可能会出现失败的情况,我一开始同步的时候一直失败,过了一段时间之后再尝试又没出现了,不知道是不是APP的bug。
6 语音控制测试
特别说明:我没有小爱同学的智能音箱,我这里是直接用小米的手机来测试的。
注:其他品牌的手机可以下载米家APP,但是没法使用小爱同学。
把烧录好代码的设备通上电,通过串口打印的一些信息,我们可以看到设备正常连上 络之后会连接到Blinker的服务器,连接成功之后可以在Blinker的APP上看到设备的状态由 ‘离线’ 变成 ‘在线’。
小爱同学支持的开关类控制语音如下:
提示1:{}里面的内容是通配多种关键词的,你可以在Blinker APP修改设备的名称,然后语音对应的命令也要跟着改变,保持一致才能正确的控制设备。
对着小米手机呼叫,收到回应之后再说,就能看到设备的LED灯被打开了。同理,关闭灯的指令也是一样的操作。
通过串口打印的信息也可以看到开灯和关灯相关的指令。
7 进阶用法
通过Blinker关联小爱同学控制设备其实有很大的局限性,因为小爱同学所有的语音指令都是Blinker定义好的,不支持做过多的修改,而且目前支持的语音指令实在是有点少,当我们需要自定义一些指令时并不能通过这套代码实现。不过如果只是玩一下或者学习的话,还是可以去研究一下的。
关于Blinker以及小爱同学所支持的设备和语音指令在点灯科技的官 上其实有比较详细的介绍。
点灯科技小米小爱技术文档:https://diandeng.tech/doc/xiaoai
我们这里也基于这些给定的语音指令做一些进阶的操作。
前面的示例我们通过小爱同学控制了灯的亮灭,然后现在我们增加LED灯亮度、色温以及模式的控制。
特别说明:要实际控制灯的亮度和色温的话我们需要用到RGB灯,而且有些比较简单的GRB灯只能调节三色灯的亮灭,最多也只能调出8种颜色,如果需要调节出多种色温,还需要调节三色灯里面每一个灯的亮度。每个灯的亮度阶梯越多,能跳出来的色彩就越多。如果是单色LED的话最多只能调亮度,是没办法改变颜色的,亮度调节可以通过PWM实现。
我这里因为现在手头上也没有合适的灯,这里就不做具体的演示了,我这里只讲一下怎么把小爱语音和LED灯的控制代码关联起来,至于实际的一些操作,感兴趣的同学可以自己再补充。
7.1 亮度控制
小爱同学支持的亮度控制语音如下:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!