使用 C++ Constructors 和 ESP32 : 掌握強大 UART 技術


簡介

這篇部落格將介紹如何在 ESP32 開發框架 (ESP-IDF) 中使用 C++ 建構子 (Constructors) 來初始化和控制 UART 通訊。讀者將從基礎開始,學習如何利用 C++ 建構子的特性優雅地管理 ESP32 上的硬體初始化,特別是 UART 介面。

為什麼選擇 C++ 和建構子 (Constructors)?

C++ 擁有強大的物件導向特性,而建構子(constructors)則是其中的一大亮點。在硬體初始化中,建構子可以在物件創建時自動執行初始化邏輯,不需要額外的設定步驟。這種方式對於 IoT 開發非常便利,可以讓我們在創建 ESP32 上的硬體資源時,像 UART 這樣的通訊介面,也能保持程式碼簡潔、結構清晰。

在 ESP32 上使用 C++ 建構子的基礎

在 ESP32 開發中,C++ 的建構子能幫助我們進行資源的初始化。舉例來說,我們可以定義一個 UART 類別,並在建構子中完成 UART 的設定。這樣的方式比傳統 C 語言在主函數中一行行初始化的方式更為直觀。

開發環境設置

1. 安裝 Visual Studio Code,可從官方網站下載並且安裝。
2. 安裝 ESP-IDF 插件

創建一個新項目

1. 在 VS Code 中,按下 Ctrl (Cmd) + Shift + P,然後輸入 ESP-IDF: New Project。

2. 選擇一個樣板專案(如 blink example),設定專案名稱(例如 my_project),並選擇存儲路徑。

3. 此時,系統會自動為您生成一個新的 ESP-IDF 項目,其中包含基本的 CMake 文件和一個範例程式碼。

檔案結構

my_project/
├── CMakeLists.txt # CMake 建構配置檔
├── main/
│ ├── CMakeLists.txt # 主要元件的 CMake 配置檔
│ └── main.cpp # 包含 UART 類別和應用邏輯的主源檔
└── sdkconfig # 由 menuconfig 生成的專案配置檔

使用 C++ 建構子初始化 UART

在 main 目錄中創建一個名為 main.cpp 的檔案,並添加以下程式碼:
說明 :
1. UART 類別和建構子:在 main.cpp 中定義 UART 類別,並使用建構子初始化 UART 參數。

2. 參數配置:建構子使用 uart_param_config 設置 UART 參數,並使用 uart_set_pin 指定 TX 和 RX 引腳。

3. 資料傳輸與接收:sendData 方法用於通過 UART 發送字串,receiveData 方法用於接收資料並輸出。
Learn C++ with ESP32 Powerful UART Constructors

編譯與燒錄

在 VSCode 視窗最下方中找到 "ESP32-IDF : Build, Flash and Monitor" ICON 執行和燒錄。

程式運行效果

運行程式後,您將在終端機中看到以下輸出:

結論

在 ESP32 開發中使用 C++ 建構子 (Constructors) 提供了幾個好處:

1. 更清晰的程式碼:將初始化邏輯放在建構子中,使程式碼的結構更清晰和有組織。
2. 資源管理簡化:當物件被創建時,資源的初始化自動發生,減少錯誤的機會。
3. 提高程式碼重用性:將 UART 功能封裝在類別中,使其在不同專案中易於重用。

希望這個指南能幫助您在 ESP32 的物聯網開發之旅中取得成功!未來可以嘗試將這個概念應用到其他硬體資源的管理中。