配合Blinker的家庭灯改造
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!危险!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!本帖需要一定动手能力和工具,且有操作220V电压的步骤,新手没把握情况下学习就好!!!!!!!!!!!!!!!!!!!!!!!!
在使用Blinker改造普通家庭灯成为可以被各种智能音箱和手机控制的IOT灯时,原来墙上的开关不想拆除想要保留,我们我们往往会遇到以下几种情况1:走一根SIG到灯座的主控又难以走过去
2:将主控代替原来的开关又难以取电,(好一点的,灯开关旁边有插孔,差一点的,灯开关只有火线和回线,单火取电一是价格偏贵,二是遇到LED灯低电流灯,会熄灭不了,遇到一些差一点的,连火线都没)
这时候该怎么办呢,这时候,有一种神奇的东西出现了,那就是这个
随意贴 ,在淘宝上,有各种各样的随意贴,那我们买现成的,本帖完
AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
开个玩笑,淘宝上的随意贴大多数是配套使用的,买回来再改造不显示,且作为一名DIY爱好者,当然要自己做啦
这种随意贴其实原理很简单,就是一个433Mhz模块,这种模块在现实生活中很常见,像门铃,汽车遥控器,电动门遥控器等等都是用的这种模块
而且这种模块在淘宝上也是非常廉价的,本帖使用的模块分别为 灵T1 和 一个不知名的接收解码模块(为什么不使用和灵T1配到的R1 ,我在这里愤怒的点名*下 蜂鸟,没资料,官网打不开,完全一脸懵逼,工作模式 配对 删码完全一脸懵逼,手头也没有其它带编码的发射模块,凑合着用)
这两个模块配合有点问题,只有两路可以用,但对于大多数开关,基本上两路齐活了
大半夜写帖也不没客服讨要资料,只能用着先
这两个模块如下图所示
再加两根0.18的天线和邮费 以及纽扣电池座和几根排针杜邦线就齐活了,不到10块钱搞定了
接下来开始改
对于面板开关的改法非常简单,把里面原来的两根接在一起,使用非 !!自锁!!面板将发射器和开关结合到一起
当然,这样还要重买“昂贵”的面板,所以不如买一个触摸模块0.9块钱贴在原开关上面(纯电池,无风险),工作电流仅增加9uA
买来后只需挑掉上面的LED即可,将VCC连接到电池正极,GND连接到GND,SIG连接到T1即可代替开关
使用电池那多久要换电池呢,咱们算一下
待机 9uA,发射19mA,(保留LED) 电池单颗CR2032 210mAh 假设按下按钮需要500ms,纯待机可用2.6年 假设每天按5次可以用一年多,然而面板剩余空间可不止一颗纽扣电池
整套模块加起来才不到指甲盖大小,使用更高容量的电池可以用更久
而对于接收器,接收器与8266安装于灯座内,电源同灯电源供应,不需要考虑电池使用
而接收器与8266连接也非常简单,就是一个“透传模块”,焊上天线,VCC接3.3V GND接GND D0 D1为开关量输出,当发射器按下相应按钮时,输出高,再加个消抖,就可以在8266上使用了(这里建议把VT也接在8266上,用于添加新的随意贴,默认拉高,当然,为了节约IO也可以不接,单独引出接开关到GND)
下列演示下Blinker代码,基于小爱排插+SmartConfig示例修改而来
!!!!!!!!!! 看清楚 是小爱 别再问 Blinker app里面的按钮怎么控制不!!!!!!!!!!!!!!!!!!!!!!
#define BLINKER_WIFI
#define BLINKER_ESP_SMARTCONFIG //启用SmartConfig
#define BLINKER_MIOT_MULTI_OUTLET //设置为小爱排插类型
#include <Blinker.h>
char auth[] = "Your Device Secret Key";
unsigned long Timers = {0};
bool oState = {false};
void miotPowerState(const String &state, uint8_t num) //小爱控制回调
{
BLINKER_LOG("need set outlet: ", num, ", power state: ", state);
if (state == BLINKER_CMD_ON)
{
if (num == 0)
{
digitalWrite(0, LOW);
BlinkerMIOT.powerState("on", num);
BlinkerMIOT.print();
Timers = millis();
}
else if (num == 1)
{
digitalWrite(4, HIGH);
}
else if (num == 2)
{
digitalWrite(5, HIGH);
}
else if (num == 3)
{
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
}
BlinkerMIOT.powerState("on", num);
BlinkerMIOT.print();
oState = true;
}
else if (state == BLINKER_CMD_OFF)
{
if (num == 1)
{
digitalWrite(4, LOW);
}
else if (num == 2)
{
digitalWrite(5, LOW);
}
else if (num == 3)
{
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
BlinkerMIOT.powerState("off", num);
BlinkerMIOT.print();
oState = 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 ? "on" : "off", 3);
BlinkerMIOT.print();
break;
case BLINKER_CMD_QUERY_POWERSTATE_NUMBER:
BLINKER_LOG("MIOT Query Power State");
BlinkerMIOT.powerState(oState ? "on" : "off", num);
BlinkerMIOT.print();
break;
default:
BlinkerMIOT.powerState(oState ? "on" : "off", num);
BlinkerMIOT.print();
break;
}
}
void setup()
{
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
pinMode(4, OUTPUT); //使用4 5连接灯,因为4 5上电IO没变化
pinMode(5, OUTPUT);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
pinMode(0, OUTPUT); //使用GPIO 0 作为学习按键,两者均有上拉电阻,且没强下拉 不影响
digitalWrite(0, HIGH);
pinMode(14, INPUT); //使用 14 12 作为输入口,433模块默认下拉
pinMode(12, INPUT);
Blinker.begin(auth);
Serial.begin(115200);
BlinkerMIOT.attachPowerState(miotPowerState);
BlinkerMIOT.attachQuery(miotQuery);
}
void loop()
{
Blinker.run();
if (millis() - Timers >= 500 && digitalRead(14)) //按钮一触发
{
Serial.println("Button one Touch");
digitalWrite(4, !digitalRead(4)); //翻转IO
oState == digitalRead(4);
Timers = millis();
}
if (millis() - Timers >= 500 && digitalRead(12)) //按钮二触发
{
Serial.println("Button two Touch");
digitalWrite(5, !digitalRead(5)); //翻转IO
oState == digitalRead(5);
Timers = millis();
}
if (!digitalRead(0) && millis() - Timers >= 1000) //延时1S拉高GPIO0,不能堵塞回调
{
digitalWrite(0, HIGH);
oState = false;
}
}
另外,可以训练小爱添加自己想要的关键词
好了,快去试试,记得有什么问题留言和我说一声
admin1314 发表于 2020-4-7 19:06
你这个不接入网络?
不是有Esptouch了么 app不用岂不是占着一个设备页面?强迫症表示把app内按键加上能物尽其用 学习学习:lol 你这个不接入网络?
学习一下
页:
[1]