欢迎光临散文网 会员登陆 & 注册

赛博沙漏(含源码)

2023-08-31 11:34 作者:黑人黑科技  | 我要投稿

        沙漏,曾是古人主要的计时工具,随着时代的发展,更多更先进的技术工具逐渐取代了它,从机械钟表到石英钟表,从数码管到电子表,从LED点阵再到现在的智能手机,时间的显示越来越精准,但我还是更喜欢沙漏这种时间流逝的感觉,那么能不能以现代的电子技术给沙漏赋予新的形态呢?

 

 

材料准备

“沙子”载体

        既然要用电子的方式模拟流沙,那首先要确定一种载体来显示沙粒。为了更符合人们对砂粒的直觉,载体的显示效果要有颗粒感,并且这个沙漏定位是桌面摆件,所以体积尽可能的小一些,综合考虑,选择MAX7219驱动的8X8点阵屏作为赛博沙子的载体,就是户外广告的那种屏幕。

图1  8X8点阵屏


主控芯片

        出于简单易用的考虑,要选一个适配Arduino开发环境的芯片,当前比较流行的是ESP32和rp2040,二者最大的区别是ESP32有WiFi功能,这个沙漏没有联网的需求,芯片选择RP2040。开发板也尽可能的找一款体积小巧的,便于整体的小型化,最后选择了微雪RP2040-zero,

        它的长和宽只有23.5mm X 18mm,完美符合预想。

图2 RP2040-zero开发板


电子陀螺仪

        赛博沙漏也要同真的沙漏一样,整体翻转后沙子反向流动,这就需要某个传感器来检查沙漏的姿态,以此为依据决定沙子的流行,这里直接选择最简单易用的MPU6050电子陀螺仪模块,该模块非常流行,实例丰富,可以很快的上手使用。

图3 mpu-6050模块


电源部分

        最后就是电源部分,我希望它是完全独立的,可以任意移动的,这就需要使用电池对它供电。

        任意的3.7V锂电池都可以,唯一的要求就是体积尽可能的小一些。我选择了一块400mAh的软包锂电池,只有20*37*5mm的小巧体积。

图4 锂电池


 

        另外还需要一个电源管理模块来负责电池的充放电功能,这里选用了5V充放电一体模块,它小小的体积还集成了电压转化的功能,可以通过它直接给点阵屏模块输出5V的标准电压,非常方便。

图5  5V充放电一体模块


 

外壳制作

        外壳的设计思路就是造型尽可能的简单,体积尽可能的小巧。使用SolidWorks对外壳进行绘制

图6 SolidWorks绘图


        然后再用3D打印将它制作出来,使用最普通的PLA耗材就可以。

图7 3D打印的外壳

        这里推荐拓竹的打印机,省心好用,全自动打印,再也不用为调平调试等问题烦恼,简单到只要把文件拖进去,然后等待取零件就可以了。适合喜欢DIY但是不想费心调试机器的小伙伴。

        并且打印速度,打印质量无可挑剔(上图的零件就是拓竹机器打印的),在我这个多年的3D玩家看来,非常完美了。


 

 

整体组装

        元件数量比较少,且都是成品模块,所以就不要绘制PCB了,直接飞线就可以。按照接线图将所有模块连接好,塞进外壳里就OK。

图8 接线图


 

        在很小的空间里飞了十多根线,可能会有点乱,但这都没关系,等下盖上后盖就好了,眼不见心不烦。

图9 实物接线图



 

 

 

程序源码(完整)

        有编码经验的可以自行更改引脚,或者改用其他开发板。

        如果完全按照我的方案制作,那么在Arduino环境下,选择waveshare RP2040 ZERO开发板,直接编译下面的源码就可以。

 


 

 

实现效果

  包含了:思路 + 过程 + 完整效果,敬请欣赏~

 


 

 

总结

        这个赛博沙漏基本达到了预期的效果,通过电子技术的方式实现了流沙的效果,且有着很符合直觉的物理效果,是个非常有意思的桌面摆件。

        不过仍有可以改进的地方,目前“一粒沙子”的流动是一秒钟,一次翻转的时间就是8x8=64秒,考虑实用性的话这个时间有点短。尽管可以通过修改源码的方式调整时间间隔,但每次都改源码太麻烦了。

        之后考虑增加一些常用的时间间隔预设,再增加两个按键来切换间隔,并且在切换的时候通过点阵屏显示出当前的设置,最后长按该键应用设置,这样它就不仅是一个有趣的电子玩具,同时也是一个有实用价值的计时工具了。

 


赛博沙漏(含源码)的评论 (共 条)

分享到微博请遵守国家法律