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