第八章 IDF組件系統的應用
IDF組件註冊表(IDF Component Registry)是為ESP-IDF(Espressif IoT Development Framework)開發框架提供的官方組件搜索和添加平台。開發者可以通過網絡訪問IDF組件註冊表,搜索並找到所需的組件,然後按照提供的指南將組件添加到自己的ESP-IDF項目中,從而簡化了組件的集成過程。
本章將分為如下幾個小節:
8.1 IDF組件註冊表簡介
8.2 項目工程如何添加組件
8.1 IDF組件註冊表簡介
IDF組件註冊表是樂鑫官方專為ESP-IDF開發框架打造的組件搜索與添加平台。儘管ESP-IDF物聯網開發框架的components文件夾內已包含諸如lwIP、MQTT等豐富的驅動程序和第三方組件,但這些組件主要服務於物聯網領域,具有特定的專一性。部分第三方庫並未直接集成於ESP-IDF中。為了提升開發者的工作效率,樂鑫官方推出了IDF組件註冊表,其中存儲了已適配的第三方組件提供開發者使用。開發者只需聯網,即可輕鬆下載並移植這些組件到自己的項目工程中。
以下是 IDF 組件註冊表的特點:
1,簡化組件搜索和集成:IDF組件註冊表為開發者提供了一個集中化的平台,用於搜索和查找ESP-IDF項目中所需的組件。通過註冊表,開發者可以輕鬆地瀏覽和篩選組件,根據項目的需求選擇適合的組件,並快速集成到項目中。
2,提高開發效率:有了IDF組件註冊表,開發者無需花費大量時間在互聯網上搜索和評估各種組件。可以直接在註冊表中找到經過驗證和官方推薦的組件,從而減少尋找和測試組件所需的時間,提高開發效率。
3,確保組件兼容性和質量:IDF組件註冊表中的組件都經過嚴格測試和驗證,以確保它們與ESP-IDF框架的兼容性和穩定性。有助於減少項目中可能出現的兼容性問題,提高軟件質量。
4,促進組件共享和複用:通過IDF組件註冊表,開發者可以輕鬆共享和複用他們創建的組件。這有助於推動ESP-IDF社區的發展,鼓勵更多的開發者參與到組件的開發和貢獻中,從而形成良性的生態循環。
5,提供官方支持和文檔:IDF組件註冊表不僅提供組件的搜索和添加功能,還為每個組件提供詳細的文檔和官方支持。這有助於開發者更好地理解和使用組件,解決在使用過程中可能遇到的問題。
樂鑫官方的IDF組件註冊表地址為:https://components.espressif.com/。打開後如下圖所示:

圖8.1.1 IDF組件註冊表
從上圖可以清晰看出,我們可以通過②或③選項對組件進行篩選,以排除那些不支持ESP IDF特定版本或特定芯片的第三方庫。同時,我們也可以在①處直接搜索需要添加的組件。例如,作者通過搜索功能找到了esp_jpeg這一JPEG解碼庫(作者以esp_jpeg解碼庫組件為例,其他組件也是類似的),如下圖所示。

圖8.1.2 esp_jpeg解碼庫
在上圖的頁面中,我們可以輕鬆找到關於esp_jpeg的使用方法、芯片支持情況、使用示例以及添加組件的詳細方法等內容介紹。這些內容具體如下:
1,芯片支持
esp_jpeg解碼庫可支持ESP32、ESP32-S3和ESP32-C3等芯片型號,如下圖所示。

圖8.1.3 esp_jpeg解碼庫可支持芯片型號
2,使用要求
開發時,需要查看esp_jpeg組件的使用要求,才能添加到項目當中。下圖是官方提供的esp_jpeg解碼庫組件的使用要求。

圖8.1.4 esp_jpeg解碼庫組件使用要求
這個解碼庫組件對MCU、存儲內存以及LCD都有明確的使用要求。如果設備未能滿足這些要求,那麼將無法順利使用該解碼庫組件。因此,在選擇和使用此組件時,務必確保設備滿足相應的硬件條件。
3,使用示例
通過命令的形式就可以下載esp_jpeg解碼庫組件的示例工程,如下圖所示。

圖8.1.5 下載使用實例命令
這樣我們就可以參考這個示例來編寫自己的jpeg解碼實驗了。
4,ESP-IDF版本要求
esp_jpeg解碼庫組件只能在v4.4以上版本運行,如下圖所示。

圖8.1.6 ESP-IDF版本要求
5,添加組件到項目工程
我們可通過以下命令把esp_jpeg組件添加至項目工程當中,如下圖所示。

圖8.1.7 組件添加至項目工程
至此,IDF組件註冊表的組件安裝已完成。讀者如果想安裝其他組件,可以根據上述流程進行操作即可。
8.2 項目工程如何添加組件
ESP32項目添加組件的方法有兩種:一種是命令式,另一種是圖形化配置。下面筆者將分別講解這兩種形式。
8.2.1 命令式添加組件流程
下面,作者以基礎工程00_basic為例,在此工程下添加esp_jpeg解碼庫組件。其他組件添加方式是一致。
1,在“5.4 PowerShell”終端下,輸入以下命令進入“00_basic”工程,如下圖所示。

圖8.2.1.1 導航至“00_basic”項目工程
2,在“5.4 PowerShell”終端下,輸入圖8.1.7命令添加組件,如下圖所示。

圖8.2.1.2 在“00_basic”項目工程下添加jpeg v1.0.0版本的組件
此時,我們會發現“00_basic”項目工程的main文件夾多了一個idf_component.yml。idf_component.yml文件用於定義ESP-IDF組件的元數據和構建指令,包括組件名稱、版本、依賴關係、編譯選項和源文件路徑等信息。它確保組件與 ESP-IDF 版本和芯片型號的兼容性,同時提供使用説明,幫助開發者有效管理和集成組件。
注意:請讀者根據需求安裝合適的組件版本,因為某些組件版本可能不支持特定的芯片型號。建議認真瀏覽官方對該組件的描述,以確保選擇正確的安裝版本。
3,使用VS Code打開“00_basic”項目工程後,首先清除工程構建文件,然後編譯該項目。編譯完成後,如下圖所示。

圖8.2.1.3 下載jpeg組件,並添加至項目工程
從上圖可見,在編譯“00_basic”基礎工程時,系統會自動從IDF組件註冊表下載esp_jpeg解碼庫組件,並將其集成到項目中。這展示了IDF組件註冊表的添加與使用機制。但請注意,若要通過IDF組件註冊表添加組件,必須確保設備聯網,否則下載操作將失敗。
最後,我們可以在.c文件中引用esp_jpeg解碼庫組件,其他組件的操作流程也類似。希望讀者能夠充分利用IDF組件註冊表這一強大功能。
8.2.2 VS Code工程添加組件
在VS Code項目工程中添加IDF組件註冊表中的組件十分便捷。您只需按下“Ctrl+Shift+P”快捷鍵快速進入命令面板,或者通過菜單欄的“查看”選項,選擇“命令面板”來打開它。隨後,在命令面板中輸入“ESP-IDF: Show Component Registry”即可展示出組件註冊表,具體操作如圖所示。

圖8.2.2.1 搜索組件註冊表
回車進入ESP-IDF註冊表,如下圖所示。

圖8.2.2.2 打開ESP-IDF註冊表
在搜索框中,我們可以方便地查找開發者所需的組件。請注意,下載ESP-IDF註冊表中的組件需要在聯網環境下進行,因此請確保您的電腦已連接到網絡,以便順利下載所需的組件。下面作者以qrcode為例來講解。

圖8.2.2.3 選擇合適的版本,並安裝組件
在上圖中,首先選擇適合的組件版本,隨後點擊“install”按鈕以安裝qrcode組件。請務必注意,選擇與ESP32-P4芯片適配的組件至關重要,因為並非所有組件都兼容這款芯片。為了篩選出與ESP32-P4兼容的組件,開發者可以在圖8.2.2.1中選擇“By target”選項,並將其設置為ESP32-P4。這樣,您就能清晰地查看到這款芯片所支持的組件列表。
安裝組件完成後,我們可在項目工程main文件夾下找到idf_component.yml文件,此時該文件自動添加了qrcode組件等相關信息,如下圖所示。

圖8.2.2.4 添加qrcode組件
經過項目工程編譯後,我們可以在項目工程目錄下的managed_components文件夾中找到espressif__qrcode組件。這時,我們可以在.c文件中調用該組件的API函數。