我的猫咪拒绝使用我给她买的猫抓板,所以我制作了这个装置,试图鼓励它用这个而不是我的沙发来抓挠……看看效果如何吧……
刮刮卡的背面附有一张说明卡片,详细说明了如何兑换奖品。MPU6050用于监测与控制板互动的加速度计。如果猫咪使用控制板,伺服电机就会被触发,自动发放奖励零食。
以下是该设备的制作进展预览。目前电子元件尚未完成集成安装。
零件清单
- 阿尔杜伊诺·纳诺(我用的是 Nano Every,但任何其他尺寸相同的款式应该都能正常使用——其他第三方替代品甚至可能更小,那些也应该能正常工作。)
- MPU6050惯性测量单元(IMU)。
- HW-085一个5V升压转换器,用于将电池电压提升至5V,以便为Arduino和舵机供电(其他设备也能正常工作,这里只是我手头现有的设备)。
- 锂离子电池(最大尺寸为40毫米×75毫米×22毫米)。我在电池仓中使用了一块18650电池。该电池仓的容量足够大,能够容纳一个可装两块18650电池的电池仓。
- 飞特奇 FS90 微型舵机
- 电线和连接器
- 一段短小的(6至7毫米长)1.75毫米粗的锉刀片。
- 此商品列表中的所有 3D 打印部件
使用的软件
- 自由CAD用于零件设计
- 阿杜伊诺集成开发环境用于编程并将代码上传至微控制器。
- Fritzing用于线路图的
- 布兰德并且克里塔用于制作本商品列表中的图片
- 使用 Git/GitHub 进行代码版本管理
组装概述
在这里,你可以看到主要的语料库部分。
- 电子设备存放区
左边的部分是为 Arduino 和稳压器设计的。里面有点紧凑。回想起来,我本该把它做得更大些。侧边的插槽用于用两个夹子固定 Arduino 和稳压器(图中未显示)。
右侧较大的隔层专为容纳2节18650型电池支架而设计。 - 底座及底座扩展件
这种两部分组成的复合结构的背面有一个用于安装舵机的插槽。还有一个插槽,用于将舵机电缆引入电子设备箱内。
底座的底部边缘有两个切口,用于容纳漏斗(图中未显示)。 - 雪橇
雪橇将由伺服电机驱动。其运动路径分为三个位置:中间位置,以及位于每个漏斗管下方的两个位置。当雪橇向其中一侧移动时,零食会落入中间的漏斗中。而当雪橇返回中间位置时,零食会通过滑道落下。该控制器会让雪橇在两个漏斗管之间交替移动,从而实现两侧零食的平均分配。
雪橇将通过一根短(6 - 7毫米)的一般 1.75 毫米细丝线与伺服电机相连。 - 底部
组件的底部部分。用于固定雪橇和滑道。 - 急流瀑布
将球导向远离墙壁的方向。
步骤 1 - 插入急流瀑布转换为底部
将降落伞以一定角度推入底部的狭槽中。
完全插入后,将溜槽的前部向下旋转,使溜槽的上边缘与底部表面齐平。
通过用力按压,确保滑道的顶部边缘低于雪橇导轨的表面。否则,雪橇可能会卡住,伺服电机将无法推动它移动。
步骤 2 - 插入雪橇

步骤 3 - 安装附件底座
与前两部分使用的两条长导轨不同,这次连接只需用到四根短螺柱。请确保它们排列整齐。一次性将它们全部安装到位可能有些困难。我需要用点力气(将零件垂直放在桌面上,然后用手背轻轻敲击它们)。
那个雪橇此时它应该能顺畅地滑入插槽中。
步骤 4 - 安装附件底座扩展件并且电子设备存放区
和前一步骤一样,将各个部件拼接在一起可能需要用力操作。不过这次对齐的难度不算太大,因为只需要将两个插槽对齐即可。
组装完成后,请确保所有零件的背面都对齐。
还有四件物品尚未进行描述:
- 阿尔杜伊诺纳米板夹及电压调节器板夹
这些部件用于固定 Arduino 和稳压器。首先将电路板安装到位(只需将它们卡入固定夹中),然后再将它们插入电子元件箱的内壁中。
由于里面的空间相当狭窄,我建议用镊子将它们放进去。

- 电子产品保护套
只是一块盖在电子设备舱上的盖板。等里面所有部件都安装好后,再把它装上即可。 - 霍珀
投食器由两根管道组成,用于盛放零食。它可以轻松滑入底座部分的方形切口中。最后将底座安装到位,再往投食器中装满零食即可。
安装伺服电机
将舵机连接到运行下方代码库中代码的Arduino板上,并给它通电。此时,舵机将转动至90°的位置。断开舵机连接后,安装舵机控制杆。
伺服器平放时,喇叭应保持笔直向上指向。请务必正确安装其方向。您可以从下方两张图片中看到正确的安装位置。当将喇叭插入3D打印外壳背部的插槽时,其方向应朝向内部空间。
现在将那段细丝插入舵机 horn 的大孔中。将 horn 与 Sled 上的插槽对齐,使细丝能够将两者连接起来。现在将舵机滑回原位,并将其卡入插槽中。
如果这样不行,你还可以把底部拆下来,然后将舵机安装到它的插槽里,再把底部重新装上,同时要确保丝料针处于正确位置。
布线
权力
- 连接电池+带着输入+稳压器的引脚
- 连接电池 -带着嗯...稳压器的引脚
- 连接电压调节器的出柜了将其固定到伺服器的红线还有那个阿尔杜伊诺联系方式
- 连接电压调节器的出去吧。将其固定到伺服器的黑色/棕色电线还有那个阿尔杜伊诺联系方式
- 连接上微处理器单元请联系树莓派联系方式
- 连接上微处理器单元请联系阿尔杜伊诺联系方式
逻辑
- 连接上伺服器的数据引脚(通常为黄色或橙色)到阿尔杜伊诺联系人。这是一个PWM引脚。如果你需要使用其他引脚,请确保它是PWM引脚(通常标有~符号),并且别忘了在代码中也更改该引脚的编号(PIN_SERVO)。
- 连接上微处理器单元…
- SCL致阿尔杜伊诺
- 圣地亚哥动物园致阿尔杜伊诺
您可以在“其他文件”板块找到这张图的 SVG 版本。
调试阶段
将代码烧录到Arduino板上这一步骤应该在组装过程中就已经完成了,因为这是在安装舵机时所必需的。
阿尔杜伊诺(Arduino)通电后,最初会等待片刻
接下来,会进行一个简短的校准程序,通过分析加速度计的数据来检测传感器的噪声,此时设备无需移动。在此期间,请勿移动传感器,否则会降低其后续的灵敏度。
校准完成后,伺服电机会轻微震动一下,以示校准已完成。此时,移动微处理器单元
代码中可以更改几个参数来调整其行为。这些参数包括:
- 冷却时间结束:触发分发操作后,下一次触发需等到冷却时间结束后才能再次执行。默认冷却时间为5秒。
- 分配量:触发奖励时,将发放的零食数量。默认值:1
- 分发期时长并且每期分配金额周期是限制一段时间内发放零食数量的一种方式。在一个周期内,只会发放设定好的每周期数量。例如:周期时长设为60分钟,每周期数量设为3(这些是默认值)。在首次触发发放后的60分钟内,累计只会发放3份零食。这可能发生在第一分钟内,也可能在整个周期时间内。一旦发放结束后,该"时段"将被清空,随后又有新的零食准备发放。
- 配药互动时长:这是一种控制触发灵敏度的方法。在发放奖励之前,用户与主控单元
- 分配交互超时时间:一次交互可以由多个小型交互组成,而不必是一次持续很久的交互。这是交互超时前的等待时间。如果在这段时间内记录到其他交互,则这些交互被视为同一交互。默认值:2秒
代码
阿尔杜伊诺GitHub 仓库。
上述部分提到的参数包括以下内容:
- 冷却时间结束
- 配药数量
- 分发周期时长
- 每期发放金额
- 取药互动时长
- 取药交互超时
这些数值以毫秒为单位。
校准过程会使用一个环形缓冲区来存储所有相关传感器读数的最近50个样本。环形缓冲区中存储的数值会被用于计算所有数值的平均值。该平均值将作为检测运动的基准线。
当当前加速度值超过传感器的平均值加上一个阈值时,系统会记录一次交互。该阈值是根据启动期间测量的噪声数据计算得出的。
这样一来,只要传感器数值漂移的速度足够缓慢,就不会成为一个大问题。
打印说明
这些零件已经按照应有的打印方向进行了定位。
- 材质:聚乳酸
- 层厚:0.2毫米
- 填充率:15%
- 尽管对于较大的部件可能没必要,但我还是给所有部件都加了围边。特别是打印"Sled"部件时,由于床面附着力不足,导致模型根本无法粘附在打印平台上。对于两个小夹子,加围边是绝对必要的。
- 只有那些底座扩展件由于伺服器和伺服电缆的悬垂部分过长,该部件需要支撑。我使用了自动生成的支撑结构。以下是我在 Orca Slicer 中为支撑结构上色的效果(绿色:有支撑,红色:无支撑)。

仍有提升空间
- 添加电源开关——这个项目当时时间比较紧,所以我完全忘了考虑这一点了。
- 无需使用时,切断伺服电机的电源
- 树莓派
- 改进运动检测功能,避免在门被安装后移动时误触发警报。
- 改进电子产品保护套,使其能自动闭合。目前这个保护套虽然也能用,但我更希望它能更顺畅地扣合。
- 加装料斗盖,可有效防止零食受到灰尘和(至少一定程度上的)潮湿影响
Tags
Model Source
