
开源协议
:GPL 3.0
(未经作者授权,禁止转载)描述
项目由来
这个项目源自于我很久前在Youtube著名开箱博主UnboxThreapy的一期节目,他当时开箱了一款用于计时的骰子,它是一个六棱柱的形状,然后每一个面都标有不同的数字,当用户把产品倒放到对应数字的一面,它就会开始计时,计时完成会有声音提示。
通过它的工作方式其实知道它的内部原理是比较简单的,主要卖的是一个创意。但不得不说,它的确简化了日常生活中需要计时的场景,是一个蛮不错的产品,因此我就想到了复刻这一个产品的想法。
在立项之前,我在TB上就意外搜到了这个产品,竟然还是一个国产公司的产品(但就是不知道是不是从国外抄过来的)。
简介
正如前面所说,这个作品复刻了市面上的一款计时骰子,形状是六棱柱,每一面有数字,代表着计时的时间。当用户把骰子倒置到对应的一面时,它会开始计时,在计时完成后会有声音提示。
除此之外,为了满足不同的需求,六个面的其中一个面是可以由用户自定义计时时间的,用户可通过六棱柱正面(顶面)的两颗按钮进行设置。前面的屏幕会显示系统的基本信息,计时时也会有对应的动画显示计时进度。
项目进度
- 2023.05 | 项目立项
- 2023.08 | PCB板验证完成
- 2023.08 | 外壳设计完成
- 2023.10 | 集成测试完成
设计原理
(一)原理分析
首先,由该产品的功能上可知,硬件是比较简单的。外部一个圆形屏幕用于信息显示,和两个按钮用于用户交互。内部的话需要有姿态传感器,这是它实现翻转即计时的关键,通过识别产品翻转的角度可以判断计时的时间;同时还有蜂鸣器用于提示。当然该产品需要使用锂电池供电,因此内部也需要对应的冲放电管理电路和电量监测电路。
(二)方案设计
在构思产品的时候其实就发现这个产品无论如何都至少需要两块板子才能实现,我的设计是主板位于底部,副板位于顶部。
在主控的选择上,本产品不需要太多的外部设备,因此不需要太多管脚;但像GUI我选择LVGL库,还有MPU6050我打算移植官方的DMP库,像这两个库对内存和CPU算力的消耗特别大,因此应该要选择Cortex-M4的架构,还有大内存的型号,最终选择GD32F303CGT6。兆易创新的这个型号有168MHz的主频,还有1024KB的RAM,能完全满足本项目的需求,关键是还不贵。
姿态传感器一开始有点想选国产的芯片,但考虑到国产的生态还没起来,姿态融合的话要自己写,就没考虑;相比之下,MPU6050有足够多的例程可以参考,官网也有完整的DMP库进行姿态融合处理。
因为这个产品是使用锂电池供电的,因此需要充放电管理,芯片选择经典的TP4059,最高可以实现800mA的充电电流;如果觉得不够快,可以上TP4056,最高可以实现1A的充电电流。
屏幕的话选择一块圆形的LCD屏幕,驱动芯片为GC9A01,使用的是SPI进行通信,240x240的分辨率。
(三)硬件设计
1. 电源部分
因为是锂电池供电,所以肯定只能用LDO进行降压,芯片选择南京微盟的ME611C33M5G-N,最大输出电流500mA。
锂电池充放电管理就比较讲究,我的想法是正常工作时由锂电池单独供电,当用户插入USB接口时断开锂电池对板子的供电,USB接口在为锂电池充电的同时也为板子供电。所以我设计了如下的供电切换电路。
图中的MOS管为PMOS,当USB接口(VBUS)不输入时,电池(VBAT)的电流可以顺利到VIN;当USB接口被接入时,MOS管关闭,此时只有USB接口电流到VIN。VBUS与VIN之间有二极管,防止VBAT对VBUS有灌电流;B5819W这个二极管的压降通常可以达到550mA以上,对于这种小电压的电路还是蛮大的,介意的话可以换成SS14,压降只有500mA左右,参数除压降外都一样,但体积会更大。
锂电池充电电路一般按照数据手册上画即可,反馈电阻(PROG)选择1.5kΩ充电电流就是最高的800mA。
电池的电量监测就简单用一个串联分压,将电池电压减一半,只要满电电压小于单片机的3.3V就可以了。
2. 主控部分
主控一般也是按照数据手册设计即可,但外部晶振一定要加,因为这个产品是一个计时器,使用外部晶振,定时才会精确。还有就是ADC的供电和地用0Ω电阻做了一个隔离,这样可以提高抗干扰性。
3. 姿态传感器
姿态传感器在原理图上使用的是MPU6500,它和MPU6050其实除了价格更便宜外没有太大区别。同时预留了一个可以插MPU6050的排母口,之所以这样设计是因为MPU6500和MPU6050都是QFN封装,手工焊极难,因此如果手工焊不了,可以直接旁边接一个现成的模块。
4. 屏幕
屏幕是固定在副板上的,所以在主板上就是一个FPC的接口用于连接。在前期发现如果要使用硬件SPI与屏幕通信,那么就必须得加上拉电阻,这一点还是蛮坑的。一样我也预留了一个排针用于连接屏幕,因为FPC座手工也是挺难焊的。
5. 用户按键
用户按键也是在副板上的,也是通过FPC与主板连接。按钮的选择了全金属的防水按键,比较耐用,电路中也加了一个双向瞬态抑制二极管用于保护电路。
6. 蜂鸣器
蜂鸣器我选的是有源的,毕竟少焊一个元件是一个,简单地使用一个三极管控制开关。
外观设计
外观设计的话比较糙,因为这是我第一次设计外壳,也没积累什么产品设计的经验。
原版的话是使用了铝合金+扩散板+塑料的设计,很明显有点小贵。于是我根据自己的想法钙成了纯3D打印的方案。
制作过程
(一)PCB
PCB裸板。
焊好的PCB板。
简单移植一个LVGL验证一下。
组装完成后的实物图。
总结
这次星火计划的项目是我有史以来做过最具挑战性的项目,从PCB设计、外壳设计、元器件焊接、代码都需要我一人搞定,对于从来没有设计过产品的小白来说是一个巨大的困难,很显然出来的成品也不尽人意。
但总归借这个机会学到了很多东西,希望下一次的星火计划能再接再厉吧。
附件
项目的固件和3D外壳文件已开源,在下方可以下载。
设计图

BOM


评论