雖然普遍 開發板 都有提供 LED 可以用作顯示狀態
但當需要顯示比較複雜的內容、數值資料,甚至圖像時,只有一粒 LED 並不足夠,通常還需要使用 序列輸出
如果需要讓 開發板 獨立運作,便無發使用 序列輸出
如果能夠像 ESP32-S3 0.42in-OLED 預裝熒幕,便可以更簡單地開發獨立運作的裝置
外觀
ESP32-1732S019 的正面
與在下之前模仿 O.MG 的 ESP32-S3 相似,同樣是一塊以 ESP32-S3 作為 微控制器 的 開發板
但 ESP32-1732S019 提供 1.9寸 170x320像素 彩色LCD ,比 0.42寸 單色的 OLED 有更大的熒幕及更豐富的色彩
BOOT按鈕,與 ESP32-S3 的 第0數碼引腳 連接
按下 BOOT按鈕 會將 第0數碼引腳 接地 ,起動時 第0數碼引腳 接地 會載入到 起動模式
RST按鈕,是重設功能,當接地時會重新啟動裝置
ESP32-1732S019 的背面
ESP32-S3-WROOM-1 同樣是具備 WiFi 及 BLE 功能
而且還配備 16MB 的快閃記憶體,比一般 ESP32-S3 能儲存更多資料
使用 CH340C 將 USB訊號轉換成TTL訊號
引腳
正面USB | |||
---|---|---|---|
左側引腳 | 右側引腳 | ||
GP20 | 1 | 24 | 5V |
GP19 | 2 | 23 | GND |
GP18 | 3 | 22 | GP21 |
GP17 | 4 | 21 | GP47 |
GP16 | 5 | 20 | GP48 |
GP15 | 6 | 19 | GP45 |
GP7 | 7 | 18 | GP38 |
GP6 | 8 | 17 | GP39 |
GP5 | 9 | 16 | GP40 |
GP4 | 10 | 15 | GP41 |
3V3 | 11 | 14 | GP42 |
GND | 12 | 13 | GP2 |
編號 | 引腳 | 方向 | 功能 |
---|---|---|---|
1 | GP20 | 輸入輸出 | 第20數碼引腳 |
2 | GP19 | 輸入輸出 | 第19數碼引腳 |
3 | GP18 | 輸入輸出 | 第18數碼引腳 |
4 | GP17 | 輸入輸出 | 第17數碼引腳 |
5 | GP16 | 輸入輸出 | 第16數碼引腳 |
6 | GP15 | 輸入輸出 | 第15數碼引腳 |
7 | GP7 | 輸入輸出 | 第7數碼引腳 |
8 | GP6 | 輸入輸出 | 第6數碼引腳 |
9 | GP5 | 輸入輸出 | 第5數碼引腳 |
10 | GP4 | 輸入輸出 | 第4數碼引腳 |
11 | 3V3 | 3.3V 電源輸出 | |
12 | GND | 接地 | |
13 | GP2 | 輸入輸出 | 第2數碼引腳 |
14 | GP42 | 輸入輸出 | 第42數碼引腳 |
15 | GP41 | 輸入輸出 | 第41數碼引腳 |
16 | GP40 | 輸入輸出 | 第40數碼引腳 |
17 | GP39 | 輸入輸出 | 第39數碼引腳 |
18 | GP38 | 輸入輸出 | 第38數碼引腳 |
19 | GP45 | 輸入輸出 | 第45數碼引腳 |
20 | GP48 | 輸入輸出 | 第48數碼引腳 |
21 | GP47 | 輸入輸出 | 第47數碼引腳 |
22 | GP21 | 輸入輸出 | 第21數碼引腳 |
23 | GND | 接地 | |
24 | 5V | 5V 電源輸入 | |
BOOT | GP0 | 輸入輸出 | 第0數碼引腳,連接到BOOT按鈕;起動時接地會載入到起動模式 |
RST | RST | 重新引腳,接地時會重新起動 | |
LCD_RST | GP1 | 輸入 | 第1數碼引腳,連接到 LCD RST引腳;低電壓時重設 LCD |
LCD_SS | GP10 | 輸出 | 第10數碼引腳,連接到 LCD SS引腳;低電壓時有效 |
LCD_DC | GP11 | 輸出 | 第11數碼引腳,連接到 LCD DC引腳;低電壓寫入資料,高電壓寫入指令 |
LCD_SCK | GP12 | 輸出 | 第12數碼引腳,連接到 LCD SCK引腳 |
LCD_MOSI | GP13 | 輸出 | 第13數碼引腳,連接到 LCD MOSI引腳 |
LCD_BL | GP14 | 輸出 | 第14數碼引腳,連接到 LCD 背光引腳;高電壓時亮著 |
LCD熒幕
由於 ESP32-1732S019 的 LCD熒幕 使用 ST7789 的控制晶片,因此可以使用 ST7789 相同的函式庫來驅動
雖然在下曾經製作自己開發的 Arduino 函式庫,但在下這次打算使用由 Adafruit 提供的 ST7789 函式庫來驅動
畢竟使用公開、已開發成熟的函式庫的效率會更快,通常亦已經除錯
開啟 Arduino IDE 後,到 Sketch > Include Library > Manage Libraries...
在 Library Manager 搜尋 ST7789 ,安裝由 Adafruit 提供的 Adafruit ST7735 and ST7789 Library 函式庫
由於 Adafruit ST7735 and ST7789 Library 還需要有其他相依函式庫
因此需要一拼安裝才能使用 ST7789 相關的函式庫功能
等待下載及安裝函式庫
由於 ESP32-1732S019 同樣使用 ESP32-S3 模組,因此還需要安裝 ESP32-S3 開發板模組
File > Preferences > Additional Boards Manager URLs: 加入
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
到 Tools > Boards > Boards Managers...
在 Boards Manager 搜尋 esp32 ,安裝由 Espressif Systems 提供的 ESP32 開發板模組
#define LCD_BL 14 void setup() { pinMode(LCD_BL, OUTPUT); } void loop() { digitalWrite(LCD_BL, !digitalRead(LCD_BL)); delay(500); }
未啟動 LCD熒幕 時亮著 背光LED
#include <Adafruit_ST7789.h> #define LCD_RST 1 #define LCD_SS 10 #define LCD_DC 11 #define LCD_SCK 12 #define LCD_MOSI 13 #define LCD_BL 14 Adafruit_ST7789 lcd = Adafruit_ST7789(LCD_SS, LCD_DC, LCD_MOSI, LCD_SCK, LCD_RST); void setup() { pinMode(LCD_BL, OUTPUT); lcd.init(170, 320); } void loop() { digitalWrite(LCD_BL, !digitalRead(LCD_BL)); delay(500); }
啟動 LCD熒幕 時亮著 背光LED
與過去使用的 ST7789 相同,未初始化的熒幕會顯示雜訊內容
#include <Adafruit_ST7789.h> #include "data.h" #define LCD_RST 1 #define LCD_SS 10 #define LCD_DC 11 #define LCD_SCK 12 #define LCD_MOSI 13 #define LCD_BL 14 Adafruit_ST7789 lcd = Adafruit_ST7789(LCD_SS, LCD_DC, LCD_MOSI, LCD_SCK, LCD_RST); void setup() { pinMode(LCD_BL, OUTPUT); digitalWrite(LCD_BL, HIGH); lcd.init(170, 320); lcd.setRotation(3); lcd.fillScreen(ST77XX_BLACK); lcd.fillScreen(ST77XX_WHITE); lcd.drawRGBBitmap(0, 0, data, 320, 170); } void loop() { }
在 LCD熒幕 上繪製 PM5532圖像
PROGMEM const uint16_t data[] = {};
data.h 保存著 16位元 的 點陣圖內容
由於 編程內容必須使用 靜態隨機存取存儲器 (Static Random Access Memory (SRAM))
但固定資料可以使用 快閃記憶體 (Flash Memory)
因此建議使用 PROGMEM 將 點陣圖資料 保存到 Flash 以減少 SRAM 的使用量
總結
相比之前 模仿O.MG專案 中使用的 ESP32-S3 0.42in-OLED
ESP32-1732S019 擁有更大的預裝熒幕,而且能夠顯示彩色,有更佳的的顯示效果
而且使用 ST7789 相同的驅動程式,因此不需要額外學習操作方式,便可以直接使用 ST7789 函式庫製作圖像
但由於 ESP32-1732S019 的熒幕是 LCD ,比 OLED 耗電,而且必須有背光才能顯示熒幕內容
還有美中不足的是 LCD 的熒幕控制引腳並不是使用 ESP32-S3 的 硬件SPI
SPI引腳 | ESP32-S3 引腳 | 連接到 ST7789 引腳 |
---|---|---|
SS | 10 | 10 |
MOSI | 11 | 13 |
SCK | 12 | 12 |
MISO | 13 | N/A |
導致更新熒幕內容的不能以最快的速度更新,畢竟 軟件SPI 比 硬件SPI 慢
不過如果不是繪製非常複雜的圖像,其實速度仍可接受
而這種 整合LCD的開發板 比 額外連接 LCD模組 的 開發板 昂貴,引腳連接亦無法控制
因此製作專案時同樣需要考慮這些情況來選擇
沒有留言 :
張貼留言