记得之前有前辈搞过这个项目,隐约记得是用不带WIFI的喂鱼器进行硬件hack,文章找不到了。刚好我也养鱼,刚好我也玩树莓派,刚好把这个过程记录下来。
1. 准备清单
- 树莓派4B
- 艾隆达鱼缸喂食器无WIFI款(按一下喂一次)
- 杜邦线两根
2. Hack喂鱼器
1 2 3
| 买回来的喂鱼器是两节1.5v电源供电,一个按钮,一个旋转马达加一个鱼食仓,按一下按钮旋转一次, 好像也可以长按设置24小时喂食一次或者12小时一次, 这些不重要,我要的功能是程序执行一次,即喂食一次的效果
|
喂鱼器长这样,已经拆掉了鱼食仓
从这个开关引出两条线
像这样
红色与棕色就是引出的两条线,这两条要接到树莓派的引脚上。
2. 接线表
**树莓派针脚** |
**说明** |
**喂鱼器** |
GPIO 26 | | 电源+ |
GND | | 电源- |
就这两根线,也可以用其他的针脚,看你
3. Python编程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| import RPi.GPIO as GPIO import time import sys
def feed():
pin = 26
try: args = sys.argv if(len(args)>=2): pin=int(args[1]) except: pass
print("GPIO: " + str(pin))
GPIO.setmode(GPIO.BCM) GPIO.setup(pin, GPIO.OUT)
GPIO.output(pin, GPIO.HIGH) time.sleep(0.2) GPIO.output(pin, GPIO.LOW) time.sleep(0.2)
GPIO.cleanup()
#记录执行次数 filename=time.strftime("%Y%m%d")
with open(filename,'a+')as f: f.seek(0) line = f.readline() print(line)
#清空文件内容 f.seek(0) f.truncate()
times = 0 if(len(line)==0): times=1 else: times= int(line) + 1
f.write(str(times)) print("Times: "+str(times))
|
1 2 3
| 程序默认使用26针脚,执行一次将在当前路径创建20230403的文件,文件内容记录次数1; 如果文件已存在,则将记录次数+1 sudo python fishfeeder.py
|
4. 显示结果
上面的程序记录了每天的运行次数,然后用LCD 1602a给显示出来,像这样。
5. TODO
- 既然程序可控,那我想要远程控制;将程序做成web服务暴露到外网
- 开一个直播给这个鱼缸,可以看到鱼、喂鱼器的动作以及LCD屏幕显示的信息
- 收到点赞或者刷礼物或者什么的时候LCD显示关联信息,并执行一次喂鱼,让互动看得见
- 鱼脸识别?领养?再说吧~