小爱同学控制ESP8266点灯

小爱同学吃灰很久了,一直想接入小爱来控制些智能硬件,无奈小米的IOT开放平台只对企业用户开放。最近研究了点灯科技的物联网平台,软件硬件支持非常丰富,关键对于爱好者有免费的版本可以使用,爱了爱了有木有?本篇分享下如何通过Blinker平台接入小爱同学,进而控制联网的ESP8266点灯。

1. 硬件部分

我使用了如下图所示ESP8266开发板,其实就是板载了8266最小系统和USB转串口部分。淘宝上很多,大的区别可能就是串口芯片有CH340和CP2102之分吧。

ESP8266开发板

ESP8266模块板载了LED灯,连接在GPIO2上,GPIO2输出高电平灯熄灭,输出低电平灯点亮,就来控制它吧。

2. 平台部分

在小爱同学APP中智能家居设备需要从米家APP中添加。所以,这两个APP提前下载注册好。这里重点说下Blinker APP。

  • 从官网下载Blinker,支持安卓和苹果版本,选择你喜欢的对应下载,并进行注册。
  • 点击添加设备,选择Diy设备中的Arduino,选择WiFi接入。会得到唯一的密钥,这个很重要,后面需要在代码中添加。

添加设备

  • 返回设备列表页,点击添加的设备图标进入设备控制面板。可点击右上角进行编辑,这里的设备名最好用中文,后面用小爱进行控制的时候,你对它说英文,它可能听不懂哈。

3. 软件部分

  1. 安装ESP8266开发板扩展
  • 启动Arduino IDE,单击「文件」—「首选项」,在附加开发板管理网址中输入如下网址:
http://arduino.esp8266.com/stable/package_esp8266com_index.json

添加开发板网址

  • 单击「工具」—「开发板」—「开发板管理器」,在搜索栏输入"esp8266",找到开发板进行安装,如下图安装完成。

安装8266开发板扩展

这个过程如果你网络不够科学的话,可能无法完成,官方提供了离线安装方式,可点击查看

  1. 安装blinker Arduino库

点击下载库,将下载好的blinker库解压到 我的电脑>文档>Arduino>libraries 文件夹中。

  1. 程序下载

Blinker官方提供了小爱同学的接入流程,以RGB灯的控制为例,介绍了小爱同学的各操作接口,具体可参照官方介绍

我在这里做了简化,只用来控制灯的亮灭,只用了电源类操作接口和设备查询接口。其实就是实现两个回调函数,当接收到小爱同学的命令,会对应进入回调函数去操作硬件。

代码如下,代码中的auth、ssid、pswd要填入实际的值。

#define BLINKER_WIFI
#define BLINKER_MIOT_LIGHT

#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";

bool ledState;

void dataRead(const String & data)
{
  BLINKER_LOG("Blinker readString: ", data);

  uint32_t BlinkerTime = millis();

  Blinker.print("millis", BlinkerTime);
}

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();
    ledState = true;
  }
  else if (state == BLINKER_CMD_OFF) {
    digitalWrite(LED_BUILTIN, HIGH);
    BlinkerMIOT.powerState("off");
    BlinkerMIOT.print();
    ledState = false;
  }
}

void miotQuery(int32_t queryCode)
{
  BLINKER_LOG("MIOT Query codes: ", queryCode);

  switch (queryCode)
  {
    case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
      BLINKER_LOG("MIOT Query Power State");
      BlinkerMIOT.powerState(ledState ? "on" : "off");
      BlinkerMIOT.print();
      break;

    default :
      BlinkerMIOT.powerState(ledState ? "on" : "off");
      BlinkerMIOT.print();
      break;
  }
}
void setup()
{
  Serial.begin(115200);
  BLINKER_DEBUG.stream(Serial);
  BLINKER_DEBUG.debugAll();

  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, HIGH);

  Blinker.begin(auth, ssid, pswd);

  Blinker.attachData(dataRead);
  BlinkerMIOT.attachPowerState(miotPowerState);
  BlinkerMIOT.attachQuery(miotQuery);
}

void loop()
{
  Blinker.run();
}

选择开发板类型和实际端口号,进行程序下载。

选择8266开发板

4. 绑定小爱

  • 下载好程序后,复位开发板,然后在Blinker APP中会看到添加的设备已经现在在线了。

在线设备

  • 进入米家APP,点击「我的」—「其他平台设备」,添加点灯科技,进入后,点击同步设备,就会看到在Blinker中创建的设备。

添加同步设备

  • 前面绑定成功后,小爱同学中就会出现绑定的设备了。

绑定成功

试着对小爱说:“打开灯”、“关闭灯”、“灯的状态”,可能网络不好会有些延迟,不过想要的控制已经实现了。你也可以尝试去控制些别的设备了。


关注公众号「TonyCode」,后台回复“小爱”,获取文中代码及文件。

TonyCode

  • 17
    点赞
  • 177
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
固件下载完成后就在电脑打开MQTT服务器脚本和HTTP服务器脚本: 打开MQTT服务器: 然后就是运行界面: 打开HTTP服务器: 启动成功就会看到上面界面了,必须先启动MQTT服务器再启动HTTP服务器脚本,因为HTTP服务器脚本要连接MQTT服务器。 注意这里的IP地址和端口,接下来要用的; 接下来用你的手机连上路由器,打开微信扫一扫,扫描配网二维码: 注:如果路由器无法上网就先用数据上网扫了配网二维码,然后再连接路由器 接着点击配置设备上网: 然后接填写热点的密码,这个时候不要点击连接,只输入密码就行了: 打开资料根目录里面的XCOM串口调试助手: 选择你电脑对应的串口号,波特率选择115200,打开串口 然后按一下ESP8266模块的复位按键,就会看到有数据: 接收框显示SC_STATUS_FIND_CHANNEL时,就点击手机上的连接按钮: 然后大概十秒钟左右就会看到ESP8266模块收到wifi账号和密码了 如果30秒钟后还是没有收到账号和密码,就是配网失败了,按一下模块的复位,手机返回重新点击连接进行配网 配网成功后就是等待模块自动连接热点,然后等到出现Connection failed!后,就在发送框输入*+你电脑MQTT服务器IP,例如我的IP地址是:192.168.199.181,所以我输入*192.168.199.181,然后点击发送 接着模块会自动复位,等模块复位完了就接着发送#+MQTT服务器端口号: 发送完端口号,模块也会自动复位,并自动连接MQTT服务器: 看到上图就是说明连接MQTT服务器成功了。MQTT订阅的主题是本模块的ID号。
小爱同学是小米推出的一款智能音箱,主要通过语音控制与人进行交互。而ESP8266是一款低成本的Wi-Fi模块,由乐鑫科技推出。它集成了处理器和Wi-Fi的功能,可用于物联网设备等应用。而RGB灯则是由红、绿、蓝三种单色灯组成的一种灯光装置,通过变换三种颜色的光线来呈现出不同的颜色。 将这三者结合在一起,可以实现通过小爱同学语音控制ESP8266控制RGB灯的功能。具体实现步骤如下: 首先,将ESP8266连接到RGB灯的控制电路上,确保连接正确。 然后,通过小爱同学的语音识别功能,将语音指令传输给ESP8266。可以通过小爱同学的开发平台(如米家APP)或者与ESP8266连接的其它设备,将指令传输给ESP8266。 在ESP8266上编写相应的程序,实现接收指令并控制RGB灯变化的逻辑。可以使用ESP8266的相关开发工具(如Arduino开发环境)进行程序编写。 在程序中,根据接收到的指令来控制RGB灯的亮度和颜色。例如,接收到"打开灯"的指令,则将灯的状态设置为开启;接收到"将灯调为红色"的指令,则将红色单色灯亮起,绿色和蓝色单色灯关闭。 最后,通过ESP8266控制电路,将指令转换为对应的电信号,控制RGB灯的亮度和颜色变化。 通过这样的设计,用户可以通过与小爱同学进行语音交互,实现对RGB灯的远程控制。无需触摸开关,只需通过语音指令即可改变灯的状态和颜色,方便快捷。同时,通过与ESP8266的结合,可实现无线控制,提升了用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值