技术宅DIY墨水屏日历!自动刷新位置天气 随机播放毒鸡汤

自制一个电子墨水屏日历,需要几步?

是能自动刷新位置、天气情况,还能随机播放2000多条毒鸡汤的那种。

技术宅硬核跨年!DIY墨水屏日历:自动刷新位置、天气 随机播放2000多条“毒鸡汤”

↑↑↑就像这样:如果我的人生是一部电影,那你就是一个弹出来的广告。每10分钟会刷新一条。

配上相框,相比于网购平台上售价299元的这一款,你觉得能打几分?

技术宅硬核跨年!DIY墨水屏日历:自动刷新位置、天气 随机播放2000多条“毒鸡汤”

这样的一款新“产品”,来自微博博主@张欣 | Kenn。并且,他还把制作方法开源了。不妨一起来看个究竟~

硬件准备

@张欣 | Kenn决定制作这样一款电子墨水屏,缘起是看到了网络购物平台上出售的类似产品。

技术宅硬核跨年!DIY墨水屏日历:自动刷新位置、天气 随机播放2000多条“毒鸡汤”

产品挺有意思,但想要点毒鸡汤那个味儿,还是得自己动手DIY一下。

直接来看方案。

屏幕,231元,首先是是屏幕。类似手机、智慧屏这类的硬件中,屏幕一般是最贵的部分。

张欣参考了网售产品的方案,选择了单价不太高的微雪电子5.83寸黑白电子墨水屏。

技术宅硬核跨年!DIY墨水屏日历:自动刷新位置、天气 随机播放2000多条“毒鸡汤”

这款屏幕型号叫e-paper,648×480分辨率,SPI接口,售价231元

技术宅硬核跨年!DIY墨水屏日历:自动刷新位置、天气 随机播放2000多条“毒鸡汤”

同时,这款屏幕也采用了当下比较流行的串口形式。与并口连接相比,串口屏只需要2根线链接通信,且控制程序简单,比并口屏少90%。

有的串口屏甚至不再需要MCU,可以直接控制。对于DIY电子产品来说,串口屏比较合适。如果你打算用树莓派或者其他Arduino设备来驱动,可以选择带有适配板的套装,价格为283.5元。

此外,类似型号电子屏还有彩色版本,不过成本也更高。假如你真的采用了彩色屏,可能需要修改原作者的代码才能适用。

计算单元,78.75元

张欣采用了乐鑫的ESP32芯片。ESP32芯片自带2.4G无线网络和蓝牙,有充足的引脚。

技术宅硬核跨年!DIY墨水屏日历:自动刷新位置、天气 随机播放2000多条“毒鸡汤”

并且,当前市场上能买到很多成熟的ESP32开发板。

当然,要是够硬核,可以自己买基于ESP32的模组,然后整合到板子里。

技术宅硬核跨年!DIY墨水屏日历:自动刷新位置、天气 随机播放2000多条“毒鸡汤”

要注意的是,这两种方式都需要买屏幕时顺便买适配板,好将屏幕的软排线转换为SPI接口。

作者为了快速做出成品,选用微雪自带软排线接口、基于ESP32的墨水屏开发板,价格78.75元。

技术宅硬核跨年!DIY墨水屏日历:自动刷新位置、天气 随机播放2000多条“毒鸡汤”

电源,50元以内

其实,在开发时,可以通过电脑上的USB接口用micro USB线直接供电,同时进行调试工作。

但如果要在实际使用中摆脱电源线的话,可以直接购买一块自带micro USB充放接口的锂电池。

电池的容量不同价格也不一样,不过一般都在50元以下。

技术宅硬核跨年!DIY墨水屏日历:自动刷新位置、天气 随机播放2000多条“毒鸡汤”

最后计算一下,DIY相同墨水屏的成本最多为231+78.75+50=359.75

咋还比网购平台上的贵了呢。其实很好理解,所有部件按零售价购买,自然比厂家进货价贵。但技术宅享受的,不就是自己动手的乐趣吗?

软件方案

准备好了硬件,软件部分又要如何实现?框架部分,张欣选择了Arduino,因为里面有大量现成的第三方库可以使用。开发工具方面,他则推荐使用Visual Studio Code。

具体而言,该项目的代码主要实现了以下几个功能。首先,规划屏幕布局,并且每10分钟刷新一次屏幕,实时更换毒鸡汤的口味。

技术宅硬核跨年!DIY墨水屏日历:自动刷新位置、天气 随机播放2000多条“毒鸡汤”
△图源:微博博主@张欣 | Kenn

现成的毒鸡汤,一共有2000+款,像是:

生活不只眼前的苟且,还有未来的苟且

祝你瘦成一道闪电,闪电直径两米。

……

完整内容,在该项目的toxicsoul.h文件中可以看到。

技术宅硬核跨年!DIY墨水屏日历:自动刷新位置、天气 随机播放2000多条“毒鸡汤”

日期使用的是ESP32系统自带的时钟。

位置则通过查询当前设备的IP地址来获得。

技术宅硬核跨年!DIY墨水屏日历:自动刷新位置、天气 随机播放2000多条“毒鸡汤”
△部分代码

实时天气信息,来自和风天气开发平台的服务。在具体实现的时候,需要自己注册账号,获取应用程序Key。

const String QWEATHER_API_KEY = “**“;

其中涉及的第三方库主要包括:

1、 Adafruit GFX:图像图形引擎,实现显示输出

2、GxEPD2:基于Adafruit_GFX库驱动各种电子墨水屏

3、U8g2 for Adafruit GFX:显示文字

4、u8g2_fontmaker:一个用于生成u8g2字体源代码的一键懒人脚本工具,同样出自项目作者之手

 5、ArduinoJSON:处理JSON字符串

一切准备就绪,把程序烧录到开发板里,再用热熔胶等DIY必备工具组装一番,接上电源,毒鸡汤电子墨水屏日历就诞生了。

技术宅硬核跨年!DIY墨水屏日历:自动刷新位置、天气 随机播放2000多条“毒鸡汤”

这个毒鸡汤电子墨水屏日历在元旦当天初步完成施工,就收获了网友们热烈的点赞。

技术宅硬核跨年!DIY墨水屏日历:自动刷新位置、天气 随机播放2000多条“毒鸡汤”

不少网友当场表示,奈斯啊,搞起来。还有网友当场提起了新需求:想把前一天的日报统计显示出来。

技术宅硬核跨年!DIY墨水屏日历:自动刷新位置、天气 随机播放2000多条“毒鸡汤”

有关续航方面的信息,作者也在评论区做出了解答:

还没有时间或者说条件测功率消耗,其实代码优化点,刷新后就把屏幕和ESP32休眠,刷新时间间隔拉长,耗电量会很低很低……