一、簡介
ESP32 是上海樂鑫(Espressif)公司研發的一系列低功耗的微控器 (Microcontroller, MCU ),它是一款擁有強大功能的微控制器,整合了Wi-Fi、低功耗藍牙與傳統藍牙功能,被廣泛的應用在物聯網以及無線通訊領域。同時,ESP32 晶片模組也是針對輕巧且適合移動的應用所設計,它擁有低功耗的優點,可以在耗電量很低的狀態下運作,所以也很適合用來製作穿戴式裝置的應用。
註:網路社群所用的 ESP32 一詞可以代表 ESP32 微控制器模組、或是 ESP32 開發板。下文中為了區隔兩者,「ESP32 微控制器模組」以「ESP32 模組」稱呼;「ESP32 開發板」則以「ESP32」代稱。
二、為什麼 ESP32 這麼受歡迎?
挑選開發板的時候,除了要滿足基本功能外,往往也需要考慮效能、預算💰,以及是否能夠降低整個專案的複雜度。過去 Arduino UNO、Mega、Leonardo…這些開發板在使用上雖然簡單方便,也有許多第三方函式庫支援,但遇到需要連網的專案時,往往需要外掛其它連網模組,使用起來就不是那麼方便。
若只是要使用網路達成簡單的控制功能,使用樹莓派又顯得成本太高,一片樹莓派的價格動輒上千元,況且單板電腦也不適合做為微控器使用。雖然 Arduino 家族陸續推出帶有聯網功能的開發板,例如最早的 Arduino YUN 和近期的Arduino MKR 家族與 Arduino Nano 33 IoT,但即使是最便宜的 Nano 33 IoT,價格也落在千元上下,難以落實在教學現場或是實際作為物聯網節點佈署。後來出現了價格便宜且可以連網的 ESP8266 與 ESP32,填補了這個市場缺口。
本篇介紹的 ESP32 是 ESP8266 的升級版,在處理效能、I/O 數量、Wi-Fi 速度及支援的周邊界面都有所升級,另外還新增了藍牙功能。更重要的是,它的價格還是很便宜,一片原廠經典款的 UNO 價格大約可以買 2~3 片 ESP32 開發板,這價格只能說…真香!。:.゚ヽ(*´∀`)ノ゚.:。
下表列出 ESP32 模組的硬體規格:
名稱 | ESP32-S / ESP32-WROOM-32 |
架構 | 32位元 |
核心數 | 2 (雙核心) |
時脈範圍 | 80 MHz~240 MHz |
RAM | 512 KB |
Wi-Fi | 頻段:2.4 GHz,支援協議:802.11 b/g/n(802.11n 最高速度 150 Mbps) |
藍牙 | 包含經典藍牙(legacy Bluetooth)與低功耗藍牙(Bluetooth Low Energy, BLE) |
天線輸出功率 | 20 dbm(最高) |
腳位數 | 20 dbm(最高) |
腳位數 | < 5uA |
三、功能與特色
ESP32 模組除了具有聯網功能和價格的優勢外,還有下列的功能與特色:
- 性能強悍:內建雙核心晶片,時脈最高可達 240MHz。根據 CoreMark 網站的測試,ESP32 雙核心狀態下的測試分數可超過 660 分,以業界常見的意法半導體— STM32 家族來說,需要到 STM32G4 或是 STM32U5 以上的等級才有此等運算能力。(註:由於 STM32 G4 與 STM32 U5 沒有無線功能,在此提及僅作為 ESP32 的性能參考。)
- 價格實惠:與同樣規格的晶片或開發板相比,ESP32的價格相對較便宜,因此它更適合用在教育、個人專案,甚至是量產使用。
- 與 Arduino 相容:ESP32 模組的開發方式可以完全相容於 Arduino,許多函式庫也與 Arduino 開發板的範例共用。另外,只要在燒錄對應的韌體,ESP32 模組也能使用 MicroPython 或 Lua 等其他語言進行開發。
- 無線通訊與傳輸功能:ESP32 模組整合了2.4 G Wi-Fi、經典藍牙與低功耗藍牙(BLE)。Wi-Fi 功能可以作為物聯網專案使用,將蒐集到的資料上傳雲端,或是透過網路去控制晶片的行為;而藍芽’功能則可以連接手機,或者廣播 BLE Beacon 做室內定位使用。
- 低功耗:支援多種低功耗模式,像是深度睡眠模式(Deep Sleep Mode)和休眠模式(Hibernation Mode)等,可以降低運作時的電力消耗,相當適合物聯網和穿戴裝置的應用。
- 豐富的周邊介面:內建多種主流的通訊介面與週邊,像是 UART、SPI、I2C、PWM、ADC、DAC、電容觸碰等功能,能夠很方便的連接大多數的模組和感測器,不需要外掛通訊模組。
雖然上面提到的所有功能都已經整合在 ESP32 模組中,但實際上我們很難直接對模組進行開發。因此有些廠商就在模組周圍增加了一些周邊電路和 USB 接口,並且將晶片和電路整合在一片 PCB 電路板上,製作成比較方便使用的形式,使我們可以直接使用電腦進行燒錄和除錯等操作,而這一片「電路板」就是你我熟知的開發板了!
四、本系列教學使用的開發板
市面上有許多使用 ESP32 模組的開發板,這些開發板會隨著板上周邊裝置不同而影響售價。舉例來說,TTGO T-Display 就是使用 ESP32模組結合 LCD 彩色螢幕製作而成的開發板,從硬體層面來說,因為多加了一片螢幕的關係,售價自然也就比其他開發板還高。
在本系列教學文章中,我們選用的是 NodeMCU-32S 的相容版— ESP32 DEVKIT_CH340 這塊開發板,原因是接腳數充足、擴充性高,適合用來實驗與學習,且價格實惠。加上網路上也有許多先進與前輩們持續地在分享這片開發板的相關資源,因此相當推薦入門者使用。
五、硬體介紹
開發板的硬體組成可以粗略地分成 ESP32 模組以及周邊電路,周邊電路主要做穩壓與燒錄的功能,而周圍的排針可以讓我們插入麵包板使用。這片開發板的寬度是屬於比較窄的版本,插在麵包板上以後,兩邊可以各留一排接腳,方便連接電子元件或感測器。不過缺點是腳位名稱都印在開發板背面,插入麵包版後會看不到接腳名稱,接線時常常需要反覆確認有沒有接錯,這也是 ESP32 開發板的老問題。不過也有解決的方法,有先進製作用於 ESP32 開發板的腳位貼紙,可以直接貼在兩側的排針上,如此就能改善腳位標示的問題。
NodeMCU-32S 的燒錄(USB to UART)晶片有兩種版本,分別是 Silicon Labs 的 CP2102 晶片和南京沁恒微電子的 CH340 晶片,雖然兩顆晶片的細部規格並不完全相同,但是在一般情況使用下,兩者感受不到太多差別。
值得注意的是,當電腦抓不到開發板時,可以先檢查電腦是否已安裝對應的驅動程式,再進行錯誤排除。
六、小結
物聯網設備的基本元素包含用來控制所有周邊設備的主控單元(MCU),還需要搭配感測器進行資料收集和通訊,同時具備電源管理,還有最重要的連網功能。
ESP32 作為一款整合物聯網設備所需元素的解決方案,憑藉著強大的性能、友善的開發方式,以及便宜到快要骨折的價錢,成為物聯網開發的首選。它相容於 Arduino 開發環境,降低了使用和學習的門檻,同時改善了之前 ESP8266 的一些限制,並支援多種常用的周邊通訊界面,使得感測器資料能夠直接上傳到雲端平台做進一步的整合與分析,提高了使用的便利性和實用性。ESP32 作為一款功能強大、簡單易用並且受歡迎的平台,無論是進行簡單的微控器學習或是製作較為進階的複雜專案,都是一項值得考慮的選擇。