設(shè)計(jì)了一個帶有GC9A01圓形TFT顯示屏的ESP32
這篇文章是關(guān)于一個復(fù)古風(fēng)格的手表的實(shí)現(xiàn),它是基于ESP32微控制器。
你喜歡復(fù)古風(fēng)格的小玩意,想在你的手腕上展示一個迷你的圓形顯示器嗎?這個項(xiàng)目重新設(shè)計(jì)了一個帶有GC9A01圓形TFT顯示屏的ESP32,創(chuàng)造了一個時尚的表盤。它具有緊湊的設(shè)計(jì),定制的3d打印外殼,以及可以為您自己的表盤設(shè)計(jì)定制的開源代碼。
將GC9A01連接到ESP32
GC9A01圓形TFT通常有以下引腳(檢查您的顯示模塊以確認(rèn)標(biāo)簽):
?VCC -> 3.3v
?GND -> GND
?SCL (SCK) -> SPI時鐘引腳(ESP32上通常為GPIO18)
?SDA (MOSI) -> SPI MOSI引腳(通常為GPIO23)
?RES ->復(fù)位引腳(任何空閑的GPIO,例如GPIO4)
?DC ->數(shù)據(jù)/命令引腳(任何空閑的GPIO,例如GPIO2)
?CS ->芯片選擇(任何空閑的GPIO,例如GPIO5)
?BLK / LED -> 3.3V或GPIO如果你想軟件控制背光
仔細(xì)連接每個引腳。對于SPI線(SCK, MOSI, CS),使用ESP32上的硬件SPI引腳或調(diào)整代碼以匹配您選擇的引腳。顯示器的背光(BLK或LED)可以直接連接到3.3V或由GPIO驅(qū)動,如果你想以編程方式關(guān)閉它。
準(zhǔn)備Arduino IDE
如果您是第一次使用ESP32編程,請將以下鏈接復(fù)制到file -> Preferences -> Additional Boards Manager下的Arduino IDE。
并在單板管理中安裝ESP32包。
注意:要使這個項(xiàng)目工作,您需要使用board版本2.x。在版本3及以上的版本中,它將無法工作
閃爍單板,選擇“ESP32S2 DEV Module”。按住“0”鍵并按復(fù)位鍵一次。這使得板在引導(dǎo)模式和COM端口應(yīng)該是可見的。
接下來,您需要安裝TFT_eSPI庫,這只需在庫管理器中搜索“TFT_eSPI”即可完成。
如果安裝了庫,則只能調(diào)整庫目錄(SketchBook目錄/libraries/TFT_eSPI/user_setup.h)下顯示驅(qū)動程序的user_setup.h文件。
首先復(fù)制現(xiàn)有的user_setup.h,刪除內(nèi)容并將以下行復(fù)制到文件中:
代碼:
首先,我們綁定SPI通信、TFT顯示和網(wǎng)絡(luò)連接所需的庫:
接下來我們定義一些變量,這些變量包含手表中心的位置,以及時間(小時、分鐘、秒)和其他配置,例如NTP服務(wù)器的地址。需要PI值來計(jì)算指針在圓中的位置,因?yàn)橹羔樀淖鴺?biāo)在圓路徑上運(yùn)行。常量SSID和密碼必須更改為您的網(wǎng)絡(luò)訪問數(shù)據(jù)。
在setup()中建立WiFi連接,并使用NTP服務(wù)器調(diào)用時間。然后繪制表盤。
為了使時鐘形象化,當(dāng)然,我們還必須創(chuàng)建一個帶有小時標(biāo)記的表盤。在這里,我們在表盤上繪制小時標(biāo)記(1到12)。這是通過基于圓幾何計(jì)算每個點(diǎn)的X和Y坐標(biāo)來完成的。
現(xiàn)在是實(shí)際的時鐘指針,它是根據(jù)當(dāng)前時間顯示的。draw_hour()和draw_minute()方法繪制鐘面上的時針和分針。mode參數(shù)決定是繪制手還是刪除手。
秒針的顯示略有不同——是一個小圓圈。
date()方法的作用是:根據(jù)時針在中心點(diǎn)上方或下方的位置顯示當(dāng)前日期。
在loop()函數(shù)中,時間會不斷更新,指針也會相應(yīng)地重新繪制。首先,刪除之前的指針位置,以避免刪除整個顯示。然后顯示當(dāng)前時間。
在loop()函數(shù)中,時間會不斷更新,指針也會相應(yīng)地重新繪制。首先,刪除之前的指針位置,以避免刪除整個顯示。然后顯示當(dāng)前時間。
當(dāng)然,該項(xiàng)目也可以焊接在電路板上長期運(yùn)行或安裝在3D打印的房屋中,這里沒有限制的創(chuàng)造力。此外,順時針的顏色可以很容易地改變,或者顯示其他信息而不是時間。由于需要通過Internet查詢NTP時間服務(wù)器的時間是否同步,因此需要有2.4GHz的無線局域網(wǎng)連接。
本文編譯自hackster.io