esp32引脚图及其功能 esp32的flash引脚配置

前不久注意到ESP32是基于李闯商城一个叫ESP32-CAM的摄像板,打算买一个玩玩,但是最近看到一个教程,一直没机会。我认为这是一块好板。今天的教程将重点介绍使用ESP32-CAM板构建视频流服务器。这个ESP32-CAM非常便宜(价格不到10美元),一个基于ESP32-S芯片的小型摄像头模块...

前不久注意到ESP32是基于李闯商城一个叫ESP32-CAM的摄像板,打算买一个玩玩,但是最近看到一个教程,一直没机会。我认为这是一块好板。今天的教程将重点介绍使用ESP32-CAM板构建视频流服务器。

这个ESP32-CAM非常便宜(价格不到10美元),一个基于ESP32-S芯片的小型摄像头模块人工智能思考者. 它本质上包括OV2***0相机内置ESP32模块和外设(传感器和执行器)可连接的几个GPIO,以及一个microSD卡插槽,可用于存储相机的图像。突出的事实是,它是专为独立摄像头应用程序设计的,ESP32-CAM没有配备USB端口等功能,所有这些功能都可以在普通的ESP-32主板上使用。缺少USB端口也意味着缺少FTDI芯片,要对电路板进行编程,您需要使用FTDI程序员。

这款ESP32-CAM非常便宜(价格不到10美元),基于ESP32-S芯片的小型摄像头模块人工智能思考者。它基本上包括OV2***0摄像机的内置ESP32模块和几个可以连接外设(传感器和执行器)的GPIO,以及一个突出的事实是,它是专为独立摄像机应用而设计的。ESP32-CAM没有配备USB口等功能,这些功能都可以在普通的ESP-32主板上使用。USB口的缺失也意味着FTDI芯片的缺失。要对电路板进行编程,您需要使用FTDI编程器。

ESP32-CAM(来源:Dealextreme)

ESP32-CAM板的一些功能如下:

802.11b/g/n Wi-Fi BT SoC模块,支持STA/AP/STA AP工作模式低功耗32位CPU,也可以服务于应用处理器最高160MHz时钟速度,总计算能力高达600 DMIPS内置520 KB SRAM,外部4MPRAM支持UART/SPI/I2C/PWM/ADC/DAC支持OV2***0和OV7670摄像头,并内置闪光灯支持图像WiFI上传SD卡插槽嵌入式Lwip和FreeRTOS支持智能配置/AirKiss技术支持串行端口本地和远程固件升级(FOTA)

为了演示ESP32-CAM如何工作,我们将构建一个视频流服务器,其IP地址可以从外部访问,以便从ESP32-CAM摄像机获取实时流。

这些步骤非常简单。在本教程结束时,您应该对ESP32-CAM足够熟悉,可以用它来构建一个更令人惊叹的项目。

必需组件

该项目的必需组件包括:;

ESP32-CAM3.3V FTDI Programmer跨接导线面包板

组件可以从其他链接购买。对于FTDI,使用SparkFun的FTDI基本突破,但你可以决定使用任何其他类似的板3.3V逻辑电平

原理图

ESP32-CAM附带连接的摄像头,如果您的情况不同,您只需将摄像头连接到所提供的端口即可。这就留下了ESP32-CAM和FTDI程序员之间的联系。FTDI编程器通过UART与ESP32-CAM通信,它将连接到ESP32-CAM的UART引脚。连接如下图所示;

ESP32-CAM附带一个连接的摄像头。如果你的情况不同,你只需要将相机连接到提供的端口。这就剩下ESP32-CAM和FTDI程序员之间的联系了。FTDI编程器通过UART与ESP32-CAM通信,UART将连接到ESP32-CAM的UART引脚。连接如下图所示;

示意图

再次检查连接,确保一切正常。

代码

我们将在这个项目中使用Arduino IDE,因此我们需要为ESP32设置Arduino IDE和板文件。按照我们之前编写的关于钬的教程中详细说明的步骤,使用Arduino IDE对ESP32”进行编程以完成该操作。

今天项目的代码是基于Camera Web ServerESP32库中的例子。这个项目背后的想法非常简单。ESP32-CAM板配置为web服务器,在网页上提供摄像头的实时反馈,因此与ESP位于同一网络的任何浏览器都可以通过访问此板的IP地址来查看实时反馈。

使用代码esp摄像头库和监听网络库。这个esp相机库包含了允许访问相机和拍摄照片和录制视频的功能,而esp的监听网络库包含了一些允许我们将ESP32设置为web服务器的功能。安装时安装这些库ESP32 Arduino IDE公司因此,它们不需要特殊的安装过程。

像往常一样,我将对代码的一些部分进行快速解释,并在项目结束时提供完整的代码。

代码从包含我们将使用的所有库开始。根据您的ESP32库/附加版本,camera pin.h文件将作为文件附加到草图,或者其内容将被***到草图中。在我们的例子中,它是作为一个文件附加的,并且该文件已经被添加到下载部分下的文件中。

#include "esp_camera.h"#include <WiFi.h>#include "camera_pins.h"

接下来,将指定正在使用的相机的型号。在这种情况下,我们将使用AI Thinker相机,因此指定。

// 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

接下来,我们提供访问点的凭证以连接到ESP32,并初始化StartCameraServer函数。

const char* ssid = "ssid";const char* password = "password";void startCameraServer();

接下来是invalid setting ()函数。我们通过初始化串行通信来启动该功能,然后配置摄像头并将其pin设置为存储在camera pin.h文件中。我们还设置了频率和像素格式设置。

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_for***t = PIXFORMAT_JPEG;

接下来,我们检查电路板是否有PSRAM并初始化它,设置帧大小和JPEG质量。

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; }

接下来,我们用创建的配置初始化摄像机。

// camera initesp_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 blightness 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");

我们通过WiFi调用StartCameraServer()。此功能可以自动开始将摄像机输入流传输到可通过主板的IP地址访问的网页(使用wifi.localip ()]功能显示在串行监视器上)

startCameraServer(); Serial.print("Camera Ready! Use 'http://"); Serial.print(WiFi.localIP()); Serial.println("' to connect");}

这个无效loop ()函数只是在每个刷新点引入一个延迟。

这个startCameraServer()函数是ESP32库中的内置函数之一。你可以去看看,以便更好地了解它是如何工作的。

该项目的完整代码如下所示,附在下载部分。

#include "esp_camera.h"#include <WiFi.h>#include "camera_pins.h"//// WARNING!!! Make sure that you have either selected ESP32 Wrover Module,// or another board which has PSRAM enabled//// 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_THINKERconst char* ssid = "ssid";const char* password = "password";void startCameraServer();void setup() { 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_for***t = 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 blightness 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 ***in code here, to run repeatedly: delay(10000);}

演示

将ESP-32 CAM连接到FTDI编程器,确保GPIO引脚连接到GND,然后将编程器连接到您的PC,然后按照以下步骤上传代码:

工具

>

董事会

然后选择

ESP32翻转模块

工具

>

港口

并选择ESP32/FTDI所连接的COM端口在

工具

>

分区方案

, select

巨大的应用程序(3MB无OTA)

Holmium按下ESP32-CAM车载复位按钮然后,单击上载按钮上载代码

上传完代码后,断开GPIO 0与GND的连接,打开串口监视器串口,波特率为一百和五万两百(和)。Start ()函数)。按下ESP板上显示的ESP-IP地址重置按钮。

ip地址

要从摄像机访问信号源,请在与ESP位于同一网络的设备上打开浏览器,然后在地址栏中输入ESP32-CAM IP的IP地址。按Start Streaming按钮,您应该能够看到正在播放的视频。

这个项目可以取得相当大的进展。只需很少或不需要额外编码,您就可以轻松地将项目连接到您的家庭助理,以便您可以从家庭助理应用程序中查看流。只要再努力一点,再加一张SD卡,我们就能像面部识别一样做到。

就是这样!请随时通过评论部分与我联系有关该项目的问题,也让我知道你是否会做出任何改进。

本文来自转身以后投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/555288.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 05-20
下一篇 05-20

相关推荐

  • 常用杀毒软件及其特点 常见杀毒软件及其功能有哪些

    卡巴斯基这个杀毒软件是俄罗斯生产的。就目前国内免杀的情况来看,卡巴斯基是最主要的目标(扫描未知病毒很厉害)。我们上网搜索“免杀”,在返回的页面上到处都是类似“某某木马杀了卡巴”的教程。从它在无杀教程中出现的频率可以看出,卡巴斯基的应用非常广泛。是真的。从个人

    2023-07-24 07:55:01
    795 0
  • 简述个别化教学及其环节

    核心答案:个别化教学是指让学生以自己的水平和速度进行学习的一种教学策略。其环节:(1)诊断学生的初始学业水平或学习不足。(2)提供教师与学生或机器与学生之间的一一对应关系。个别化教学是指让学生以自己的水平和速度进行学习的一种教学策略。其环节:(1)诊断学生的

    2023-07-21 08:59:01
    894 0
  • 砼怎么读音是什么意思 砼的读音及其含义

    前两天贴了一篇文章《混凝土为什么叫“混凝土”?工程人员,你知道吗?》,文中对“混凝土”一词的读音有激烈的讨论。有人说要读《书安》,也有人说要读《坑》、《奉》、《浑》、《旷》等。,你可以阅读一切。一、砼正确的读音 :[tng]一、混凝土的正确发音:[tng]与“通”字谐

    2023-07-20 21:09:01
    121 0
  • 购物网推广 电商必知推广及其策略

    近年来,电子商务在中国发展迅速,从一开始从事批发的阿里巴巴,到一开始主要从事闲置商品拍卖的淘宝,再到逐渐完善物流、诚信等体系,聚集各种品类,与各种电商平台竞争的现代电商。电子商务已经成为现代社会人们不可或缺的购物习惯。而电子商务已经成为每个企业必须进行的项

    2023-07-20 11:20:01
    373 0

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信