先前完成了幾項ESP32的功能實作,最近剛好託朋友在淘寶買些電子零件,想瞭解一下加了相機鏡頭的 ESP32 如何運作?例如感應拍照、透過 Web Server 看影像等功能,或是當作固定的即時影像功能等。初次設定的方法跟先前寫的 Arduino筆記(35):ESP-32 初始化設定&上傳程式Timed out 的解決方法 類似,以下先瞭解一下 ESP32 的功能規格以及如何進行初次設定。
以下是ESP32-CAM功能:
上傳程式到 ESP32時,需將GPIO0接地(如下圖連接的橘色線條)。上傳完成後,要獨立執行上傳到 ESP32CAM 時,需將GPIO0與接地的線分開(如下圖連接的橘色線條要分開)。
在上圖紅色框處輸入以下網址:
選擇 [工具 Tools] → [開發板 Boards:] → [開發板管理員 Boards Manager],在搜尋的地方輸入 ESP332,找到ESP32擴充套件,按下[安裝],開始下載相關程式:
安裝完成後,回到主畫面,選擇[ESP32 Arduino] → [AI Thinker ESP32-CAM]。
接著選擇 [工具 Tools] → [序列埠 COM6] ,設定通訊埠,如下圖:
(1) 要在 esp32_camera_mjpeg_multiclient.ino 主程式下,建立一個 src 目錄,將 OV2640.cpp 和 OV2640.h 複製到這個目錄內。
(2) 將 camera_pins.h 放在跟主程式同一目錄內。
(3) 新建立一個空白的文字檔,命名為 home_wifi_multi.h,內容要放無線網路的 SSID 和密碼,記得將內容改成你環境下的 SSID 和密碼:
使用瀏覽器,輸入ESP32CAM 取得的IP。
開啟程式後,有幾個地方需要修改:
(1) ESP32CAM的型號,請比照[程式一]的(4)修改。
(2) 修改 SSID 和 Password
使用瀏覽器,輸入ESP32CAM 取得的IP:
可以看到左方的選單,按下左下方的 [Get Still] 按鍵拍下照片,結果畫面如下:
以下是ESP32-CAM功能:
- 最小的 802.11b / g / n Wi-Fi BT SoC模塊
- 低功耗 32位CPU,也可以為應用處理器服務
- 時鐘速度高達 160MHz,匯總計算能力高達600 DMIPS
- 內建 520 KB SRAM,外部4MPSRAM
- 支援 UART / SPI / I2C / PWM / ADC / DAC
- 支援 OV2640 和 OV7670 相機,內置閃光燈
- 支援圖片 WiFi上傳
- 支援 TF 卡
- 支援多種睡眠模式
- 嵌入式 Lwip 和 FreeRTOS
- 支援 STA / AP / STA + AP 操作模式
- 支援Smart Config / AirKiss技術
- 支援串列端和遠端固件升級(FOTA)
[材料]
- USB轉TTL序列傳輸線 CP2102
- ESP32CAM開發板
- 排線 x 5 條
[接線圖]
ESP32CAM | CP2012 |
---|---|
5V | 5V(VCC) |
GND | GND |
V0R | TX |
V0T | RX |
IO0 | GND |
上傳程式到 ESP32時,需將GPIO0接地(如下圖連接的橘色線條)。上傳完成後,要獨立執行上傳到 ESP32CAM 時,需將GPIO0與接地的線分開(如下圖連接的橘色線條要分開)。
[安裝ESP32擴充程式庫]
開啟 Arduino IDE,選擇[檔案 File] [偏好設定 Perferences],如下圖:在上圖紅色框處輸入以下網址:
https://dl.espressif.com/dl/package_esp32_index.json
選擇 [工具 Tools] → [開發板 Boards:] → [開發板管理員 Boards Manager],在搜尋的地方輸入 ESP332,找到ESP32擴充套件,按下[安裝],開始下載相關程式:
安裝完成後,回到主畫面,選擇[ESP32 Arduino] → [AI Thinker ESP32-CAM]。
接著選擇 [工具 Tools] → [序列埠 COM6] ,設定通訊埠,如下圖:
[程式一]
測試時,我使用 arkhipenko / esp32-cam-mjpeg-multiclient 的 Camera WebServer,這程式有經過修正,執行起來也比較穩定,但有幾個地方要注意設定:(1) 要在 esp32_camera_mjpeg_multiclient.ino 主程式下,建立一個 src 目錄,將 OV2640.cpp 和 OV2640.h 複製到這個目錄內。
(2) 將 camera_pins.h 放在跟主程式同一目錄內。
(3) 新建立一個空白的文字檔,命名為 home_wifi_multi.h,內容要放無線網路的 SSID 和密碼,記得將內容改成你環境下的 SSID 和密碼:
#define SSID1 "Your_SSID" #define PWD1 "Your_Password"(4) 修改主程式內的 ESP32CAM控制版的型號:我剛開始沒注意到這段要修改,一編譯程式就會失敗,要記得在你的 ESP32CAM 的型號前,將註解拿掉。以我的為例是AI_THINKER的型號,改成如下圖畫面:
[結果一]
開啟串列埠視窗,按下 ESP32CAM 上的 Reset 鍵,可以看到連線的 IP:使用瀏覽器,輸入ESP32CAM 取得的IP。
http://192.168.0.108/mjpeg/1結果畫面如下,每隔1秒鐘拍攝一張照片。
[程式二]
使用函式庫內的範例程式,開啟如下圖的程式範例:開啟程式後,有幾個地方需要修改:
(1) ESP32CAM的型號,請比照[程式一]的(4)修改。
(2) 修改 SSID 和 Password
const char* ssid = "Your_SSID"; const char* password = "Your_Password";繼續將程式編譯上傳至ESP32CAM。執行前,需將GPIO0和GND連接的線斷開。
[結果二]
開啟串列埠視窗,按下 ESP32CAM 上的 Reset 鍵,可以看到連線的 IP:使用瀏覽器,輸入ESP32CAM 取得的IP:
http://192.168.0.108
可以看到左方的選單,按下左下方的 [Get Still] 按鍵拍下照片,結果畫面如下:
請問您編譯一範例檔,約花費多久時間? 還是我電腦慢?
回覆刪除我的電腦編譯+上傳大概也需要 2-3分鐘。
刪除他說我的草稿碼太大,請問是甚麼問題?
回覆刪除[E][camera.c:1483] esp_camera_fb_get(): Failed to get the frame on time!Camera capture failed
回覆刪除他說拍攝失敗,請問是哪裡出錯了?是電壓不足嗎?
張貼留言