16716浏览
查看: 16716|回复: 0

[ESP8266/ESP32] 猫咪饮水机V1.0 - 让猫咪每一口水都新鲜

[复制链接]
本帖最后由 二哈哈哈哈 于 2024-9-3 23:29 编辑

你多久给猫换一次水?你是否在为每天给猫换水发愁?你是否在担心猫咪喝水不干净容易生病而发愁?
项目背景
夏天到来,除了忍受每天的炎热,还需要每天给猫主子换水,因为一天不换水,水碗中就会滋生各种细菌、悬浮物,容易导致猫咪生病。市面上常见的饮水机只是循环水,并不能更换水,因此并不能做到让水干净。
市面上大部分猫咪饮水机的方式都如下图,水泵将水箱里的水抽到水盘中,然后通过滤芯过滤大颗粒杂质,但是这样并不能过滤细菌,而是使细菌杂质不断循环。

猫咪饮水机V1.0 - 让猫咪每一口水都新鲜图2猫咪饮水机V1.0 - 让猫咪每一口水都新鲜图3

项目成品展示
猫咪饮水机V1.0 - 让猫咪每一口水都新鲜图16

项目方案
经过两天半的思考总算想到两种自动换水方案
方案一
将水碗固定在舵机上,舵机可以控制水碗翻转,实现将水倒入污水箱的效果,而水泵可以将干净水抽到水碗中,实现自动补水,最终实现干净水和污水分离的效果。但是由于这个方案机械结构复杂,所以放弃了该方案。
猫咪饮水机V1.0 - 让猫咪每一口水都新鲜图1

方案2
由水泵2将污水由水碗抽到污水箱中,然后由水泵1,将干净水箱中的水抽到水碗中。该方案不需要复杂的结构,最终选用了该方案。
猫咪饮水机V1.0 - 让猫咪每一口水都新鲜图4

项目实施材料准备
365水泵 *2
该水泵可以自吸水,常用于茶吧机等设备上,需要12V供电
选用该主控的原因是该主控可以同时驱动两路电机,刚好用于控制两个水泵,并且该主控支持12V输入,只需一路电源输入即可,减少电路的复杂性
12V电源*1
用于给设备供电(部分路由器电源头就满足)
按键*2
一个用于手动加水,一个用于手动排水。
水碗*1
6*8硅胶水管 n米(视进出水方式而定)
用于输送水。
大转接头*1
用于连接碗与水管
猫咪饮水机V1.0 - 让猫咪每一口水都新鲜图5

8mm L型转接头*n(视水管走向而定)
用于调整水管走向,避免弯折
猫咪饮水机V1.0 - 让猫咪每一口水都新鲜图6



其他材料
● 热熔胶
● 铸工胶
● 盒子
● 瓶子*2
电路连接
● 在M1连接第一个水泵用于抽水
● 在M2连接第二个水泵用于放水
● 在IO3连接第一个按键用于手动控制加水
● 在IO6连接第二个按键用于手动控制放水
● 在VIN接入12V电源适配器用于给整个系统供电
猫咪饮水机V1.0 - 让猫咪每一口水都新鲜图7



水路连接
参考方案2示意图
其他结构制作
● 通过铸工胶将转接头连接到不锈钢碗上
猫咪饮水机V1.0 - 让猫咪每一口水都新鲜图10猫咪饮水机V1.0 - 让猫咪每一口水都新鲜图8



● 对盒子进行开孔,用于放置碗,穿过水管、电源线、按钮
猫咪饮水机V1.0 - 让猫咪每一口水都新鲜图11
猫咪饮水机V1.0 - 让猫咪每一口水都新鲜图9

● 将水碗通过热熔胶粘在外壳上




猫咪饮水机V1.0 - 让猫咪每一口水都新鲜图14

● 将所有设备进行组装,并将所有硬件放在盒子内
猫咪饮水机V1.0 - 让猫咪每一口水都新鲜图12猫咪饮水机V1.0 - 让猫咪每一口水都新鲜图13



项目代码
  1. // 定义水泵引脚
  2. const int EN1 = 0; //M1电机PWM控制
  3. const int PH1 = 1; //M1电机方向控制
  4. const int EN2 = 2;//M2电机PWM控制
  5. const int PH2 = 10;//M2电机方向控制
  6. const int buttonPin1 = 3;
  7. int buttonState1 = 1;
  8. const int buttonPin2 = 6;
  9. int buttonState2 = 1;
  10. uint8_t firstAdd = 1;  //上电加水标志位
  11. // 计时相关变量
  12. unsigned long previousMillis = 0;
  13. const long interval = 2 * 60 * 60 * 1000; // 2小时的毫秒数
  14. void setup() {
  15.   // 设置引脚模式
  16.   pinMode(EN1, OUTPUT);
  17.   pinMode(PH1, OUTPUT);
  18.   pinMode(EN2, OUTPUT);
  19.   pinMode(PH2, OUTPUT);
  20.   pinMode(buttonPin1, INPUT_PULLUP);
  21.   pinMode(buttonPin2, INPUT_PULLUP);
  22.   delay(3000);
  23. }
  24. void loop() {
  25.   /******上电后进行一次排水-加水动作********/
  26.   if(firstAdd == 1){
  27.     firstAdd = 0;
  28.     //排水
  29.     M2_Forward(200);
  30.     delay(4000);
  31.     M2_Forward(0);
  32.     delay(100);
  33.     //加水
  34.     M1_Forward(100);
  35.     delay(4000);
  36.     M1_Forward(0);
  37.   }
  38.   /******定时进行换水动作********/
  39.   // 获取当前时间
  40.   unsigned long currentMillis = millis();
  41.   // 检查是否到了2小时的间隔,如果达到则加水
  42.   if (currentMillis - previousMillis >= interval){
  43.     previousMillis = currentMillis;
  44.     //排水
  45.     M2_Forward(200);
  46.     delay(4000);
  47.     M2_Forward(0);
  48.     delay(100);
  49.     //加水
  50.     M1_Forward(100);
  51.     delay(4000);
  52.     M1_Forward(0);
  53.   }
  54.   
  55.   /******手动控制加水、排水********/
  56.   buttonState1 = digitalRead(buttonPin1);
  57.   buttonState2 = digitalRead(buttonPin2);
  58.   if(digitalRead(buttonPin1) == LOW){  //手动加水
  59.     M1_Forward(100);
  60.   }else{
  61.     M1_Forward(0);
  62.   }
  63.   if(digitalRead(buttonPin2) == LOW){  //手动排水
  64.     M2_Forward(200);
  65.   }else{
  66.     M2_Forward(0);
  67.   }
  68. }
  69. //控制电机加水
  70. void M1_Forward(int Speed1)
  71. {
  72.   analogWrite(EN1, Speed1);
  73.   digitalWrite(PH1, HIGH);
  74. }
  75. //控制电机排水
  76. void M2_Forward(int Speed1)
  77. {
  78.   analogWrite(EN2, Speed1);
  79.   digitalWrite(PH2, HIGH);
  80. }
复制代码

最终效果
注:动图进行了加速处理
猫咪饮水机V1.0 - 让猫咪每一口水都新鲜图15






猫咪总算喝上了干净的水

后记
不到一周 “饮水机 - 噶”
由于没防到猫手贱和防水措施没做好,水进入了盒子内部,造成电机短路




猫咪饮水机V1.0 - 让猫咪每一口水都新鲜图17猫咪饮水机V1.0 - 让猫咪每一口水都新鲜图18


项目可升级的点
● 水碗恒温:可在碗下加发热丝,使水碗中的水保持恒温,让猫咪在冬天不用喝凉水
● 超声波清洁碗:可在碗下增加超声波换能片,通过超声波清洁碗,更加有效的防止碗上产生生物膜
● 增加水碗水位检测传感器:防止猫咪喝完了水不能及时添加(此时可以把自动换水时间调整为8小时),节约水,减少更换污水箱、干净水箱的频率
● 增加水箱的水位检测传感器:及时提醒添加水
● 项目联网:可远程监控饮水机的情况(当前使用的主控是ESP32只需优化代码即可)
● 水电分离!!水电分离!!水电分离!!:将水泵电路放到其他盒子里,防止猫咪手贱!!!
最后的最后,猫咪饮水机V2.0筹备中,敬请期待
















您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail