技術宅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休眠,刷新時間間隔拉長,耗電量會很低很低……