净水器忘关保护
家里小米净水器1代厨下式400G由于出现几次接水被其它事情打断忘关水龙头,导致厨房水漫金山。现在想通过加个时间控制,就是接水时间超过100s就切断水龙头霍尔开关。
不知道水龙头霍尔开关接入净水器是什么输入方式,目前想法是借助水龙头水质灯来当输入条件,它是两芯线5V双色LED灯。之前以为这个电能驱动小型继电器,后来尝试了下不行,应该是电流太小了。又发现有光耦可以实现更小电流驱动大电流,但双色LED灯会切换正负极,思考了下自己画的草图没什么大问题能实现。
小米净水器LED灯输出驱动EL871光耦,这里测试无问题。本想通过ESP32输出到MOS管来导通或是断开,测试我购买的贴片型的UMW AO3415A
不好焊接(被图片所欺骗以为很大个),好不容易焊好后发现ESP32输出好像无法导通MOS管(待确认,有可能是我没焊接好)。后续又测试用ESP32无法驱动EL871光耦,所以又直接买了成品光耦继电器模块(模块光耦采用的是TWS354B SOP-4
),再测试则无问题,想法初步完成。
设备清单
名称 | 参数 | 备注 |
---|---|---|
安信可ESP32模块 | MicroUSB供电电压5V,22个IO口 | 有CP2102和CH340串口转USB模块,CH340使用也无问题还便宜(驱动) |
EL871光耦 | IF=60mA,Vr=6V,VFmax=1.4V | 照理说ESP32输出3.3V能驱动,但测试未成功 |
光耦继电器模块 | 继电器电压5V,带常闭功能 | 光耦采用的是TWS354B SOP-4 |
5V充电头 | 输出电压5V,1A | 家里废弃的充电头再利用 |
ESP32模块
ESP32模块见前述文章:玩具横道升降杆
光耦模块
某宝很多,按需购买。
电路图
手画草图,第一次思路也没什么大问题。
成品图
暂时没找到合适的盒子,只能用密封袋密封。
代码如下
#include <Arduino.h>
int LED = 19; //设置19号引脚为净水器LED灯OUT输出到ESP32
int valve = 4; //设置4号引脚为输出继电器切断
int count=0;
void setup()
{
//Serial Port begin
Serial.begin (9600);
//Define inputs and outputs
pinMode(valve, OUTPUT);
pinMode(LED, INPUT);
}
void loop()
{
Serial.print(digitalRead(LED));
Serial.print(count);
if(digitalRead(LED) == 0)
{
count++;
if(count > 100) //若净水器输出时间大于100s,则切断阀门霍尔开关。
digitalWrite(valve, 1);
}
else
{
count = 0;
}
delay(1000);
}