小爱同学+blinker+esp8266实现千里点灯


前言

手上有个小米手机,手机内置了小爱同学APP,早就听说小爱能通过wifi和蓝牙控制一些智能家居,手头正好有esp01s 模块, 这个模块正好板载了一颗led灯,于是我们第一步就是通过小爱同学控制这个灯,blinker的作用 主要是帮我们实现局域网和公网的数据传输桥梁,于是就开始了探索之旅。


一、准备材料:

  1. 带有小爱同学的设备(小爱音箱、小米手机等等)
  2. ESP8266模块
  3. USB转TTL串口模块
  4. 注册blinker账号
  5. arduino的IDE开发环境

二、开发步骤

1.arduino开发环境准备

详细的环境搭建步骤就不再赘述了,网上教程非常多,也可以参考我的文章:Arduino+esp32+blinker第一课点灯, 如果困难可以加我探讨。

此步骤主要完成:

  • arduino 软件安装
  • esp8266 库安装
  • blinker 库安装

2.注册blinker账号

  • 第一步:下载blinker APP
    下载地址:blinker APP
    -第二步: 安装并配置

app安装完成后,增加一个设备在这里插入图片描述
为设备增加一个按钮 方便测试

在这里插入图片描述
在这里插入图片描述

3 编写程序

重要程序

#define BLINKER_WIFI
#define BLINKER_MIOT_LIGHT//支持小爱同学
#define BLINKER_WITHOUT_SSL      //非SSL加密通信接入,省堆栈  
#include <Blinker.h>

#define LED   2  // 板子上的灯 
char auth[] = "fab3464d05**"; // blinker app提供的秘钥
char ssid[] = "xiaomi";// wifi 名字
char pswd[] = "********";// wifi 密码

bool wsState;
uint8_t wsMode = BLINKER_CMD_MIOT_DAY;
// 新建组件对象
BlinkerButton Button1("btn-abc");//注意:要和APP组件’数据键名’一致
 
// 按下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, LOW);  //低电平点灯
 BlinkerMIOT.powerState("on");
 BlinkerMIOT.print();
 wsState=true;
 }
 else if (state == BLINKER_CMD_OFF) {
 digitalWrite(LED, HIGH); //高电平开灯
 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);
 // 初始化IO
 pinMode(LED, OUTPUT); 
 digitalWrite(LED, HIGH); // 初始化 led 高电平 ,则灯熄灭状态
 
 // 初始化blinker
 Blinker.begin(auth, ssid, pswd);
 Button1.attach(button1_callback);
 
 //小爱同学务必在回调函数中反馈该控制状态 
 BlinkerMIOT.attachPowerState(miotPowerState);//注册回调函数
 BlinkerMIOT.attachQuery(miotQuery);
} 

5 USB-ttl 和esp01s 接线

我们在改为代码之后就可以往esp8266开发板内烧写程序了

注意

一般所购买的wifi模块,通过数据线就可以连接进行烧写
特殊的我们需要用到usb-ttl 来为其烧写程序
在这里插入图片描述
实物图片:
在这里插入图片描述

如果嫌麻烦 CH-PD不上拉也可以,直接接高电平。
esp8266-01模块烧录时,需要把gpio0拉低,即接地。烧录完成后拔掉拔掉gpio0的杜邦线。烧录速率选择 115200 bps

6 代码烧录:

Arduino 选择烧录的板子,选择esp8266 选择 led2,其他参数参考下图即可。点击代码上传即可 烧录到 esp01s中。
在这里插入图

7 手机上的小爱配置

打开米家APP按照如下图配置:
进入米家APP,点击「我的」—「其他平台设备」,添加点灯科技,进入后,点击同步设备,就会看到在Blinker中创建的设备。
在这里插入图片描述

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


总结

等我们一切完成就绪就可以通过小爱同学来控制我们的设备了,这里只是简单的打开开发板上面的小灯,下一节我们来说用小爱同学控制一台电风扇。

*玩转esp8266 ESP32 喜欢的朋友请加入我微信 ilinker32 24小时在线,有偿技术咨询 *

如果我的创作对你有帮助 ,那么你的鼓励将是我创作的最大动力!非常感谢。

  • 29
    点赞
  • 239
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
首先,ESP8266是一款具有Wi-Fi功能的微控制器模块,它可以与Arduino UNO R3进行通信和控制。而光照传感器用于检测环境的光照强度。下面我将用华而不实的例子来说明如何使用ESP8266和Arduino UNO R3进行光照传感器的闪烁灯实验。 首先,我们需要连接ESP8266和Arduino UNO R3。将ESP8266模块的VCC引脚连接到Arduino UNO R3的5V引脚,将GND引脚连接到Arduino UNO R3的GND引脚,将ESP8266的RX引脚连接到Arduino UNO R3的TX引脚,将ESP8266的TX引脚连接到Arduino UNO R3的RX引脚。 接下来,我们需要连接光照传感器。将光照传感器的VCC引脚连接到Arduino UNO R3的5V引脚,将GND引脚连接到Arduino UNO R3的GND引脚,将光照传感器的信号引脚连接到Arduino UNO R3的A0引脚。 接下来,我们需要编写Arduino代码。首先,导入ESP8266WiFi和SoftwareSerial库。然后,在setup函数中初始化串口通信和Wi-Fi连接。在loop函数中,读取光照传感器的数值,并根据数值控制ESP8266的GPIO引脚输出高低电平,以实现闪烁灯效果。 最后,将代码上传到Arduino UNO R3中,并将ESP8266连接到Wi-Fi网络。当光照传感器检测到较强的光照时,闪烁灯会快速闪烁;当光照传感器检测到较弱的光照时,闪烁灯会慢速闪烁。 总结来说,使用ESP8266、Arduino UNO R3和光照传感器可以实现一个具有可调节闪烁频率的光照传感器闪烁灯实验。这个实验可以用于对光照强度的实时监测和视觉提醒。相信这个简单的实验可以帮助大家更好地理解ESP8266和Arduino UNO R3的应用。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值