关于 ESP32-CAM

ESP32-CAM 是一个嵌入式模块,具有摄像头、微控制器和无线接口。 它可用于多种应用,例如安全、监控和图像处理。 它集成了 Wi-Fi 和蓝牙技术,可以随时随地轻松连接和控制。 它还支持图像数据传输、视频流、音频流和其他通信协议。

ESP32 CAM 的特点

  • 相机接口(高达 24MP)
  • Wi-Fi 和蓝牙连接
  • ESP32-D0WDQ6 双核处理器
  • 520KB 静态内存
  • 4MB 闪存
  • OV2640 2MP 摄像头模块
  • 支持 JPEG 和 BMP 格式
  • USB C型接口
  • 锂聚合物电池连接器
  • 32位CPU,最高240MHz
  • 集成 802.11b/g/n HT40 Wi-Fi 收发器
  • 集成双模蓝牙(经典和 BLE)
  • 集成PCB天线
  • 集成 8MByte PSRAM
  • 车载摄像头
  • 相机外部连接器
  • 5个可编程 GPIO
  • 2个 UART、2个 SPI、I2C、I2S、IRDA、PWM、GPIO

ESP32 CAM 引脚

ESP32 CAM 引脚

ESP32-CAM 有三个 GND 引脚和两个电源引脚:3.3V 或 5V。
 
GPIO 1 和 GPIO 3 是串行引脚。您需要这些引脚将代码上传到您的电路板。此外,GPIO 0 起着重要作用,因为它决定了 ESP32 是否处于闪烁模式。当 GPIO 0 连接到 GND 时,ESP32 处于闪烁模式。
 
以下引脚在内部连接到 microSD 读卡器:
 
GPIO 14:CLK
GPIO 15:CMD
GPIO 2:数据 0
GPIO 4:数据 1(也连接到板载 LED)
GPIO 12:数据 2
GPIO 13:数据 3
 

ESP32 Cam项目开发

环境搭建

硬件

  • ESP32-CAM模组
  • OV2640摄像头
  • USB转串口板(USB-TTL)
  • 杜邦线
  • 5V 2A电源
ESP32-CAM模块单独供电,U0TXD、U0RXD和GND接串口板和电脑连接,摄像头通过排线连接模块。
 
ESP32-CAM模组的GPIO0在编程前需要接地复位。编程完成后,GPIO0 悬空复位,进入工作模式。
 

系统环境

ESP32 可以在不同的系统上开发。这里介绍一下Ubuntu桌面版(版本为Ubuntu 18.04.3)的开发环境。
设置下载服务器

运行“Software & Updates”,点击“Ubuntu Software”选项卡上的“Download from”下拉框,选择“Other...”,找到“China”选择任意服务器,点击“Choose Server”,然后输入密码来确认。关闭时会提示更新信息,点击“重新加载”即可更新。

ESP32 Cam系统环境:选择下载服务器

安装软件
sudo apt-get purge vim-common
sudo apt-get install vim
sudo apt install git
安装依赖环境

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

项目代码及开发环境

拉取项目

同时拉取项目和子模块:

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

如果拉取中断,需要进入项目目录重新拉取子模块:

cd Ai-Thinker-Open_ESP32-CAMERA_LAN/
git submodule update --init --recursive
开发框架

项目拉取后,可以看到项目目录下多了一个esp-idf目录。esp-idf (Espressif IoT Development Framework) 是esp开发框架。项目开发环境通过esp-idf搭建。本项目中的idf版本为esp-idf-v4.0。

设置 IDF_PATH 路径

编辑 .bashrc 配置文件:

cd esp-idf/
vim ~/.bashrc

使用vim命令打开.bashrc,使用键盘将光标移动到文件末尾,按a进入,在末尾回车到一个空行,按照以下格式输入相应的内容设置 IDF_PATH 变量:

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

输入完成后按esc取消编辑,:wq保存退出,执行如下命令使修改立即生效:

source ~/.bashrc

查询变量是否有效:

echo $IDF_PATH

如果打印出的路径与设置一致,则进行下一步,否则需要重新操作。

安装开发工具

在 esp-idf 目录中运行 install.sh 脚本:

echo $IDF_PATH

然后终端提示下载信息。打印“All done!”后,安装完成。这时运行export.sh脚本设置环境变量:

. ./export.sh

注意第一个“.”后有一个空格,每次打开终端进行项目开发调试时都需要执行。
脚本执行后,“完成!” 打印出来表示成功,然后就可以配置、编译、下载工程了。
 

配置、编译和下载

项目配置

进入demo工程目录“Ai-Thinker-Open_ESP32-CAMERA_LAN/examples/single_chip/camera_web_server”

cd ../examples/single_chip/camera_web_server/

然后我们开始配置项目:

make menuconfig

提示“recipe for target 'mconf.o' failed”是依赖问题,输入sudo apt-get install libncurses5-dev安装相关依赖再试。

配置界面如下:

使用方向键和回车键移动光标进行操作,进入“Serial flasher config”界面,参考下图进行设置,这里串口设置为“/dev/ttyUSB0”,需要设置运行串口连接ESP32-CAM模组。

进入“Camera Web Server”->“Camera Pins”->“Select Camera Pinout”界面,选择“ESP32-CAM by AI-Thinker”。

进入“Camera Web Server”->“Wifi Settings”界面设置Wifi模式,“Wifi STA SSID”&“Wifi STA Password”和“Wifi AP SSID”&“Wifi AP Password”可设置其中一项。
 
(Wifi STA表示Station模式,ESP32-CAM连接其他设备的Wifi网络;Wifi AP表示AP模式,电脑或手机连接ESP32-CAM开启的Wifi热点)
 
这里使用的是Wifi AP模式,下面的“Wifi AP IP地址”设置模块在Wifi AP模式下的IP地址。
设置完成后,使用左右键将下光标移至“”并按回车保存,再移至“”退出配置。
 

编译下载

编译:
 

make

 
下载:

make flash

需要注意的是模块GPIO0在编程前要接地复位。
 
下载make flash时,默认使用之前配置的端口“/dev/ttyUSB0”,其他端口可以通过-p参数指定:make flash -p [PORT]
 
如果提示打开串口失败可能是权限问题,可以用sudo chmod -R 777 打开串口的所有权限,比如sudo chmod -R 777 /dev/ttyUSB0,但在拔掉串口后,打开的串口的所有权限都将失效。另外,可以将当前用户添加到拨出组 sudo usermod -a -G dialout
 
接收串口打印信息:
 

make monitor

需要注意的是模块GPIO0工作时要悬空上电或复位。
此外,您还可以使用串口助手查看模块打印信息。
 

拍照和录像

下载demo固件后,ESP32-CAM模组上电运行。电脑或手机连接模块所在网络,在浏览器中访问模块地址。
 
Station模式下,模块地址为Wifi热点设备分配给模块的IP地址;AP模式下为“Wifi AP IP地址”设置的地址。
 
在模块页面,点击左侧操作栏下方的“Get Still”按钮可以拍照,点击“Start Stream”按钮可以录制视频。拍摄照片或视频后,图像将显示在网页上。
 
在手机端查看模组操作界面如下,可以点击图片右上角的“保存”保存图片。