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