Arduino筆記(89):ESP32CAM初次設定並透過網頁瀏覽照片

先前完成了幾項ESP32的功能實作,最近剛好託朋友在淘寶買些電子零件,想瞭解一下加了相機鏡頭的 ESP32 如何運作?例如感應拍照、透過 Web Server 看影像等功能,或是當作固定的即時影像功能等。初次設定的方法跟先前寫的 Arduino筆記(35):ESP-32 初始化設定&上傳程式Timed out 的解決方法 類似,以下先瞭解一下 ESP32 的功能規格以及如何進行初次設定。

以下是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)
ESP32CAM的接腳線路如下圖:

[材料]

  • USB轉TTL序列傳輸線 CP2102
  • ESP32CAM開發板
  • 排線 x 5 條

[接線圖]

ESP32CAMCP2012
5V5V(VCC)
GNDGND
V0RTX
V0TRX
IO0GND

上傳程式到 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] 按鍵拍下照片,結果畫面如下:

[參考資料]

4 留言

  1. 請問您編譯一範例檔,約花費多久時間? 還是我電腦慢?

    回覆刪除
    回覆
    1. 我的電腦編譯+上傳大概也需要 2-3分鐘。

      刪除
  2. 他說我的草稿碼太大,請問是甚麼問題?

    回覆刪除
  3. [E][camera.c:1483] esp_camera_fb_get(): Failed to get the frame on time!Camera capture failed
    他說拍攝失敗,請問是哪裡出錯了?是電壓不足嗎?

    回覆刪除

張貼留言

較新的 較舊