ESP8266-01S制作智能开关,如何连接物理开关进行双控?
ESP8266-01S制作智能开关,如何连接物理开关进行双控?首先声明一下,我是纯小白,这个问题可能并不是一个复杂的问题,但是我真的解不出来,希望各位大佬能够帮助我解决问题,谢谢!
我用的板子是ESP-01S,接了一个继电器,进行对灯泡的在线控制,但是我想接入一个物理开关,实现物理开关和继电器双重控制灯泡,于是我用双控原理接入了物理开关:
但是这样的话就会有一个问题,因为通过网络控制灯的话,是通过改变继电器端进行控制,当开关接在L1时,通过小爱同学下达开关灯指令,灯的开关是正常的,如果将开关接在L2上,通过小爱同学下达开关灯指令,灯的反应是相反的(下达开灯指令则灯灭,下达关灯指令则灯亮)。
我的构思是:更改程序,当小爱收到开关灯指令,读取继电器状态,如果继电器在常开则打到常闭,如果继电器在常闭则打到常开(不管灯的开关情况,收到开灯或者关灯指令,直接把继电器打到相反位置),但是因为我是一个可怜的小白,不知道能不能在Arduino里把程序改一下实现,自己尝试着改了很久没有成功(因为我不懂语句应该怎么写只能蒙)。
希望大神们可以给我提出宝贵的建议,解决问题,麻烦大家了!:loveliness:
本帖最后由 skygz 于 2021-3-1 15:17 编辑
物理开关 改用 3线可双控用的开关,物理开关 不接 灯泡控制,灯泡交由 继电器控制
物理开关1,2,3 公共脚2 接 8266另一个 GPIO, 1脚接高电平,3脚接地
按代码处理, 不管 是 天猫精灵 还是Blinker APP 还是 实体物理开关任一个开关状态都不会影响了。。
//对于blinker APP里的开关状态 由Blinker.attachHeartbeat(HeartBeat); 进行同步。
其它代码 按常规ChangeRelay(!digitalRead(GPIO_RELAY), 0);控制继电器即可。
bool KeySwitchStatus = false;
bool LastKeySwitchStatus = false; //实体按键 自锁状态
int GPIO_BTNSWITCH = 14; //实体按键
void AlipowerState(uint8_t num)
{
BlinkerAliGenie.powerState(oState ? "on" : "off", num);
BlinkerAliGenie.print();
}
void ChangeRelay(int iState, uint8_t num)
{
if (num == 0){
digitalWrite(GPIO_RELAY, iState);
}
oState = !iState;
HeartBeat(); //同步开关状态给blinker app
}
void ChangeSwitch(void){
Serial.println(F("switch button state: tap"));
ChangeRelay(!digitalRead(GPIO_RELAY), 0);//继电器 IO取反
AlipowerState(0);//同步 开关状态给天猫精灵
pinMode(GPIO_BTNSWITCH, INPUT_PULLUP);
Blinker.delay(500);
}
void KeySwitch(void) //机械开关动作判断
{
KeySwitchStatus = digitalRead(GPIO_BTNSWITCH) == 0 ? false : true;
if (KeySwitchStatus != LastKeySwitchStatus)
{
ChangeSwitch();
LastKeySwitchStatus = KeySwitchStatus;
}
}
void loop() {
Blinker.run();
//实体按钮,自锁 切换继电器状态
KeySwitch();
}
没玩过这个,我想可以用端口取反的命令试试,就是不管命令是开还是关,都把端口取反 已经解决啦:lol:lol:lol 994481336 发表于 2021-2-28 15:49
已经解决啦
怎么解决的啊楼主,我也想学习一下
994481336 发表于 2021-2-28 15:49
已经解决啦
停电再上电,会不会有亮灯的可能?:lol(假设灯关闭的) 994481336 发表于 2021-2-28 15:49
已经解决啦
楼主怎么解决的,可以分享学习一下吗:lol:lol skygz 发表于 2021-3-1 15:12
物理开关 改用 3线可双控用的开关,物理开关 不接 灯泡控制,灯泡交由 继电器控制
物理开关1,2,3 ...
楼主画的图就是用esp8266取代传统双控开关中的一个,你的是两个开关都控制esp8266 skygz 发表于 2021-3-1 15:12
物理开关 改用 3线可双控用的开关,物理开关 不接 灯泡控制,灯泡交由 继电器控制
物理开关1,2,3 ...
直接加到程序里?我不太会 994481336 发表于 2021-2-28 15:49
已经解决啦
怎么解决的?求告知
页:
[1]
2