百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

树莓派DIY智能无臭猫便盆,拉完粑粑自动通风,成本不到400元

itomcoil 2025-02-13 12:31 10 浏览

萧箫 编辑整理
量子位 报道 | 公众号 QbitAI

每个铲屎官最痛苦的事情之一,莫过于处理猫咪的“生化武器”——猫屎。

只要猫拉了粑粑,气味就会飘出来,在铲屎时还能闻到一股巨酸爽的味道。

好消息,来自硅谷的一个华人工程师,想出了一个绝妙的方法:给猫做个智能厕所!

结合小零件,一块树莓派就能将猫砂盆升级成自动通风猫厕,每当猫咪“解决完生理问题”,它就能自行启动风扇,进行散味。

简直是铲屎官福音!来看看制作流程。

树莓派控制,红外自动检测

硬件上,完整的零件清单如下:

树莓派Zero W、80mm×80mm的风扇(CPU散热器)、12V电源、1截空调通风管、适量PIR运动传感器、适量1kΩ电阻、三极管、1个降压-升压变换器

从亚马逊官网给出的价格来看,这些硬件的总成本在400元左右

其中,10美元的树莓派Zero W是整个装置的核心,用于控制电路什么时候运行。

作者表示,树莓派也可以用更便宜的Pico来代替(5美元),但他想了解自家猫咪的具体拉粑粑时间……因此选择了贵一点的Zero W,可以远程登录查看数据。

风扇用于散味,空调通风管则用于排气。

至于PIR(红外)运动传感器,则用来检测猫咪什么时候进猫砂盆、什么时候出去,以决定风扇通风的时间。

此外,还需要一个降压-升压变换器(此处用了汽车USB充电器代替),因为风扇的供电电压需要达到12V,但树莓派的额定运行电压却在5V。

同时,树莓派的输出电压只有3.3V,因此在树莓派输出3.3V信号的时候,还需要一个三极管来控制12V电路的开启和关闭。

整体搭建电路图如下(其中333Ω的电阻,由3个1kΩ的电阻并联获得)

其中,PIR指运动传感器,Pz指树莓派(输出通过333Ω电阻与三极管相连),fan指风扇,而风扇和树莓派之间的就是三极管。

至于图中的5V电压,可以直接用降压变换器,也可以对汽车USB充电器进行一个改装:先将它拆开,再把充电器的金属尖端用电线焊接替代,最后连接到主电路中。

到这里,硬件部分的组装就已经完成,搭建到猫砂盆上方后,看起来是这个样子的:

再用胶带或者热熔胶枪组装起来就行。

当然,这也只是完成硬件部分的制作,软件上还需要对树莓派进行设置。

自动通风,还能记录“生理”时间

首先,需要设置树莓派中存储数据用的SD卡、连接和启动等。

然后,就可以开始往里面填程序了。

由于作者想要记录猫咪的拉粑粑时间,因此还安装了Python和数据库MariaDB:

sudo apt install mariadb-server-10.0 python3-pip
pip3 install mariadb

除了数据库以外,还需要一个可以控制树莓派GPIO引脚的Python库GPIO ZERO(GPIO引脚指图中这部分)

sudo apt install python3-gpiozero

安装后,就可以运行主要的程序了(Python编写),这部分的原理,是在传感器触发后,将风扇启动10分钟:

FAN_ON_DURATION = 10 * 60  # 10 min
outpin = LED(22)
pir = MotionSensor(27, sample_rate=1) # I used the GPIO pin 27
while True: 
  pir.wait_for_motion()
  outpin.on() 
  time.sleep(FAN_ON_DURATION)
  outpin.off()

同时,作者还希望能在整个系统启动时,自动运行程序,因此还写了另一个文件,将它命名为<(你的)服务器名称>.service,确保它在mysqld启动后就能运行:

[Unit]
Description=Motion detection service for cat litter
After=mysqld.service
[Service]
ExecStart=/usr/bin/python3 -u motion_detection.py
WorkingDirectory=/home/pi/
StandardOutput=append:/home/pi/execution.log
StandardError=append:/home/pi/execution.log
Restart=alwaysUser=pi 
[Install]
WantedBy=multi-user.target

放进/etc/systemd/system文件夹,并允许跟随系统启动:

sudo systemctl enable .service

Done!现在软件部分也搞定了,可以愉快地给自家猫用上了,据作者表示,打开风扇时,即使站在旁边,也基本闻不到味道。

祝:埋屎必中,便便顺利~(手动狗头)

解决更多铲屎官难题

这个智能“无臭”猫砂盆的作者,目前在硅谷工作,自我介绍是一名“攻城狮”。

事实上,作者自己家里就有猫,还是两只:

除了这个猫砂盆,作者此前还自己做过家用版大数据处理平台、以及树莓派运行的GPS跟踪器。

作者表示,下一步计划研发一个新的装置,阻止猫咪到桌上和自己抢饭。

这年头,当个铲屎官都得学点黑科技了。

GitHub地址:
https://github.com/xinixgit/rpi/tree/main/pi-cat-litter

参考链接:
https://xinxindai.medium.com/build-a-ventilated-cat-litter-box-with-pi-zero-ce943d55b446

— 完 —

量子位 QbitAI · 头条号签约

关注我们,第一时间获知前沿科技动态

相关推荐

MySql安装与使用

介绍mysql是目前最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(RelationalDatabaseManagementSystem:关系数据库管理系统)应用软件...

使用AI来搭建一个用户系统,步骤应该是怎样的呢?

我给AI的第一个问题是这样的:创建一个java21+springboot3.4+mysql21的一个用户系统,需要使用JWT,支持多语言,使用swagger,这个用户系统都应该包含哪...

Mysql 8.4数据库安装、新建用户和数据库、表单

1、下载MySQL数据库yuminstall-ywgetperlnet-toolslibtirpc#安装wget和perl、net-tools、libtirpcwgethtt...

介绍如何在 MySQL 中创建新用户并授予权限?

MySQL是一个开源的关系型数据库管理系统,常用于存储和管理大量的结构化数据。在使用MySQL进行数据管理时,为了安全和方便管理,通常需要创建新用户并授予相应的权限。本文将介绍如何在MySQL...

Mysql创建用户和权限管理

MySQL是一个多用户的数据库,最高权限管理者是root用户,它拥有着最高的权限操作。包括select、update、delete、update、grant等操作。如果有其他用户想使用MySQL,那么...

Mysql:创建用户详解

1、创建并授权用户--创建可从任何主机连接的用户CREATEUSER'myuser'@'%'IDENTIFIEDBY'mypassword'...

Python 实现【字符匹配】

defis_match(s,pattern):m,n=len(s),len(pattern)dp=[[False]*(n+1)for_inrange...

Python自动化:openpyxl工作簿、工作表相关操作

新建工作簿、工作表importopenpyxl#创建空白工作簿,会自动生成一个工作表:Sheetwb=openpyxl.Workbook()#新建工作表#create_sheet...

python每日一练之三数排序

概述今天主要分享一个三树排序的实例,大家可以自己测试玩一下~需求输入三个整数x,y,z,请把这三个数由小到大输出。方法一:如果是要练练手就随便找个排序算法实现一下#usr/bin/python#...

Python输出语句print()

Python中的输出语句主要通过内置函数print()实现,它可以灵活输出文本、变量、表达式结果等内容到控制台或其他文件。以下是详细介绍及示例:一、print()基本语法print(*object...

Python设置excel表格格式,这3个属性6个模块,要表格好看

前言:通过前面两篇文章,我们用Python处理excel数据得到了结果并保存了文件。打开文件会发现,文件里表格是没有设置格式的,还需手动调整行高列宽等样式,很麻烦。其实,通过Python库模块,能轻松...

python入门-day5-循环语句

以下是为“Day5:循环语句”设计的详细学习任务计划。这个任务旨在帮助初学者掌握Python中的循环语句(for和while),并通过实践理解它们的应用场景。Day5:循环语句学习目标...

Python基础编程必备!涵盖常见语法与操作的代码示例合集

以下是一份Python基础代码示例合集,涵盖了常见的语法和操作,适合初学者快速掌握基本编程概念:1.基础语法python#打印输出print("Hello,World!")#变...

Python循环语句实用教程

一、循环基础1.while循环基本语法:while条件表达式:循环体代码while循环流程图:应用示例:#简单计数器count=0whilecount<5:...

在 Python 中如何向一个已排序的数组(列表) 中插入一个数呢

在Python中如何向一个已排序的数组(列表)中插入一个数呢?方法有很多种,关键在于原来数组是什么样的排序,用到啥排序方法效率高,就用哪种。我们来练习其中的几种插入方法,另外也掌握下遍历数组的...