从零开始使用ESP8266 + Blinker 实现小爱同学可控可读取状态的多路插座

前言

一直对8266很感兴趣,放寒假嘛,也挺闲,刚好手头有原来买下的Nodemcu,就拿来做个多路开关

参考资料我会放到文章末尾

(渣渣新手练手的小东西,求大佬指导)

一.准备

1.硬件

  • nodemcu(ESP-12E)

  • 双路光耦继电器

2.用到的开发软件

  • Arduino IDE

  • Blinker APP

3.小爱同学(我使用的是一个小爱闹钟)

4.准备环境

5.你自己 Ciallo~(∠・ω< )⌒★

二.安装相关Arduino库&申请Blinker Secret Key

1.安装相关库

  • esp8266 SDK -由于国内众所周知的原因,使用IDE直接安装不太可靠,你可以点击这里查看国内安装ESP8266 SDK的方法

  • Blinker Arduino库-你可以从Blinker官方文档-ESP8266&WIFI接入获取下载地址以及方法

2.申请Secret Key

  • 打开Blinker APP,点击右上角的 “+”

  • 选择独立设备

  • 选择WiFi接入

  • 通信服务商选择阿里云

  • 复制Key

以下为流程图:

三.连接线路

1.继电器相关

在正式开始编程前,我们需要先了解一下继电器模块的模块参数以及说明

2.Nodemcu相关

通过查阅资料可以了解到Nodemcu在编程时可以直接使用PCB上的丝印来表示IO口

3.链接

GND-GND

IN1-D5

IN2-D6

VCC-VV (由开发板提供5V)

四.编写程序&烧写程序

1.源码

/* ******************************************************************* Download latest Blinker library here:* https://github.com/blinker-iot/blinker-library/archive/master.zip* * * Blinker is a cross-hardware, cross-platform solution for the IoT. * It provides APP, device and server support, * and uses public cloud services for data transmission and storage.* It can be used in smart home, data monitoring and other fields * to help users build Internet of Things projects better and faster.* * Make sure installed 2.7.4 or later ESP8266/Arduino package,* if use ESP8266 with Blinker.* https://github.com/esp8266/Arduino/releases* * Make sure installed 1.0.4 or later ESP32/Arduino package,* if use ESP32 with Blinker.* https://github.com/espressif/arduino-esp32/releases* * Docs: https://diandeng.tech/doc*       * * ****************************************************************** * Blinker 库下载地址:* https://github.com/blinker-iot/blinker-library/archive/master.zip* * Blinker 是一套跨硬件、跨平台的物联网解决方案,提供APP端、设备端、* 服务器端支持,使用公有云服务进行数据传输存储。可用于智能家居、* 数据监测等领域,可以帮助用户更好更快地搭建物联网项目。* * 如果使用 ESP8266 接入 Blinker,* 请确保安装了 2.7.4 或更新的 ESP8266/Arduino 支持包。* https://github.com/esp8266/Arduino/releases* * 如果使用 ESP32 接入 Blinker,* 请确保安装了 1.0.4 或更新的 ESP32/Arduino 支持包。* https://github.com/espressif/arduino-esp32/releases* * 文档: https://diandeng.tech/doc*       * * ******************************************************************** -使用ESP8266控制双路光耦继电器,可接入小米小爱,通过小爱控制&查询当前状态-** by Tracker     * My blog:https://baichuan2077.top* *****************************************************************/#define BLINKER_WIFI
#define BLINKER_MIOT_MULTI_OUTLET#include <Blinker.h>//继电器控制口
int relay1 = D5;
int relay2 = D6;bool oState[5] = { false };  //检测用char auth[] = "申请到的密匙";
char ssid[] = "SSID";
char pswd[] = "密码";// 新建组件对象
BlinkerButton Button1("btn-1");
BlinkerButton Button2("btn-2");// 按下按键1即会执行该函数
void button1_callback(const String & state)
{BLINKER_LOG("get button1 state: ", state);digitalWrite(relay1, !digitalRead(relay1));//oState[1] = !(oState[1]);}// 如果未绑定的组件1被触发,则会执行其中内容
void dataRead1(const String & data)
{BLINKER_LOG("Blinker readString: ", data);
}// 按下按键2即会执行该函数
void button2_callback(const String & state)
{    BLINKER_LOG("get button2 state: ", state);digitalWrite(relay2, !digitalRead(relay2));//oState[2] = !(oState[2]);}// 如果未绑定的组件2被触发,则会执行其中内容
void dataRead2(const String & data)
{BLINKER_LOG("Blinker readString: ", data);
}void miotPowerState(const String & state, uint8_t num)             //relay继电器电源状态
{BLINKER_LOG("need set power state: ", state,"num-back", num);unsigned char i = 0; //初始化if(num == 1){i = relay1;}else if(num == 2){i = relay2;}if (state == BLINKER_CMD_ON) {digitalWrite(i, HIGH);BlinkerMIOT.powerState("on");BlinkerMIOT.print();digitalWrite(i, !digitalRead(i));oState[num] = true;}else if (state == BLINKER_CMD_OFF) {digitalWrite(i, LOW);BlinkerMIOT.powerState("off");BlinkerMIOT.print();digitalWrite(i, !digitalRead(i));oState[num] = false;}}void miotQuery(int32_t queryCode, uint8_t num)
{BLINKER_LOG("AliGenie Query outlet: ", num,", codes: ", queryCode);switch (queryCode){case BLINKER_CMD_QUERY_ALL_NUMBER :BLINKER_LOG("MIOT Query All");BlinkerMIOT.powerState(oState[num] ? "on" : "off", num);BlinkerMIOT.print();break;case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :BLINKER_LOG("MIOT Query Power State");BlinkerMIOT.powerState(oState[num] ? "on" : "off", num);BlinkerMIOT.print();break;default :BlinkerMIOT.powerState(oState[num] ? "on" : "off", num);BlinkerMIOT.print();break;}
}void setup()
{// 初始化串口Serial.begin(115200);BLINKER_DEBUG.stream(Serial);BLINKER_DEBUG.debugAll();// 初始化IOpinMode(relay1, OUTPUT);digitalWrite(relay1, HIGH);pinMode(relay2, OUTPUT);digitalWrite(relay2, HIGH);// 初始化blinkerBlinker.begin(auth, ssid, pswd);Blinker.attachData(dataRead1);                 //获取1Blinker.attachData(dataRead2);                 //获取2Button1.attach(button1_callback);              //按钮1Button2.attach(button2_callback);              //按钮2BlinkerMIOT.attachPowerState(miotPowerState);  //注册电源函数1BlinkerMIOT.attachQuery(miotQuery);            //注册回调函数
}void loop() {Blinker.run();
}

2.烧录相关

开发板选择NodeMCU V1.0(ESP-12E Module)

其余保持默认即可

五.Blinker App &小爱绑定第三方设备

1.Blinker App配置相关

我在编写时添加了APP内的按钮控制,所以你也可以通过App来手动控制继电器通路状态

2.小米小爱绑定第三方设备

以我的小爱闹钟为例:

米家-我的-其他平台设备-右上角“添加”-选择“点灯科技”-绑定账户并同步设备

总结一下

最后我们可以通过小爱同学来控制插孔 以及查询插孔状态,还可以通过Blinker App来控制开关

语音指令例:

-打开插座插孔一

-插座插孔二的状态

由于我手头只有双路继电器,并不能展示更多路的控制

欢迎来我的博客玩 Ciallo~(∠・ω< )⌒★

My blog:https://baichuan2077.top/


使用到的参考资料:

点灯科技官方开发文档

nodeMCU 1.0简要数据手册

Arduino论坛参考帖-【智能取暖器DIY】ESP32+blinker接入小爱同学语音控制

Arduino论坛参考帖-小爱同学+Blinker如何控制多个继电器?

Blinker官方例程-MIOT_MULTI_OUTLET.ino

从零开始使用ESP8266 + Blinker 实现小爱同学可控可读取状态的多路插座相关推荐

  1. ESP8266 快速对接小爱同学 语音控制

    ESP8266 快速对接小爱同学 一.环境资料 二.安装配置 三.下载Blinker手机APP,并更改符合小米小爱协议的代码 四.米家绑定Blinker点灯 一.环境资料 1. 硬件:ESP8266 ...

  2. 基于Blinker的小爱同学语音控制【脱坑指南】

    基于Blinker的小爱同学语音控制ESP8266 前些天在使用esp8266时遇到很多小爱不能控制设备问题,现在来叙述我控制过程中所遇到的问题,以及到完整的小爱能成功控制Esp8266的过程. 1. ...

  3. 基于ESP8266+点灯科技+小爱同学控制开门解决方案!

    前言 每次下班回到家就已经很累了,到门口还要到处翻找钥匙,然后开门,是不是觉得很烦,那我们有没有不用通过钥匙开门且成本低的方案了?下面我会教大家基于ESP8266+点灯科技+小爱同学来控制开门的方法 ...

  4. ESP8266-NodeMCU项目(二):ESP8266-NodeMCU+Blinker+DHT11+小爱同学

    错开の折腾经历:ESP8266 NodeMCU 文章目录 前言 一.Blinker 1.Blinker--点灯科技 特性: blinker应用场景: 二.任务开始 1.实验材料 2.安装库文件 3.安 ...

  5. Blinker接入小爱同学做智能家居RGB灯

    如果你有一部非小米手机,怎样连入米家,使用小爱同学语音控制家电呢 此文相关看不懂的知识点 1.esp8266无法下载程序:参考我的另外一篇文章 链接 2.非小米手机小爱同学语音接入 链接 实现功能 小 ...

  6. esp8266wifi继电器点灯科技Blinker和小爱同学控制

    esp8266wifi继电器点灯科技和小爱同学控制 目录 esp8266wifi继电器点灯科技和小爱同学控制 wifi继电器 点灯科技库文件 点灯科技app设置 小爱同学设置方法 控制程序 总结 wi ...

  7. 毕设系列教程-基于Blinker和小爱同学的智能家居设计与现实-系统介绍

    前言 本系列教程只是针对刚入门的小白,大佬不喜勿喷,为了帮助一些小白毕业生顺利毕业,帮助电子爱好者制作自己的智能家居DIY,尽量减少对专业知识的描述,如果有毕业设计要求的同学当然也可以提供毕业论文的参 ...

  8. (含代码)ESP8266+舵机 制作wifi灯控开关(arduino,点灯科技,小爱同学/天猫精灵实现)

    目录 项目涉及的主代码 前言 一.环境搭建 二.开发步骤 1.注册点灯科技平台 2.在点灯科技平台注册设备,获取Secret Key 3.在Arduino IDE中编写代码,写入ESP8266 4.编 ...

  9. blinker+esp8266-01s继电器模块+小爱同学,远程控制开关灯,有按键反馈

    读者按照一下图片自行配置app #define BLINKER_WIFI #define BLINKER_MIOT_LIGHT #include <Blinker.h>#define LE ...

最新文章

  1. ldconfig动态链接库管理以及修改ld.so.conf.d
  2. POJ2349二分+并查集,类似最小树的贪心
  3. python 代码转程序_python将代码转换成网页
  4. 【sprinb-boot】thymeleaf设置缓存
  5. spring boot系列 1: 第一个spring boot: Hello prj
  6. flutter ScaleTransition实现缩放动画
  7. Java讲课笔记12:static关键字
  8. 地图上分成一块一块区域 高德地图_开车用哪个导航最好?看看老司机总结的地图对比,学会不吃亏...
  9. Bootstrap 使用教程 与jQuery的Ajax方法
  10. lottie android 卡顿,lottie动画设计_免异常总结
  11. 工信部发布八项互联网新通用顶级域名服务技术要求
  12. carte集群的搭建笔记
  13. iOS 模拟器安装 .app 方法
  14. redis简单分布式锁实现 超简单的那种
  15. 微信小程序基础(全家福01)
  16. Hexo速度优化及遇到的问题(gulp4、hexo-neat)
  17. 中国为什么产生不了Salesforce?
  18. 开源之夏 2022 来袭,欢迎报名 RadonDB 社区项目
  19. 布朗大学的机器人能一笔一划临摹出蒙娜丽莎,还能模仿你的笔迹
  20. 网络营销方法大全分享

热门文章

  1. [搞笑图片] 搞笑图片
  2. 《小狗钱钱》阅读笔记
  3. “char”知多少。
  4. 这40个冷知识,据说只有1%的人知道……颠覆你的认知!
  5. @CacheEvict
  6. CBS paper防伪安全纸
  7. Mac电脑必装的10款精品软件(上)
  8. 程序员遇到有远见的丈母娘
  9. Android开发工具系列 --Hosts映射
  10. 什么是好的数据分析?化繁为简的力量