關(guān)于 ESP32-CAM

ESP32-CAM 是一個(gè)嵌入式模塊,具有攝像頭、微控制器和無線接口。 它可用于多種應(yīng)用,例如安全、監(jiān)控和圖像處理。 它集成了 Wi-Fi 和藍(lán)牙技術(shù),可以隨時(shí)隨地輕松連接和控制。 它還支持圖像數(shù)據(jù)傳輸、視頻流、音頻流和其他通信協(xié)議。

ESP32 CAM 的特點(diǎn)

  • 相機(jī)接口(高達(dá) 24MP)
  • Wi-Fi 和藍(lán)牙連接
  • ESP32-D0WDQ6 雙核處理器
  • 520KB 靜態(tài)內(nèi)存
  • 4MB 閃存
  • OV2640 2MP 攝像頭模塊
  • 支持 JPEG 和 BMP 格式
  • USB C型接口
  • 鋰聚合物電池連接器
  • 32位CPU,最高240MHz
  • 集成 802.11b/g/n HT40 Wi-Fi 收發(fā)器
  • 集成雙模藍(lán)牙(經(jīng)典和 BLE)
  • 集成PCB天線
  • 集成 8MByte PSRAM
  • 車載攝像頭
  • 相機(jī)外部連接器
  • 5個(gè)可編程 GPIO
  • 2個(gè) UART、2個(gè) SPI、I2C、I2S、IRDA、PWM、GPIO

ESP32 CAM 引腳

ESP32 CAM 引腳

ESP32-CAM 有三個(gè) GND 引腳和兩個(gè)電源引腳:3.3V 或 5V。
 
GPIO 1 和 GPIO 3 是串行引腳。您需要這些引腳將代碼上傳到您的電路板。此外,GPIO 0 起著重要作用,因?yàn)樗鼪Q定了 ESP32 是否處于閃爍模式。當(dāng) GPIO 0 連接到 GND 時(shí),ESP32 處于閃爍模式。
 
以下引腳在內(nèi)部連接到 microSD 讀卡器:
 
GPIO 14:CLK
GPIO 15:CMD
GPIO 2:數(shù)據(jù) 0
GPIO 4:數(shù)據(jù) 1(也連接到板載 LED)
GPIO 12:數(shù)據(jù) 2
GPIO 13:數(shù)據(jù) 3
 

ESP32 Cam項(xiàng)目開發(fā)

環(huán)境搭建

硬件

  • ESP32-CAM模組
  • OV2640攝像頭
  • USB轉(zhuǎn)串口板(USB-TTL)
  • 杜邦線
  • 5V 2A電源
ESP32-CAM模塊單獨(dú)供電,U0TXD、U0RXD和GND接串口板和電腦連接,攝像頭通過排線連接模塊。
 
ESP32-CAM模組的GPIO0在編程前需要接地復(fù)位。編程完成后,GPIO0 懸空復(fù)位,進(jìn)入工作模式。
 

系統(tǒng)環(huán)境

ESP32 可以在不同的系統(tǒng)上開發(fā)。這里介紹一下Ubuntu桌面版(版本為Ubuntu 18.04.3)的開發(fā)環(huán)境。
設(shè)置下載服務(wù)器

運(yùn)行“Software & Updates”,點(diǎn)擊“Ubuntu Software”選項(xiàng)卡上的“Download from”下拉框,選擇“Other...”,找到“China”選擇任意服務(wù)器,點(diǎn)擊“Choose Server”,然后輸入密碼來確認(rèn)。關(guān)閉時(shí)會提示更新信息,點(diǎn)擊“重新加載”即可更新。

ESP32 Cam系統(tǒng)環(huán)境:選擇下載服務(wù)器

安裝軟件
sudo apt-get purge vim-common
sudo apt-get install vim
sudo apt install git
安裝依賴環(huán)境

sudo apt-get install git wget flex bison gperf python python-pip python-setuptools python-serial python-click python-cryptography python-future python-pyparsing python-pyelftools cmake ninja-build ccache libffi-dev libssl-dev

項(xiàng)目代碼及開發(fā)環(huán)境

拉取項(xiàng)目

同時(shí)拉取項(xiàng)目和子模塊:

git clone --recurse-submodules https://github.com/Ai-Thinker-Open/Ai-Thinker-Open_ESP32-CAMERA_LAN.git

如果拉取中斷,需要進(jìn)入項(xiàng)目目錄重新拉取子模塊:

cd Ai-Thinker-Open_ESP32-CAMERA_LAN/
git submodule update --init --recursive
開發(fā)框架

項(xiàng)目拉取后,可以看到項(xiàng)目目錄下多了一個(gè)esp-idf目錄。esp-idf (Espressif IoT Development Framework) 是esp開發(fā)框架。項(xiàng)目開發(fā)環(huán)境通過esp-idf搭建。本項(xiàng)目中的idf版本為esp-idf-v4.0。

設(shè)置 IDF_PATH 路徑

編輯 .bashrc 配置文件:

cd esp-idf/
vim ~/.bashrc

使用vim命令打開.bashrc,使用鍵盤將光標(biāo)移動到文件末尾,按a進(jìn)入,在末尾回車到一個(gè)空行,按照以下格式輸入相應(yīng)的內(nèi)容設(shè)置 IDF_PATH 變量:

# export IDF_PATH=,示例如下
export IDF_PATH=/home/user/Desktop/esp32/Ai-Thinker-Open_ESP32-CAMERA_LAN/esp-idf

輸入完成后按esc取消編輯,:wq保存退出,執(zhí)行如下命令使修改立即生效:

source ~/.bashrc

查詢變量是否有效:

echo $IDF_PATH

如果打印出的路徑與設(shè)置一致,則進(jìn)行下一步,否則需要重新操作。

安裝開發(fā)工具

在 esp-idf 目錄中運(yùn)行 install.sh 腳本:

echo $IDF_PATH

然后終端提示下載信息。打印“All done!”后,安裝完成。這時(shí)運(yùn)行export.sh腳本設(shè)置環(huán)境變量:

. ./export.sh

注意第一個(gè)“.”后有一個(gè)空格,每次打開終端進(jìn)行項(xiàng)目開發(fā)調(diào)試時(shí)都需要執(zhí)行。
腳本執(zhí)行后,“完成!” 打印出來表示成功,然后就可以配置、編譯、下載工程了。
 

配置、編譯和下載

項(xiàng)目配置

進(jìn)入demo工程目錄“Ai-Thinker-Open_ESP32-CAMERA_LAN/examples/single_chip/camera_web_server”

cd ../examples/single_chip/camera_web_server/

然后我們開始配置項(xiàng)目:

make menuconfig

提示“recipe for target 'mconf.o' failed”是依賴問題,輸入sudo apt-get install libncurses5-dev安裝相關(guān)依賴再試。

配置界面如下:

使用方向鍵和回車鍵移動光標(biāo)進(jìn)行操作,進(jìn)入“Serial flasher config”界面,參考下圖進(jìn)行設(shè)置,這里串口設(shè)置為“/dev/ttyUSB0”,需要設(shè)置運(yùn)行串口連接ESP32-CAM模組。

進(jìn)入“Camera Web Server”->“Camera Pins”->“Select Camera Pinout”界面,選擇“ESP32-CAM by AI-Thinker”。

進(jìn)入“Camera Web Server”->“Wifi Settings”界面設(shè)置Wifi模式,“Wifi STA SSID”&“Wifi STA Password”和“Wifi AP SSID”&“Wifi AP Password”可設(shè)置其中一項(xiàng)。
 
(Wifi STA表示Station模式,ESP32-CAM連接其他設(shè)備的Wifi網(wǎng)絡(luò);Wifi AP表示AP模式,電腦或手機(jī)連接ESP32-CAM開啟的Wifi熱點(diǎn))
 
這里使用的是Wifi AP模式,下面的“Wifi AP IP地址”設(shè)置模塊在Wifi AP模式下的IP地址。
設(shè)置完成后,使用左右鍵將下光標(biāo)移至“”并按回車保存,再移至“”退出配置。
 

編譯下載

編譯:
 

make

 
下載:

make flash

需要注意的是模塊GPIO0在編程前要接地復(fù)位。
 
下載make flash時(shí),默認(rèn)使用之前配置的端口“/dev/ttyUSB0”,其他端口可以通過-p參數(shù)指定:make flash -p [PORT]
 
如果提示打開串口失敗可能是權(quán)限問題,可以用sudo chmod -R 777 打開串口的所有權(quán)限,比如sudo chmod -R 777 /dev/ttyUSB0,但在拔掉串口后,打開的串口的所有權(quán)限都將失效。另外,可以將當(dāng)前用戶添加到撥出組 sudo usermod -a -G dialout
 
接收串口打印信息:
 

make monitor

需要注意的是模塊GPIO0工作時(shí)要懸空上電或復(fù)位。
此外,您還可以使用串口助手查看模塊打印信息。
 

拍照和錄像

下載demo固件后,ESP32-CAM模組上電運(yùn)行。電腦或手機(jī)連接模塊所在網(wǎng)絡(luò),在瀏覽器中訪問模塊地址。
 
Station模式下,模塊地址為Wifi熱點(diǎn)設(shè)備分配給模塊的IP地址;AP模式下為“Wifi AP IP地址”設(shè)置的地址。
 
在模塊頁面,點(diǎn)擊左側(cè)操作欄下方的“Get Still”按鈕可以拍照,點(diǎn)擊“Start Stream”按鈕可以錄制視頻。拍攝照片或視頻后,圖像將顯示在網(wǎng)頁上。
 
在手機(jī)端查看模組操作界面如下,可以點(diǎn)擊圖片右上角的“保存”保存圖片。