通过Blinker使小爱同学控制ATK-ESP8266模块

家里最近买了个小爱音箱,能通过wifi和蓝牙控制一些智能家居,我心里就想能不能控制自己diy的装置呢,于是上网查了之后发现是可以实现的,但是目前网上大部分的教程都是用esp8266最小系统模块或者单纯esp8266,手头上只有正点原子的ATK-esp8266模块(如下图),于是展开了一番摸索,记录下来。

一、准备材料:

  1. 带有小爱同学的设备(小爱音箱、小米手机等等)
  2. ATK-ESP8266模块
  3. USB转TTL串口模块
  4. 手机一部(需要安装这三个app:小爱音箱、米家、点灯blinker,虽然看起来要装多三个软件很麻烦,但是个人感觉这三个软件都不错,特别是blinker,对于构建diy简易物联网很有用,用blinker让你在外也可以控制你的智能设备)

二、配置wifi模块(改固件),在blinker中绑定设备

blinker的简单介绍参考arduino中文社区:https://doc.blinker.app/?file=001-快速开始/02-esp8266-WiFi接入
参考资料:1、https://zhuanlan.zhihu.com/p/87209619
2、https://zhuanlan.zhihu.com/p/93143539

1.在blinker中获取设备Secret Key

通过Blinker使小爱同学控制ATK-ESP8266模块_第1张图片通过Blinker使小爱同学控制ATK-ESP8266模块_第2张图片
通过Blinker使小爱同学控制ATK-ESP8266模块_第3张图片通过Blinker使小爱同学控制ATK-ESP8266模块_第4张图片

2.在arduino的IDE中下载esp8266库和blinker库

1)esp8266库下载安装:
打开IDE,点击上方菜单栏【文件】–>【首选项】,在下面红框的位置填上
http://arduino.esp8266.com/stable/package_esp8266com_index.json
通过Blinker使小爱同学控制ATK-ESP8266模块_第5张图片
打开【工具】–>【开发板】–>【开发板管理器】 上方输入框搜索 ‘ESP8266’=>【安装】即可。这里在打开开发板管理器的时候,下面会显示正在下载平台索引,等进度条跑完才能开始搜索(这个过程就是去刚刚输入的网址或者其它位置下载索引,在这个过程中,我遇到了报错,检查发现是网络原因,arduino是外网资源,至于怎么解决,我是用了科学的方法)。

安装完后,再次打开【工具】–>【开发板】就可以选择ESP8266了
通过Blinker使小爱同学控制ATK-ESP8266模块_第6张图片
2)blinker库下载:
点击下载(官方资料)
Windows:将下载好的blinker库解压到 我的电脑>文档>Arduino>libraries 文件夹中
Mac OS:将下载好的blinker库解压到 文稿>Arduino>libraries 文件夹中
完成上述两步后就能在【文件】–>【示例】中看到Blinker和ESP8266的例程(看不到重启一下IDE)

3.给ATK-ESP8266烧录固件程序,通过blinker控制板载led

用杜邦线连接USB转TTL串口模块和ATK-ESP8266模块:

USB转TTL ATK-ESP8266
5V VCC
GND GND、IO_0
TXD RXD
RXD TXD

注意:ATK-ESP8266的IO_0用于设置模块的运行模式,高电平是正常运行模式(不接悬空为高电平),低电平是烧录固件模式。要改变运行模式必须断电重启,也就是拔掉再插过。

线接好后就可以接上PC,回到IDE,打开【文件】–>【示例】–>【Blinker】–>【Blinker_Hello】–>【Hello_WiFi】,找到

char auth[] = "abcdefghijkl"; //在前面步骤中在blinker app中获取到的Secret Key
char ssid[] = "abcdefg"; //你的WiFi热点名称
char pswd[] = "123456789"; //你的WiFi密码

根据自己的情况改写双引号中的内容,而后点击上传按钮,等待程序上传完成。
通过Blinker使小爱同学控制ATK-ESP8266模块_第7张图片
待程序上传完成后,拔掉wifi模块IO_0上的线,让其悬空,并重启WiFi模块,检查模块是否连接成功(可以先配置模块连接手机或者电脑的热点,这样能通过查看接入热点设备数是否有加一检查WiFi模块是否已成功配置,以及通过串口调试窗口查看模块返回的信息判断模块的运行情况(波特率改为115200))。

待模块成功连接上网络后,就可以在Blinker中控制这个wifi模块。在Blinker中找到刚刚新增的设备,点击进入,第一次进入时会弹出引导窗口,这里为了演示选择下面的“载入示例”,熟悉之后可选上面的“开始使用”自定义编辑控制界面。也可以通过右上角的编辑按钮随时修改控制界面。

进入示例界面后,点击右上角“点我开关灯”按钮,就可以控制ATK-ESP8266模块正面的板载led的亮灭。
通过Blinker使小爱同学控制ATK-ESP8266模块_第8张图片

4.通过blinker,使小爱同学控制板载led

打开小爱音箱或者米家APP绑定Blinker账户
通过Blinker使小爱同学控制ATK-ESP8266模块_第9张图片
点击“添加”,找到“点灯科技”,输入点灯的账号密码绑定账号。绑定成功后,在列表中还是空白的,找不到我们的设备,这是因为在WiFi模块的固件里没有加入小爱支持的程序,于是回到固件程序中,也就是Hello_wifi文件,修改如下:

#define BLINKER_WIFI
#define BLINKER_MIOT_LIGHT		//添加这一行,就能支持小爱控制

#include 
//setup()函数中
...
Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);
    BlinkerMIOT.attachPowerState(miotPowerState);		//添加这一行,作用是注册下面的回调函数

    Button1.attach(button1_callback);
...
//setup()函数前添加如下代码
void miotPowerState(const String & state)
{
    BLINKER_LOG("need set power state: ", state);

    if (state == BLINKER_CMD_ON) {
        digitalWrite(LED_BUILTIN, LOW);

        BlinkerMIOT.powerState("on");
        BlinkerMIOT.print();
    }
    else if (state == BLINKER_CMD_OFF) {
        digitalWrite(LED_BUILTIN, HIGH);

        BlinkerMIOT.powerState("off");
        BlinkerMIOT.print();
    }
}

具体参考:这里,可以根据实际情况继续修改固件。

修改完成后,重新烧录程序,重启WiFi模块后,再在小爱音箱或者米家中添加设备,就能在小爱音箱的智能家居列表中看到我们diy的设备,随后就可以大喊“小爱同学,打开/关闭台灯”(这里台灯是设置的设备名,可在blinker中修改)

之后,可以添加继电器模块等,就可以去控制一些家电了,根据点灯科技的文档可以开发出再复杂一点的功能。

以上,是本人在实操过程中的步骤及遇到的问题,如有什么错误望指证,谢谢。

你可能感兴趣的:(通过Blinker使小爱同学控制ATK-ESP8266模块)