Arduino ESP32-CAM 學習之旅① 認識ESP32-CAM,搭建環境,執行第一個程式

2021-05-18 18:00:02

基於Arduino的ESP32-CAM開發技術全系列教學

1. 前言

最近閒著沒事,準備入手學習一波ESP32-CAM。主要學習資料就是國外大佬的學習網站。

當然,這是全英文的資料,博哥也覺得寫得非常好,所以儘量去翻譯過來,方便初學者學習。廢話不多說,直接上手。

在這裡插入圖片描述

2. ESP32-CAM介紹

在這裡插入圖片描述
這個ESP32-CAM是一個搭載ESP32-S晶片的小型攝像頭模組(目前大多數是搭載OV2640攝像頭)。除了OV2640攝像頭和幾個連線外設的GPIO外,它還具有一個microSD卡插槽,可用於儲存相機拍攝的影象或儲存檔案以供使用者端使用。

在這裡插入圖片描述
目前市面上的ESP32-CAM沒有搭載USB聯結器,所以一般開發者都是通過USB-TTL線以及連線模組的串列埠去下載韌體程式碼。

2.1 ESP32-CAM特性

  • The smallest 802.11b/g/n Wi-Fi BT SoC module
  • Low power 32-bit CPU,can also serve the application processor
  • Up to 160MHz clock speed, summary computing power up to 600 DMIPS
  • Built-in 520 KB SRAM, external 4MPSRAM
  • Supports UART/SPI/I2C/PWM/ADC/DAC
  • Support OV2640 and OV7670 cameras, built-in flash lamp
  • Support image WiFI upload
  • Support TF card
  • Supports multiple sleep modes
  • Embedded Lwip and FreeRTOS
  • Supports STA/AP/STA+AP operation mode
  • Support Smart Config/AirKiss technology
  • Support for serial port local and remote firmware upgrades (FOTA)

因為本身就是基於ESP32進行開發,所以支援絕大部分的ESP特性,剩下就是看記憶體空間以及特定特性(比如攝像頭等等)

2.2 ESP32-CAM 引腳

在這裡插入圖片描述

2.2.1 Power電源相關引腳

  • 三個GND引腳
  • 兩個VCC引腳,包括5V3.3V

2.2.2 Serial串列埠引腳

  • GPIO1(U0TXD)和GPIO3(U0RXD)屬於串列埠引腳,通過這兩個引腳來下載韌體程式碼。
  • GPIO16作為U2RXD,只是一個接收引腳

2.2.3 下載或者執行模式引腳

  • GPIO0決定了ESP32是處於燒錄(FlashingModel)模式還是執行(RunningModel)模式。當GPIO0接地,ESP32處於燒錄模式。

2.2.4 microSD卡相關引腳

  • GPIO 14: CLK
  • GPIO 15: CMD
  • GPIO 2: Data 0
  • GPIO 4: Data 1 (also connected to the on-board LED)
  • GPIO 12: Data 2
  • GPIO 13: Data 3

當然,如果你不需要用到SD卡,那麼這些引腳都可以作為普通引腳使用。

3.ESP32-CAM軟體環境搭建,編譯第一個Demo

  • 第一步,搭建ESP32 Arduino開發環境。具體參考

ESP32 開發之旅① 走進ESP32的世界 安裝開發環境

  • 第二步,安裝完環境之後,選擇工具->開發板,選擇 ESP32 Wrover Module
    在這裡插入圖片描述
  • 第三步,選擇 檔案->範例->ESP32->Camera,開啟例程
    在這裡插入圖片描述
    在這裡插入圖片描述
    修改兩個地方:

① 修改Wifi賬號和密碼
const char* ssid = 「REPLACE_WITH_YOUR_SSID」;
const char* password = 「REPLACE_WITH_YOUR_PASSWORD」;

②修改模組宏定義
// Select camera model
//#define CAMERA_MODEL_WROVER_KIT
//#define CAMERA_MODEL_ESP_EYE
//#define CAMERA_MODEL_M5STACK_PSRAM
//#define CAMERA_MODEL_M5STACK_WIDE
#define CAMERA_MODEL_AI_THINKER
在這裡插入圖片描述

這時候如果直接編譯會提示記憶體空間不足,還需要修改編譯選項(主要是關注Partition Scheme)。
在這裡插入圖片描述
基本上,到這一步都能編譯成功。

4.ESP32-CAM硬體環境搭建,執行第一個Demo

當然,別問我哪裡可以買到ESP32-CAM。。。。

4.1 硬體連線

在這裡插入圖片描述
在這裡插入圖片描述
網上很多貼文都是用3.3V,但是博主試過3.3V基本上沒有成功過,而是直接使用5V

Many FTDI programmers have a jumper that allows you to select 3.3V or 5V. Make sure the jumper is in the right place to select 5V. (檔案也推薦用5V,所以當一直處於Connecting狀態的時候,試試5V吧)

在這裡插入圖片描述
在這裡插入圖片描述

4.2 燒錄設定

4.2.1 確保GPIO0接到了GND

4.2.2 連線到電腦後,手動按一下RST復位,選擇正確Com口

4.2.3 下載程式碼

正常來說,需要花點時間下載,靜靜泡壺茶等待吧。

5. 第一個Demo

下載完畢之後,記得把GPIO0斷開GND,然後按一下RST,進入工作執行模式。

5.1 串列埠偵錯程式看看效果

開啟串列埠偵錯程式。波特率 115200
在這裡插入圖片描述
會看到有一個IP地址,我們會通過這個IP地址去存取ESP32的webServer

5.2 瀏覽器看看影象流

在這裡插入圖片描述
在這裡插入圖片描述
這裡面有一大堆的按鈕操作,同學們慢慢一個個試試玩玩看看效果。

6.可能遇到的問題

https://randomnerdtutorials.com/esp32-cam-troubleshooting-guide/
遇到奇奇怪怪的問題都可以去這裡看看,是一個寶庫。
這裡博主挑幾個常見的問題翻一下。

6.1 Failed to connect to ESP32: Timed out waiting for packet header

在這裡插入圖片描述
這個錯誤意味著ESP32-CAM並不是處於燒錄模式,或者沒有正確連線到USB下載器(比如RX TX接反了,或者接觸不良。。。)

解決思路:

① 接5V電源
在這裡插入圖片描述
② GPIO0必須接地
③ 確保連線正常
④ 選擇正確的Com口
⑤ USB下載器一般用CP2102

6.2 Sketch too big error – Wrong partition scheme selected

在這裡插入圖片描述
就是說你的編譯選項不對。習慣性選擇:

go to Tools > Partition Scheme, select 「Huge APP (3MB No OTA)「.