【好物開箱】為低階網路攝影而生的ESP32-CAM

作者:陸向陽

開源的ESP8266擁有廣大的模組家族(圖片來源

各位還記得 2014 年開始流行的 ESP8266 晶片嗎?只要 5 美元就有機會買到的 Wi-Fi 收發器(含電路板),並且用 Arduino 語法與開發環境就可以開發撰寫應用。

ESP8266 晶片紅極一時後不免退燒,畢竟 ESP8266 規格與功能過於簡單,運用有限的 ADC 輸入與軟體模擬的 PWM 輸出,能做的應用多半是簡單的感測與操控,並透過 Wi-Fi/LAN 或 Internet/WAN 互動。

ESP8266 晶片的開發公司上海樂鑫信息(Espressif)後續又推出了 ESP32 晶片,將規格功能進行提升,並在 Wi-Fi 外也加入 Bluetooth,期望擴展市場。

同時支援Wi-Fi及藍芽功能的ESP32 Combo開發板(圖片來源

規格更強大的 ESP32 肯定能有更多的應用變化與發揮空間,但大家一時也不知道能拿它來幹嘛,所以有一陣子在創客圈的討論度不算太高。

不過與樂鑫密切合作的板卡商安可信(AI Thinker,註1)為 ESP32 推出了一片板卡,稱為 ESP32-CAM,該板卡結合了 OmniVision 的 OV2640 影像感測器模組(攝影鏡頭模組,解析度 1632 x 1232,註2)、PSRAM 記憶體(註3)、MicroSD 記憶卡卡槽,使其適合做為網路攝影機應用,同時與過往 ESP8266 一樣相容於 Arduino。

ESP32-CAM板卡(左)與搭配安裝的攝影機模組(右)(圖片來源

更重要的是,只要透過 Arduino 的一個範例程式:CameraWebServer,將該程式透過 PC 燒寫到 ESP32-CAM 板卡上,就可以在板卡上建立一個網頁伺服器(Web Server),而後只要用瀏覽器瀏覽 ESP32-CAM 板卡,即輸入 192.168.x.x 的內部網址,就可以看到攝影機角度的影像內容,進一步也可以作一些影像辨識應用,如人臉位置標記等,這等於也是一個 WoT(Web of Things,註4),以上種種好處使創客們開始關注起 ESP32-CAM。

ESP32-CAM實作視訊監控示意圖(圖片來源:陸向陽)

CameraWebServer 支援三種 ESP32-CAM 板卡

前面談及 CameraWebServer 範例程式,若進一步檢視該程式內容的前幾段,可以發現該程式的執行可透過三款 ESP32 板卡實現,分別是樂鑫官方推出的 ESP-WROVER-KIT、M5STACK 公司推出的 ESP32 Camera Module Development Board,以及前述安可信推出的 ESP32-CAM。在程式碼中分別寫成 CAMERA_MODEL_WROVER_KIT、CAMERA_MODEL_M5STACK_PSRAM、CAMERA_MODEL_AI_THINKER。

請注意最後一行最前頭的 「//」被刪除了,即代表選擇了 ESP32-CAM。

在程式碼中三者都以註解方式寫成,開發者購買 ESP32 板卡時選擇三者中的一種,而後把三個註解中的某一對應項取消其註解,正式成為宣告,該程式碼即可用。當然,程式碼裡頭也要改一下 SSID 與密碼,才能夠讓 ESP32-CAM 板卡連上 Wi-Fi 網路。

要說明的是,M5STACK 主要是推行簡單積木化組兜的電子實作,接線型的產品不是該公司主推,雖然在淘寶上可以買到 M5STACK 的產品,但不太建議使用,比較推的依然是 ESP-WROVER-KIT 與 ESP32-CAM。

有關 ESP32-CAM 板卡與 CameraWebServer 範例程式的快速實作可參考以下影片:

ESP32-CAM的專屬影像功能配置

至此可能有人會問,我可以拿其他一般 ESP32 板卡來構成與 ESP-WROVER-KIT、ESP32-CAM 相同電路功效的板卡,然後一樣運用 CameraWebServer 範例程式來執行嗎?答案是可以,但很有難度。

首先,ESP32 晶片本身沒有特別為攝影機提供合適的傳輸介面,ESP32-CAM 是用權宜之計實現傳輸的,即是借用 ESP32 晶片上的 I2S 介面,該介面原始設計上是用來傳遞音訊(Audio)的,且為了傳輸時效性,可以支援直接記憶體存取(Direct Memory Access,DMA),不過這個介面的傳輸還算夠快,可以承載 OV2640 的影像,又有時效傳輸性,所以就被挪用了。

ESP32-CAM硬體功能配置圖(圖片來源;作圖:MakerPRO編輯部)

其次,ESP32 晶片內部也沒有足夠的 RAM 空間可用來暫存視訊內容,因而必須外接 PSRAM,ESP32-CAM 就額外接上 4Mbit(512KB)的 PSRAM。

其三,PSRAM 也只能暫放圖像影像,如果長時間拍攝錄影,PSRAM 也是不夠放的,所以 ESP32-CAM 上也設置一個 MicroSD 卡槽,可接入 MicroSD 記憶卡,影像最終可以存放於記憶卡上,如此即便 ESP32-CAM 斷電了也可以保存影像資料。

以上三點都不是一般 ESP32 系統板可以做到的,都需要費一段線路焊接工才可能做到,而且影像傳輸線路、記憶體存取線路均屬相對高速傳輸,對線路品質有較高的要求,自己焊接實現須有高超技能才行,因此一般還是建議直接買 ESP-WROVER-KIT 或 ESP32-CAM。

如果堅持自己實現,則可以參考如下的電路圖:

ESP32-CAM電路圖(圖片來源:https://i.redd.it/yv050peu22p21.png

至於其他相關細節在此跳略,例如燒錄 Sketch 應用程式到 ESP32-CAM 上時,ESP32-CAM 的 GPIO 0 接腳必須接地、內部 IP 配置、如何操作 Arduino IDE 的 Board Manager 等,最後來看看畫面吧,ESP32-CAM 上建立起來的網頁伺服器不單只是秀出拍到的圖,還包含很多影像微調選項唷!

用瀏覽器觀看 Camera Web Server 所得的畫面(圖片來源:Instructables

(責任編輯:楊子嫻)

註解

註1:事實上 ESP8266 的走紅也得歸功於安可信推出一系列非常平價的 ESP-xx 系列的 ESP8266 收發器晶片模組子卡。

註2:有的也支援其他 OmniVision 攝影機模組,如 OmniVision OV7670(640 x 480)。

註3:PSRAM(Pseudo SRAM)的內部電路是 DRAM,但外部的接腳組態與傳輸方式是類同於 SRAM,可讓一些需要 SRAM 運作的設計不一定用真的 SRAM,而是用 DRAM。

註4:ESP32 資源已多過 ESP8266 但依然有限,以一個少量資源的終端裝置而言難以實現所有 TCP/IP 協定功能,因此 ESP32-CAM 所用的也是輕量化的 IP 協定,即 LWIP(Lightweight IP)。

陸向陽

從電子科系畢業後,即以媒體人的角色繼續這段與「電子科技」的不解之緣。歷任電子技術專書作者、電子媒體記者、分析師等角色,並持續寫作不殆。近來投入Arduino、Raspberry Pi等開放硬體的研究與教程介紹。
陸向陽

Author: 陸向陽

從電子科系畢業後,即以媒體人的角色繼續這段與「電子科技」的不解之緣。歷任電子技術專書作者、電子媒體記者、分析師等角色,並持續寫作不殆。近來投入Arduino、Raspberry Pi等開放硬體的研究與教程介紹。

Share This Post On
468 ad

1 Comment

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *