ESP32 Cam开发板引脚功能_主要类型_原理图
ESP32是一款集成Wi-Fi和蓝牙的低功耗、低成本片上系统微控制器,该开发板由ESPressif简单制造。自该ESP32开发板发布以来,已经推出并宣布了多种变体。
ESP32开发板具有不同的CPU和功能,并且所有板都可以共享类似的SDK并且大部分代码兼容。本文将介绍其中一种变体,ESP32 Cam概述、其工作原理及其应用。
什么是ESP32 Cam开发板?
ESP32 CAM模块是一款基于ESP32的低成本全功能微控制器,集成了小尺寸OV2640摄像头模块和microSD卡插槽。该模块将蓝牙、WiFi和BLE Beacon与两个32位高性能LX6 CPU集成在一起。
该模块的频率调节范围为80MHz至240MHz,它采用级流水线架构,霍尔传感器,片上传感器,温度传感器等。该类型模块适用于工业无线控制,家庭智能设备,无线监控和物联网应用,这些应用需要相机具有卓越的功能例如图像识别和跟踪。
ESP32 Cam工作原理
ESP32-CAM模组是基于ESP32的低功耗小尺寸摄像头模组,该模块配有OV2640摄像头并提供板载TF卡插槽。该板的4MB PSRAM用于将相机的图像缓冲到视频流中,并允许你在图像中使用更高的质量,而不会导致ESP32崩溃。该板具有可闪烁的板载LED和许多用于连接外设的GPIO。
ESP32-CAM引脚配置
ESP32-CAM包含16个引脚,其中具有相同功能的引脚均等分组。
- 电源引脚
ESP32 Cam包含两个电源引脚; 5V和3V3,因此该模块通过3.3V/5V引脚供电。该模块的VCC引脚通常从板载稳压器输出3.3V,但可以通过靠近VCC引脚的零欧姆链路配置为5V输出。
- GND为模块的接地引脚。
- GPIO引脚
该模块总共包括32个GPIO引脚,但其中许多在内部用于相机和PSRAM。因此该模块只有10个GPIO引脚,可以分配给不同的外设任务,例如:ADC、SPI、UART和触摸。
- 串口引脚
ESP32-S芯片包含两个UART接口; UART0和UART2。但只需断开UART2的RX引脚(例如GPIO 16),即可使UART0仅在ESP32-CAM上可用。这些引脚主要用于闪烁和连接到不同的UART设备,如指纹传感器、GPS、距离传感器等。
- MicroSD卡引脚
这些引脚用于连接microSD卡。如果你不使用microSD卡,这些引脚也可以用作常规输入和输出。
- ADC引脚
仅ESP32-CAM上有两个ADC2引脚已断开,但这些引脚由WiFi驱动程序内部使用,并且在启用Wi-Fi时无法使用它们。
- GPIO
这些模块包括七个电容式触摸感应GPIO。一旦人手指等电容负载靠近GPIO,该模块就会注意到电容的变化。
- SPI引脚
ESP32-CAM仅在从模式和主模式下包含1个 SPI (VSPI)。
- PWM引脚
ESP32-CAM包含10个通道的PWM引脚,通过PWM控制器进行控制。因此PWM的输出可用于驱动LED和数字电机。
ESP32-CAM功能特性
- 该模块支持WiFi和蓝牙。
- 它有一个OV2640闪光灯相机。
- 板载TF卡插槽,最大支持4G TF卡用于数据存储。
- 支持Wi-Fi视频监控和图像上传。
- 它支持不同的睡眠模式,深度睡眠电流低至6mA。
- 可通过排针轻松访问控制接口。
- 很容易集成和嵌入到消费产品中
- ESP-32S WIFI模块。
- ESP32-D0WD处理器。
- 内置 32Mbit闪存。
- 内部512KB RAM。
- 外部4M PSRAM。
- 板载PCB天线。
- IEEE 802.11 b/g/n/e/i WiFi协议。
- 蓝牙是蓝牙4.2 BR/EDR和BLE。
- Station或SoftAP或SoftAP+Station WIFI模式。
- WPA或WPA2或WPA2-企业版或WPS安全性。
- 其输出图像格式为JPEG、GRAYSCALE 和 BMP。
- 最大支持4G TF卡。
- UART/ I2C /SPI/PWM外设接口。
- 输入/输出端口-9。
- UART 波特率默认为 115200bps。
- 电源为5V。
- 5V闪光关闭电流为180mA
- 闪光灯开启,5V时最大亮度为310mA。
- 深度睡眠电流为5V时6mA。
- 现代睡眠电流为5V时20mA。
- 浅睡眠电流为5V时6.7mA。
- 工作温度范围为-20℃至85℃。
- 储存环境-40℃至90℃。
- 其尺寸为40.5mm x 27mm x 4.5mm。
ESP32 Cam类型
下面介绍了不同类型的ESP32 Cam板。
1、AI-Thinker
ESP32-CAM AI-Thinker是一款非常受欢迎的ESP32 CAM开发板,配有ESP32-S芯片和常规2MP OV2640摄像头。这种类型的ESP32 CAM包括PSRAM – 4MB,用于将图像缓冲到来自相机的视频流或其他任务中,并允许你在图片中使用高质量,而不会与ESP32发生冲突。
该板仅支持带有10个可用GPIO和电源引脚的microSD卡,并非所有GPIO引脚都被使用,但有些引脚被microSD卡或相机使用。该板配有板载天线,同时还配有IPEX连接器,允许你使用外部天线来扩展Wi-Fi通信范围。
该板有一个板载重置按钮,可帮助重新启动模块,还有一个内置LED,可用作闪光灯,在视频流或捕获图片之前照亮该区域。
2、ESP-EYE
基于ESP32的ESP-EYE板致力于通过语音唤醒和人脸识别实现AI(人工智能)。该板配有板载麦克风、2MP OV2640摄像头、启动、功能按钮、两个LED和重置。该板具有一些功能,例如;Flash -4MB、PSRAM – 8MB、C型Micro USB连接器、板载天线和IPEX连接器。
该板的主要优点是,USB Type-C连接器有助于非常快速轻松地将代码上传到该板。该板的麦克风仅允许您为您的应用程序添加语音功能,PSRAM – 8MB将确保您的模块在使用高图像质量设置时不会发生冲突。
3、Freenove ESP32-Wrover CAM
该款ESP32 CAM开发板配备ESP32-Wrover-E芯片。该模块包括OV2640摄像头,使用和设置都非常简单。该模块包括一个USB至UART转换器,因此可以轻松地将代码上传到板中。
该板不提供microSD卡插槽,但配备了不同的可用GPIO,因此可以根据需要轻松连接外部microSD卡模块。该板包含一些裸露的GPIO,有助于连接其它外设。
此外,如果不使用该模块的摄像头,那么可以将其用作具有多个可访问GPIO的普通ESP32。该模块还配有重置和启动按钮,可以非常轻松地重置该模块或根据需要将其置于闪烁模式。
4、TTGO T-Camera Plus
TTGO T-Camera Plus模块支持microSD卡、麦克风、板载复位按钮、3.7V锂电池、电池管理电路、micro USB接口和1.3 TFT显示屏。该模块附带一些GPIO引脚,用于连接板载BME280传感器。但该传感器会在模块上变热,因此制造商决定消除该传感器,尽管你仍然可以访问GPIO,并且可以连接其它I2C外设。因此,只需通过Grove连接器即可访问这些GPIO。
5、M5-Camera A/B
M5-Camera A/B与带有OV2640摄像头的其它类型模块类似。该模块具有PSRAM-4MB,因此可以以更高的质量捕获图片和流式传输。该模块包括一个带有Grove连接器的乐高式外壳,非常适合连接其它M5-Stack扩展,例如:MPU6050陀螺仪或加速度计、麦克风以及BME280温度、压力和湿度传感器。
该板有一个USB Type-C连接器,有助于将新代码上传到模块中,还有一个外部RST按钮,用于重新启动模块,并且不包括暴露的GPIO。该模块的主要好处是,它不包含任何电线或可见的电子元件。如果想包含陀螺仪、BME280传感器或麦克风,则必须使用Grove连接器。
6、M5-Camera Model
这种类型的ESP32摄像头模块包括OV2640摄像头、0.91英寸I2C SSD1306 OLED显示屏、外部天线、功能按钮、一些外露GPIO、micro-USB和电池连接器。该OLED显示屏有助于显示开发板的IP地址,否则调试时会出现任何错误。该板有四个可访问的GPIO,其中两个用于I2C通信,其余的适用于连接伺服电机。该开发板有一个连接器,有助于连接3.7V锂电池。
通过使用该板,代码上传非常简单,因为它有一个USB连接器,可用于供电和上传代码。该板的主要缺点是,它不支持microSD卡或外部PSRAM,因此在处理方面受到一些限制。
如何将ESP32 Cam与Arduino连接?
ESP32 Cam与Arduino的接口如下所示。该接口用于通过Arduino Uno上传ESP32 Cam代码。有多种方法可用于在 ESP32 cam中上传代码。实现此接口所需的组件主要包括ESP32 Cam模块、Arduino Uno、跳线和Arduino IDE软件。
ESP32 Cam与Arduino的连接如下:
- Arduino Uno的5V引脚连接到ESP32 Cam的5V引脚。
- Arduino Uno的GND引脚连接到ESP32 Cam的GND引脚。
- Arduino Uno的Tx引脚连接到ESP32 Cam的Tx引脚。
- Arduino Uno的Rx引脚连接到ESP32 Cam的Rx引脚。
#include “esp_camera.h” #include <WiFi.h> ; #include “soc/soc.h” #include “soc/rtc_cntl_reg.h” // // WARNING!!! Make sure that you have either selected ESP32 Wrover Module, // or another board which has PSRAM enabled // #define CAMERA_MODEL_AI_THINKER #include “camera_pins.h” const char* ssid = “YOUR_SSID”; const char* password = “YOUR_PASSWORD”; void startCameraServer(); void setup() { WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0 ); Serial.begin(115200); Serial.setDebugOutput(true); Serial.println(); camera_config_t config; config.ledc_channel = LEDC_CHANNEL_0; config.ledc_timer = LEDC_TIMER_0; config.pin_d0 = Y2_GPIO_NUM; config.pin_d1 = Y3_GPIO_NUM; config.pin_d2 = Y4_GPIO_NUM; config.pin_d3 = Y5_GPIO_NUM; config.pin_d4 = Y6_GPIO_NUM; config.pin_d5 = Y7_GPIO_NUM; config.pin_d6 = Y8_GPIO_NUM; config.pin_d7 = Y9_GPIO_NUM; config.pin_xclk = XCLK_GPIO_NUM; config.pin_pclk = PCLK_GPIO_NUM; config.pin_vsync = VSYNC_GPIO_NUM; config.pin_href = HREF_GPIO_NUM; config.pin_sscb_sda = SIOD_GPIO_NUM; config.pin_sscb_scl = SIOC_GPIO_NUM; config.pin_pwdn = PWDN_GPIO_NUM; config.pin_reset = RESET_GPIO_NUM; config.xclk_freq_hz = 20000000; config.pixel_format = PIXFORMAT_JPEG; //init with high specs to pre-allocate larger buffers if(psramFound()){ config.frame_size = FRAMESIZE_UXGA; config.jpeg_quality = 10; config.fb_count = 2; } else { config.frame_size = FRAMESIZE_SVGA; config.jpeg_quality = 12; config.fb_count = 1; } #if defined(CAMERA_MODEL_ESP_EYE) pinMode(13, INPUT_PULLUP); pinMode(14, INPUT_PULLUP); #endif // camera init esp_err_t err = esp_camera_init(&config); if (err != ESP_OK) { Serial.printf(“Camera init failed with error 0x%x”, err); return; } sensor_t * s = esp_camera_sensor_get(); //initial sensors are flipped vertically and colors are a bit saturated if (s->id.PID == OV3660_PID) { s->set_vflip(s, 1);//flip it back s->set_brightness(s, 1);//up the brightness just a bit s->set_saturation(s, -2);//lower the saturation } //drop-down frame size for higher initial frame rate s->set_framesize(s, FRAMESIZE_QVGA); #if defined(CAMERA_MODEL_M5STACK_WIDE) s->set_vflip(s, 1); s->set_hmirror(s, 1); #endif WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print(“.”); } Serial.println(“”); Serial.println(“WiFi connected”); startCameraServer(); Serial.print(“Camera Ready! Use ‘http://”); Serial.print(WiFi.localIP()); Serial.println(“‘ to connect”); } void loop() { // put your main code here, to run repeatedly: delay(10000); }
根据上面的接口图,可以简单地将ESP32 cam板与Arduino连接起来。确认你已通过GND连接GPIO0并单击上传按钮。代码上传完成后,取下GPIO0的跳线。
连接和代码上传完成后,ESP32 cam板就可以进行测试了。该代码将启动esp32摄像头服务器,你可以开始流式传输视频并拍照。打开串口监视器并重置ESP32模块以查看摄像机Web服务器启动的IP地址。
在浏览器中输入类似的IP地址并按Enter键,然后 Web服务器页面将打开并显示一些设置。因此,向下滚动此设置并单击“Start Stream”。之后,ESP32摄像头模块开始传输视频。
因此,ESP32 cam是一种用于基于物联网的项目的低成本模块。因此,使用Arduino Uno上传 ESP32 Cam代码是在ESP32 Cam中上传代码的一种非常简单的方法。
ESP32 Cam优缺点
ESP32 Cam的优点包括以下几点内容:
-
配备了具有特定编程语言的AI(人工智能),可以设置主要用于调查目的的O/P。
-
该模块通过Arduino UNO微控制器组合并直接使用FTDI或USB转TTL。
-
该板的主要优点是USB Type-C连接器,因此可以轻松快速地将代码上传到该板。
-
麦克风仅允许你为项目添加语音功能,8MB PSRAM保证你的主板在使用更高图像的质量设置时不会发生冲突。
-
该模块包括一个非常有竞争力的微型相机模块,可作为最小系统独立运行。
-
支持Wi-Fi上传图片、多种睡眠模式、支持TF卡等。
-
支持SPI /UART/I2C/ADC/PWM/DAC。
-
支持AP/STA/STA+AP工作模式和智能配置或AirKiss技术。
-
它支持带有内置闪光灯的 OV7670 和 OV2640 相机。
ESP32 Cam的缺点包括以下几点内容:
-
价格昂贵。
-
该板不包含USB转UART接口,因此无法使用USB电缆将该板直接连接到PC。
-
该板的视野很窄。
-
它不具备夜视能力。
-
其电缆长度较短。
-
它的RAM和图像传感器支持有限。
-
其I/O引脚有限。
-
ESP32 CAM板在运行无线电时会消耗大量电流,因此会影响WiFi和蓝牙的性能。
-
它没有任何电源连接器或USB编程连接器。
应用领域
ESP32 Cam的应用包括以下内容。
-
广泛应用于各种物联网应用。
-
适用于工业无线控制、家庭智能设备、无线监控、无线定位系统信号、QR无线识别等。
-
这些模块提供了一种低成本的方法来设计非常先进的家庭自动化项目,其中包括不同的功能,如拍照、视频、面部识别等。
-
ESP32-CAM是DIY项目和原型构建的理想解决方案。
-
它用于设计人脸识别系统,无需任何复杂的编程和任何附加组件
-
ESP32-CAM简单地采用了DIP封装,为客户提供了高可靠性的连接技术,因此主要在各种物联网应用中非常方便。
总结
以上就是关于ESP32 Cam工作原理、特性、规格、类型、接口、优点、缺点及其应用的相关内容概述,可以看出,它是一个功能强大且多功能的模块,可根据你的要求提供多种功能和规格。