Arduino应用开发——通过小爱同学控制灯光

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灯被打开了。同理,关闭灯的指令也是一样的操作。
通过串口打印的信息也可以看到开灯和关灯相关的指令。

Arduino应用开发——通过小爱同学控制灯光
至此,从小爱同学到硬件设备的整个流程就走通了。流程走通了之后我们就可以在这个基础上增加更多的功能,比如控制灯的亮度,设备工作模式等等,也可以修改设备的名称,或者控制更多其他类型的设备。

7 进阶用法

通过Blinker关联小爱同学控制设备其实有很大的局限性,因为小爱同学所有的语音指令都是Blinker定义好的,不支持做过多的修改,而且目前支持的语音指令实在是有点少,当我们需要自定义一些指令时并不能通过这套代码实现。不过如果只是玩一下或者学习的话,还是可以去研究一下的。
关于Blinker以及小爱同学所支持的设备和语音指令在点灯科技的官网上其实有比较详细的介绍。
点灯科技小米小爱技术文档:https://diandeng.tech/doc/xiaoai

我们这里也基于这些给定的语音指令做一些进阶的操作。
前面的示例我们通过小爱同学控制了灯的亮灭,然后现在我们增加LED灯亮度、色温以及模式的控制。
特别说明:要实际控制灯的亮度和色温的话我们需要用到RGB灯,而且有些比较简单的GRB灯只能调节三色灯的亮灭,最多也只能调出8种颜色,如果需要调节出多种色温,还需要调节三色灯里面每一个灯的亮度。每个灯的亮度阶梯越多,能跳出来的色彩就越多。如果是单色LED的话最多只能调亮度,是没办法改变颜色的,亮度调节可以通过PWM实现。
我这里因为现在手头上也没有合适的灯,这里就不做具体的演示了,我这里只讲一下怎么把小爱语音和LED灯的控制代码关联起来,至于实际的一些操作,感兴趣的同学可以自己再补充。


7.1 亮度控制

小爱同学支持的亮度控制语音如下:

来源:柒壹漆

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年4月26日
下一篇 2022年4月26日

相关推荐