懒得下床关灯?吸顶灯接入物联网(二)-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 16514|回复: 32

[分享] 懒得下床关灯?吸顶灯接入物联网(二)

[复制链接]
发表于 2019-1-30 22:25 | 显示全部楼层 |阅读模式
本帖最后由 Creeper666 于 2020-2-27 12:22 编辑

吸顶灯接入物联网(二)
冬天又来鸟~
天气太冷,睡觉时不想下床关灯?
你可以参考憨豆的做法!

123

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

123

123

左边为继电器模块,右边为5v电源


(ESP01上有一根线,那是ch_pd拉高的引线。插槽上一些断线是起固定作用)

在日常使用中,作为学生党,手机不可能随时拿在手里。所以这里还制作了一个遥控器,原理就是通过bridge桥接吸顶灯的esp8266,遥控器发送一个与按钮组件数据相同的json数据,以控制吸顶灯开关。
成品如下图:

(18650供电,esp12s模块,已自带稳压,也可以使用WIFI开发板,只需接好相应按钮)

接线!

123

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]










完成!

安装完成后是介样的:


IMG_20190126_182826.png
注意事项
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

123

8、若还有疑问,欢迎回帖提问!

最后祝大家猪年快乐~









发表于 2019-5-2 17:25 | 显示全部楼层

回帖奖励 +2 金币



这种小功率的灯具,还可以直接使用固态继电器,通过IO口直接驱动,固态继电器内部有光耦隔离,可靠性大幅提高,低功耗,成本低。

TB1oE8YHXXXXXa5aXXXXXXXXXXX_!!0-item_pic.jpg_400x400.jpg
发表于 2019-2-1 19:26 | 显示全部楼层

回帖奖励 +2 金币

猪年了 快乐哈哈哈
发表于 2019-2-2 10:05 | 显示全部楼层

回帖奖励 +2 金币

本帖最后由 ecstart 于 2019-2-2 10:31 编辑

以前在淘宝买过这个esp8266 01S继电器模块,貌似有人反馈说直插不行,要买带光耦的 QQ截图20190202103021.png QQ截图20190202103042.png
 楼主| 发表于 2019-2-2 23:40 | 显示全部楼层
ecstart 发表于 2019-2-2 10:05
以前在淘宝买过这个esp8266 01S继电器模块,貌似有人反馈说直插不行,要买带光耦的
...

这个问题其实我也意识到了,带光耦隔离的是左图version4.0版本,我买的是右图的version1.0,不细看也不知道有这个区别。version1.0应该是淘汰的次品了。
download.jpg TB2eRKOuMmTBuNjy1XbXXaMrVXa_!!1804731589.jpg
发表于 2019-2-3 00:05 来自手机 | 显示全部楼层
那请问 如果是用了光耦的 继电器 那个端口应该改为多少啊,我是从电子论坛跑过来的 只会玩电路 Arduino 还在学习仿造阶段.
 楼主| 发表于 2019-2-3 13:14 | 显示全部楼层
本帖最后由 Creeper666 于 2019-2-3 13:26 编辑
ecstart 发表于 2019-2-3 00:05
那请问 如果是用了光耦的 继电器 那个端口应该改为多少啊,我是从电子论坛跑过来的 只会玩电路 Arduino 还 ...

应该选择GPIO0。version4.0上esp8266的插座GPIO0应该没有下拉的干扰。我这里是因为用了versino1.0才导致不能直插esp8266,只能引线出来使用。这是店家附带的电路图,可以参考一下
ESP-01S Relay v1.0.pdf (14 KB, 下载次数: 81)
ESP-01S Relay v4.0.pdf (18.56 KB, 下载次数: 87)


发表于 2019-2-7 23:09 来自手机 | 显示全部楼层
Creeper666 发表于 2019-2-3 13:14
应该选择GPIO0。version4.0上esp8266的插座GPIO0应该没有下拉的干扰。我这里是因为用了versino1.0才导致不 ...

谢谢 已经把你的程序和我的温控结合了,下一步想弄一个空气传感器 通过APp带的滑条控制阈值 联动继电器!
发表于 2019-2-8 06:59 | 显示全部楼层

回帖奖励 +2 金币

请问楼主不用blinker可以吗两个模块直接通过wifi进行控制吗.
 楼主| 发表于 2019-2-8 11:53 来自手机 | 显示全部楼层
ecstart 发表于 2019-2-7 23:09
谢谢 已经把你的程序和我的温控结合了,下一步想弄一个空气传感器 通过APp带的滑条控制阈值 联动继电器! ...

那祝你早日成功!
 楼主| 发表于 2019-2-8 11:58 来自手机 | 显示全部楼层
lwq1947 发表于 2019-2-8 06:59
请问楼主不用blinker可以吗两个模块直接通过wifi进行控制吗.

我不太懂你的意思...是模块之间互相通讯还是使用WIFI串口之类的软件控制?若是模块互相通讯,文中有写;WIFI串口软件控制应该不可以
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 07:30 , Processed in 0.152484 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表