从零开始使用ESP8266 + Blinker 实现小爱同学可控可读取状态的多路插座
从零开始使用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 实现小爱同学可控可读取状态的多路插座相关推荐
- ESP8266 快速对接小爱同学 语音控制
ESP8266 快速对接小爱同学 一.环境资料 二.安装配置 三.下载Blinker手机APP,并更改符合小米小爱协议的代码 四.米家绑定Blinker点灯 一.环境资料 1. 硬件:ESP8266 ...
- 基于Blinker的小爱同学语音控制【脱坑指南】
基于Blinker的小爱同学语音控制ESP8266 前些天在使用esp8266时遇到很多小爱不能控制设备问题,现在来叙述我控制过程中所遇到的问题,以及到完整的小爱能成功控制Esp8266的过程. 1. ...
- 基于ESP8266+点灯科技+小爱同学控制开门解决方案!
前言 每次下班回到家就已经很累了,到门口还要到处翻找钥匙,然后开门,是不是觉得很烦,那我们有没有不用通过钥匙开门且成本低的方案了?下面我会教大家基于ESP8266+点灯科技+小爱同学来控制开门的方法 ...
- ESP8266-NodeMCU项目(二):ESP8266-NodeMCU+Blinker+DHT11+小爱同学
错开の折腾经历:ESP8266 NodeMCU 文章目录 前言 一.Blinker 1.Blinker--点灯科技 特性: blinker应用场景: 二.任务开始 1.实验材料 2.安装库文件 3.安 ...
- Blinker接入小爱同学做智能家居RGB灯
如果你有一部非小米手机,怎样连入米家,使用小爱同学语音控制家电呢 此文相关看不懂的知识点 1.esp8266无法下载程序:参考我的另外一篇文章 链接 2.非小米手机小爱同学语音接入 链接 实现功能 小 ...
- esp8266wifi继电器点灯科技Blinker和小爱同学控制
esp8266wifi继电器点灯科技和小爱同学控制 目录 esp8266wifi继电器点灯科技和小爱同学控制 wifi继电器 点灯科技库文件 点灯科技app设置 小爱同学设置方法 控制程序 总结 wi ...
- 毕设系列教程-基于Blinker和小爱同学的智能家居设计与现实-系统介绍
前言 本系列教程只是针对刚入门的小白,大佬不喜勿喷,为了帮助一些小白毕业生顺利毕业,帮助电子爱好者制作自己的智能家居DIY,尽量减少对专业知识的描述,如果有毕业设计要求的同学当然也可以提供毕业论文的参 ...
- (含代码)ESP8266+舵机 制作wifi灯控开关(arduino,点灯科技,小爱同学/天猫精灵实现)
目录 项目涉及的主代码 前言 一.环境搭建 二.开发步骤 1.注册点灯科技平台 2.在点灯科技平台注册设备,获取Secret Key 3.在Arduino IDE中编写代码,写入ESP8266 4.编 ...
- blinker+esp8266-01s继电器模块+小爱同学,远程控制开关灯,有按键反馈
读者按照一下图片自行配置app #define BLINKER_WIFI #define BLINKER_MIOT_LIGHT #include <Blinker.h>#define LE ...
最新文章
- ldconfig动态链接库管理以及修改ld.so.conf.d
- POJ2349二分+并查集,类似最小树的贪心
- python 代码转程序_python将代码转换成网页
- 【sprinb-boot】thymeleaf设置缓存
- spring boot系列 1: 第一个spring boot: Hello prj
- flutter ScaleTransition实现缩放动画
- Java讲课笔记12:static关键字
- 地图上分成一块一块区域 高德地图_开车用哪个导航最好?看看老司机总结的地图对比,学会不吃亏...
- Bootstrap 使用教程 与jQuery的Ajax方法
- lottie android 卡顿,lottie动画设计_免异常总结
- 工信部发布八项互联网新通用顶级域名服务技术要求
- carte集群的搭建笔记
- iOS 模拟器安装 .app 方法
- redis简单分布式锁实现 超简单的那种
- 微信小程序基础(全家福01)
- Hexo速度优化及遇到的问题(gulp4、hexo-neat)
- 中国为什么产生不了Salesforce?
- 开源之夏 2022 来袭,欢迎报名 RadonDB 社区项目
- 布朗大学的机器人能一笔一划临摹出蒙娜丽莎,还能模仿你的笔迹
- 网络营销方法大全分享