|
本帖最后由 Creeper666 于 2020-2-27 12:22 编辑
吸顶灯接入物联网(二)
冬天又来鸟~
天气太冷,睡觉时不想下床关灯?
你可以参考憨豆的做法!
123
是不是简单粗暴!
其实你也可以看我的帖子~
前言
上一篇帖子:[md][http://www.arduino.cn/thread-81388-1-3.html](http://)[/md]
上一篇帖子使用esp-12s+继电器+电源适配器的组合,结果安装好几个月后家里频繁跳闸,偶尔出现只要一开灯就会触发漏电保护的情况。装置拆除后,发现是电源转接板稍微有点短路了,所以我换用了以下更精简的模块:
esp8266继电器模块
esp-01s模块(然而买错了。。。买到了ESP01,不能用,要一波魔改)
5v700mA电源
开始制作!
注意查看板子背面版本信息,由于这里使用Version1.0的模块(无光耦),稍有缺陷,只能搭配ESP01S;假如你使用的是Version4.0(有光耦)的模块,那么ESP01/01S都可以使用。
实际效果如下
123
123
左边为继电器模块,右边为5v电源
(ESP01上有一根线,那是ch_pd拉高的引线。插槽上一些断线是起固定作用)
在日常使用中,作为学生党,手机不可能随时拿在手里。所以这里还制作了一个遥控器,原理就是通过bridge桥接吸顶灯的esp8266,遥控器发送一个与按钮组件数据相同的json数据,以控制吸顶灯开关。
成品如下图:
(18650供电,esp12s模块,已自带稳压,也可以使用WIFI开发板,只需接好相应按钮)
接线!
123
esp8266-01引脚图
(警告:强电接线请在断电情况下操作!)
市电 电源模块
火线 ------------ L
零线 ------------ N
市电 继电器模块
火线 ------------ COM
市电 灯光模组
零线 ----------- N
电源模块 继电器模块
out+ ----------------- 5v
out- ------------------ GND
继电器模块 灯光模组
NO ------------------ L
esp01 继电器模块插槽
VCC --------------- VCC
GND---------------GND
RX(GPIO3)---------GPIO0
RESET--------------RESET(可以忽略不接)
CH_PD-------------CH_PD
遥控器接线
电池+ ---- 开关 ---- 模块+
电池 — ------ 模块 —
(使用WIFI开发板可以忽略以上两行)
模块GPIO14 ---- 开灯按钮 ---- GND
模块GPIO12 ---- 关灯按钮 ---- GND
烧写程序!
ESP-01烧写下方程序:提示:如果你的ESP01/01s可以直插继电器模块,那么请把程序中的端口3改为0。
ver1+ESP01S,ver4+ESP01,ver4+ESP01S这三种情况都可以直插使用。
[mw_shl_code=arduino,false]#define BLINKER_WIFI
#include <Blinker.h>
char auth[] = "MQTT密钥";
char ssid[] = "WIFI SSID";
char pswd[] = "WIFI密码";
#define BT_1 "lb"//后期可自行修改数据键名
BlinkerButton BT1(BT_1);
void BT1_callback(const String & state) {
if (state == BLINKER_CMD_ON){
digitalWrite(3, HIGH);
BT1.text("", "已开启");
BT1.print("on");
}
else if (state == BLINKER_CMD_OFF) {
digitalWrite(3, LOW);
BT1.text("", "已关闭");
BT1.print("off");
}
}
void setup() {
pinMode(3, OUTPUT);
digitalWrite(3, HIGH);
Blinker.begin(auth, ssid, pswd);
BT1.attach(BT1_callback);
Blinker.delay(10000);
Blinker.notify("!卧室的吸顶灯已上线!");
}
void loop() {
Blinker.run();
}[/mw_shl_code]
烧写方法这里不多阐述,请自行搜索。
遥控器程序:
[mw_shl_code=arduino,true]#define BLINKER_WIFI
#include <Blinker.h>
char auth[] = "MQTT密钥";
char ssid[] = "WIFI SSID";
char pswd[] = "WIFI密码";
#define BRIDGE_1 "桥接设备MQTT密钥"
BlinkerBridge BridgeDevice1(BRIDGE_1);
void setup() {
pinMode(LED_BUILTIN,OUTPUT);
digitalWrite(LED_BUILTIN,LOW);
pinMode(14, INPUT_PULLUP);
pinMode(12, INPUT_PULLUP);
Blinker.begin(auth, ssid, pswd);
BridgeDevice1.attach(bridge1Read);
}
void loop()
{
Blinker.run();
if (digitalRead(14) == LOW)
{
BridgeDevice1.print("{\"lb\":\"on\"}");
delay(100);
}
if (digitalRead(12) == LOW)
{
BridgeDevice1.print("{\"lb\":\"off\"}");
delay(100);
}
}[/mw_shl_code]
完成!
安装完成后是介样的:
注意事项
1、务必更新Blinker库!直至完成本帖前一小时库又更新了一次。下载地址:[md][http://codeload.github.com/blinker-iot/blinker-library/zip/master](http://)[/md]
2、LED_BULITIN输出LOW是灯亮
3、程序中“lb”为按键的数据键名,可自行修改,若修改,请两个程序都统一修改
4、遥控器实体按钮接线:已知GPIO4,GPIO5不可以内部上拉,不推荐使用;推荐使用本文提及的GPIO口
5、遥控器联网初始化需要时间,一般为15秒左右,期间所有按钮操作是无效的。
6、由于Blinker的限制,使用遥控器时每发送一次数据需等待10秒才可发送第二次数据
7、Blinker客户端控制按键格式参考如下:
123
8、若还有疑问,欢迎回帖提问!
最后祝大家猪年快乐~
|
|