家里小米净水器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模块见前述文章:玩具横道升降杆

光耦模块

某宝很多,按需购买。
guangou-jidianqi.png

电路图

手画草图,第一次思路也没什么大问题。
circuit-diagram.png

成品图

暂时没找到合适的盒子,只能用密封袋密封。
demo-1.png
demo-2.png

代码如下

#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);
}

标签: ESP32, 净水器

仅有一条评论

  1. [...]网上有很多将其改为通用滤芯的教程,本着折腾物尽其用的精神(qiongkurenmin),也对其进行改装,将3#RO膜改为通用3013膜,4#活性炭滤芯改为T33活性炭通用滤芯。RO膜单次用水时长越长越好,上次改装的净水器忘关保护暂时取消。[...]

添加新评论

选择表情