共计 2018 个字符,预计需要花费 6 分钟才能阅读完成。

我可不想再陷入找不到马超的焦急时刻中,所以得想办法让它发出点动静!
项目背景
其实市面上早就已经存在了一些宠物定位器,通过 4 G 模组和 GPS 模组,实现宠物的实时定位功能,用户通过手机 APP 就可以很方便的查看。市面上的宠物定位器价格大概就是几十到几百不等,主要是功能、做工等造成的差异。

更高级点的也可以选择 Apple 出品的 Airtag,甚至直接用个小天才儿童手表来得更方便,这种跨界的反差带来的是极致的性价比和成熟可靠。
对于宠物丢失这件糟心事上,市面上确实已经有了很多的产品可以应对了,决定消费者选择的无非就是价格、佩戴方式、定位便捷性和准确性等几个因素。
作为一个专注捣腾的极客,我更倾向于亲自下场,设计一款专属于马超定位器。
项目构思
首先需要明确的是使用的场景,是户外还是居家使用,这其中也免不了收到宠物的种类和性格影响。
就拿马超来说,它从小没有经历过社会化训练,因此十分恐惧外面的世界。虽然作为一只狸花猫,它常给人留下凶狠“丧彪”式的大众印象,但具体到马超这个个体,便跳脱出了常规的刻板印象。
虽然经过上次的跳楼事件,让它突然增加了跳楼的可能性,但是这毕竟对它来说还是十分少有的经历。
说实话我也赌的成分。
我设想的场景是,在家里的时候,我需要确定马超在什么位置,可以通过手机等设备向它发送定位请求,然后设备可以给出回应。
所以需要明确的就是以下几个问题:
1. 通信方式
既然是居家使用,那么使用 WiFi 局域网就显得十分方便了,当然通过蓝牙或者 Lora 模组也可以实现。考虑到最终成品的体积和重量,我认为使用乐鑫的 ESP 32-C 3 系列芯片非常合适。
省去了 GPS 和 4 G 模组,从设计难度、成本、成品体积上都得到了很好的控制,需要应对的风险便是马超再次“信仰之跃”,从此了无音讯。
找猫这件事,我觉得要分几步走,首先就是要确认,猫,到底在不在家?
如果通过程序或者路由器后台确认了设备在线且正常通信,其实问题就是不大。相反,如果确定到了设备离线就要考虑考虑是没电了还是猫咪远走高飞了,至于再下楼去怎么找,这是后话。
2. 功耗续航
通常来说使用可更换式的电池如 CR 2032 对用户来说更加方便,但是如果系统整体功耗做不下来就难免要经常更换也挺浪费和费事的。所以对于设备来说,务必要将功耗做到很低,系统仅在需要定位的时候唤醒,其余时间进入低功耗休眠状态。
对于这个项目来说,我准备使用可充电式锂电池,并且配备充电接口,可进行反复充电,续航目标计划做到 一周一充即可。
3. 定位方式
前面说到,通过 WiFi 在室内进行通信,定位器设备这边需要做出一些响应来方便查找确定具体位置。最简单的无非就是使用蜂鸣器,收到定位请求后周期性发出声音来快速进行定位。如果是在夜晚,如果配上 LED 闪烁效果更加。
其实据我所知,宠物项圈还有一些带有电击功能,通过接触式极片给宠物施加轻微电击来让宠物响应主人需求。这件事我想如果征求一下马超的意见,相信它会毫不犹豫的选择前者吧。
基本需求已经确定好了,接下来就可以开始具体的电路设计了!
电路设计
电路部分总共分成了五个部分,分别式 USB 接口电路、供电电路、主控电路、充电电路和蜂鸣器电路。

USB 接口选择了Type-C,具备烧录下载和供电充电的功能。其实为了节省空间和体积,应该使用接触式触点进行充电和烧录下载,这样更符合市场上的常规设计,但是考虑到 DIY 的可行性,还是选择了传统老派做法。好在 ESP 32-C 3 支持 USB 下载,这样省去了不少电路。

因为 ESP 32-C 3 的系统功耗很低,加上精简的外围设计,使用一颗 5 V-3 V 3 的 LDO 即可满足系统供电需求。使用了经典的 MOS 双电源切换电路,可以自动选择 USB 供电和电池供电,并同步增加了供电开关。

MCU 部分使用 ESP 32-C 3 最小系统电路,包括了外部天线设计、外部晶振电路和必要的外围电路。

考虑到后期的调试需求,先保留了下载和复位按键。
充电部分为了简化电路,使用了 TP 4054 方案,极简的外围电路,保留最基本的充电功能。
另外使用了一组分压电阻通过 ADC 采集电池电量信息,后期也方便应用端提示用户进行充电相关操作。

最后就是蜂鸣器电路部分,采用了 3 V 3 的 MLT-8530 无源蜂鸣器,通过三极管进行驱动。

因为是要佩戴在宠物身上,所以对电路板体积需要严格管控,所有阻容器件都选择了 0402 封装,使用 4 层板设计,经过多次调整布局,最终将电路板在 2 cm x 2 cm 的大小完成了 Layout 工作。



因为要做小体积,所以就省去了常规的螺丝孔设计,在 PCB 两侧增加了两个半孔卡槽,后续配合外壳进行装配。电池也没有使用连接器进行连接,选择直接焊接在电路板上,这种设计在很多紧凑式产品中很常见。
结语
“Ping”,是用来检查网络是否通畅或者网络连接速度的命令。
我想,在家里找马超时不也是在不断“Ping”它,期望得到它的返回值,这本质上是一样的。
“Purr”,是表示猫发出呼噜声的意思,二者一结合,“PurrPing”便应运而生了!
希望马超别在走丢了!