0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用ESP32摄像头模块构建简单的CCTV安全摄像头

科技观察员 来源:electroschematics 作者:electroschematics 2024-02-11 11:54 次阅读

我们将向您展示如何使用 ESP32 摄像头模块构建自己的简单 CCTV安全摄像头。从修改硬件连接到编码功能和启用远程访问,加入我们的分步教程,打造经济高效且可定制的监控解决方案。

我们需要构建这些部件的组件是:

ESP32 凸轮

FTDI编程

跳线

亚克力切割身体部位

Micro-SD

ESP32 摄像头模组

ESP32 相机是由乐鑫科技开发的一款功能强大、用途广泛的微控制器,以其双核处理能力、内置 Wi-Fi蓝牙功能以及丰富的 GPIO
引脚阵列而闻名,使其成为各种物联网应用的首选。其双核架构允许同时执行任务,从而能够高效处理复杂的操作。

之前,我们已经使用 ESP32 摄像头模组构建了智能考勤系统和口罩检测系统,如果您有兴趣,可以查看这两个项目。

ESP32 摄像头模组

ESP32 摄像头模组引脚排列

ESP32 CAM 模组通常具有引脚排列,其中包括各种 GPIO 引脚,可实现多功能连接。

ESP32 摄像头模组引脚排列

通常,它包括电源和接地引脚、用于相机的 GPIO 引脚、用于存储扩展的 SD 卡插槽、用于串行通信UART 引脚以及可用于各种用途的通用 GPIO
引脚,例如 I2C 或 SPI
通信、数字输入/输出,或用于与传感器和执行器连接。此外,它还通常包括用于启用闪存、控制相机以及促进启动和复位等编程模式的引脚。

FTDI 模块引脚排列

FTDI模块也称为(Future Technology Devices International)模块。

FTDI 模块引脚排列

它通常用于 USB 到串行通信,通常具有包括以下引脚排列:

RXD(接收数据):这是FTDI芯片从外部设备接收数据的地方。

TXD(传输数据):从FTDI芯片传输到外部设备的数据通过此引脚发送出去。

CTS(清除发送):也与硬件流控制有关,此引脚向 FTDI 芯片指示外部设备已准备好接收数据。

DTR(数据终端就绪):此引脚通常用于复位或控制外部设备。

5V 或 3.3V:根据模块的不同,它提供 5 伏或 3.3 伏的电源输出。

GND(接地):接地引脚为模块提供参考电压。

搭建 ESP32 DIY 监控摄像头的分步教程

现在,在您获得相关信息后,让我们逐步了解该项目的制作过程: -

a) 设置开发环境:

安装 Arduino IDE。

将 ESP32 开发板添加到 Arduino
IDE。复制以下链接“https://espressif.github.io/arduino-esp32/package_esp32_index.json”,并将其粘贴到“文件》首选项”》其他板管理器中的新行中。

将 ESP32 开发板添加到 Arduino IDE

从 tools》boards》manage 库中安装 ESP32 摄像头模组所需的库,并在搜索栏中输入“esp32”,然后通过 expressif
安装库。

ESP32 库安装

b) 接线:

FTDI 模组与 ESP32 CAM 的接线非常简单。

ESP32 CAM 电路图

将 ESP32 CAM 的 Vcc 连接到 FTDI 的 5V 引脚。将 ESP32 CAM 的 GND 连接到 FTDI 的 GND。将 ESP32
CAM 的 RX 引脚连接到 FTDI 的 TX 引脚。将 ESP32 CAM 的 TX 引脚连接到 FTDI 的 RX 引脚。将 GPIO0 连接到
GND,以便您可以在 ESP32 中上传代码。

c) 如何使用 Arduino IDE 对 ESP32 CAM 进行编程?

安装 ESP32 开发板后,进入工具》开发板》ESP32 Arduino 和 Select Ai thinker ESP32 Cam 开发板。

使用 Arduino IDE 对 ESP32 CAM 进行编程

完成后,转到文件》示例》ESP32》相机 Web 服务器并打开代码

您需要在命令前面添加 // 并将其从 #define CAMERA_MODEL_AI_THINKER 中删除 #define
CAMERA_MODEL_ESP_EYE。

ESP32 Web 服务器代码

接下来,将“hotspot”和“hotspotpassword”字符串替换为手机的热点ssid和密码,然后上传代码。

热点SSID已上传

d) 在浏览器上测试

获取串行监视器的 IP 地址,然后将其写入您的移动浏览器。

完成后,按开始流选项,您将看到相机馈送。

e) 外壳设计和组装

我想让设计尽可能简单易行。因此,我用了一张简单的图表纸作为相机的主体。如果你想要一个更耐用的身体。.您也可以使用PVC管或3D打印外壳。

附件 - 图表纸

对于前板和后板,我使用了onshape并对其进行了设计,然后进行了激光切割。

前面板和后面板

然后,我们将 esp32 凸轮组装到外壳中,这就是最终项目的样子。

ESP32 项目最终外观

//Code for ESP32 CCTV Security Camera 


#include "esp_camera.h"

#include < WiFi.h >



// WARNING!!! PSRAM IC required for UXGA resolution and high JPEG quality

//            Ensure ESP32 Wrover Module or other board with PSRAM is selected

//            Partial images will be transmitted if image exceeds buffer size

//

//            You must select partition scheme from the board menu that has at least 3MB APP space.

//            Face Recognition is DISABLED for ESP32 and ESP32-S2, because it takes up from 15 

//            seconds to process single frame. Face Detection is ENABLED if PSRAM is enabled as well


// ===================

// Select camera model

// ===================

//#define CAMERA_MODEL_WROVER_KIT // Has PSRAM

//#define CAMERA_MODEL_ESP_EYE // Has PSRAM

//#define CAMERA_MODEL_ESP32S3_EYE // Has PSRAM

//#define CAMERA_MODEL_M5STACK_PSRAM // Has PSRAM

//#define CAMERA_MODEL_M5STACK_V2_PSRAM // M5Camera version B Has PSRAM

//#define CAMERA_MODEL_M5STACK_WIDE // Has PSRAM

//#define CAMERA_MODEL_M5STACK_ESP32CAM // No PSRAM

//#define CAMERA_MODEL_M5STACK_UNITCAM // No PSRAM

#define CAMERA_MODEL_AI_THINKER // Has PSRAM

//#define CAMERA_MODEL_TTGO_T_JOURNAL // No PSRAM

//#define CAMERA_MODEL_XIAO_ESP32S3 // Has PSRAM

// ** Espressif Internal Boards **

//#define CAMERA_MODEL_ESP32_CAM_BOARD

//#define CAMERA_MODEL_ESP32S2_CAM_BOARD

//#define CAMERA_MODEL_ESP32S3_CAM_LCD

//#define CAMERA_MODEL_DFRobot_FireBeetle2_ESP32S3 // Has PSRAM

//#define CAMERA_MODEL_DFRobot_Romeo_ESP32S3 // Has PSRAM

#include "camera_pins.h"


// ===========================

// Enter your WiFi credentials

// ===========================

const char* ssid = "ssid";

const char* password = "password";


void startCameraServer();

void setupLedFlash(int pin);


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_sccb_sda = SIOD_GPIO_NUM;

  config.pin_sccb_scl = SIOC_GPIO_NUM;

  config.pin_pwdn = PWDN_GPIO_NUM;

  config.pin_reset = RESET_GPIO_NUM;

  config.xclk_freq_hz = 20000000;

  config.frame_size = FRAMESIZE_UXGA;

  config.pixel_format = PIXFORMAT_JPEG; // for streaming

  //config.pixel_format = PIXFORMAT_RGB565; // for face detection/recognition

  config.grab_mode = CAMERA_GRAB_WHEN_EMPTY;

  config.fb_location = CAMERA_FB_IN_PSRAM;

  config.jpeg_quality = 12;

  config.fb_count = 1;

  

  // if PSRAM IC present, init with UXGA resolution and higher JPEG quality

  //                      for larger pre-allocated frame buffer.

  if(config.pixel_format == PIXFORMAT_JPEG){

    if(psramFound()){

      config.jpeg_quality = 10;

      config.fb_count = 2;

      config.grab_mode = CAMERA_GRAB_LATEST;

    } else {

      // Limit the frame size when PSRAM is not available

      config.frame_size = FRAMESIZE_SVGA;

      config.fb_location = CAMERA_FB_IN_DRAM;

    }

  } else {

    // Best option for face detection/recognition

    config.frame_size = FRAMESIZE_240X240;

#if CONFIG_IDF_TARGET_ESP32S3

    config.fb_count = 2;

#endif

  }


#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

  if(config.pixel_format == PIXFORMAT_JPEG){

    s- >set_framesize(s, FRAMESIZE_QVGA);

  }


#if defined(CAMERA_MODEL_M5STACK_WIDE) || defined(CAMERA_MODEL_M5STACK_ESP32CAM)

  s- >set_vflip(s, 1);

  s- >set_hmirror(s, 1);

#endif


#if defined(CAMERA_MODEL_ESP32S3_EYE)

  s- >set_vflip(s, 1);

#endif


// Setup LED FLash if LED pin is defined in camera_pins.h

#if defined(LED_GPIO_NUM)

  setupLedFlash(LED_GPIO_NUM);

#endif


  WiFi.begin(ssid, password);

  WiFi.setSleep(false);


  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() {

  // Do nothing. Everything is done in another task by the web server

  delay(10000);

}

审核编辑:陈陈

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 摄像头模块
    +关注

    关注

    0

    文章

    13

    浏览量

    3260
  • ESP32
    +关注

    关注

    17

    文章

    955

    浏览量

    17060
收藏 人收藏

    评论

    相关推荐

    esp32是如何与摄像头连接的呢?

    新手。看了esp32的模组中没有摄像头的硬件接口,请问它是如何与摄像头连接的呢
    发表于 06-28 15:01

    回收苹果摄像头 收购苹果摄像头

    回收苹果摄像头 收购苹果摄像头回收苹果摄像头,大量收购苹果摄像头!!! 帝欧电子 赵先生 TEL:135-3012-2202 QQ:879821252 帝欧电子专业电子收购,现急购
    发表于 12-29 18:14

    回收手机摄像头 收购手机摄像头

    `回收手机摄像头,大量收购手机摄像头!!! 帝欧电子 赵先生 TEL:135-3012-2202 QQ:879821252 帝欧电子专业电子收购,现急购摄像头,大量回收摄像头!手机
    发表于 07-05 11:01

    回收手机摄像头,收购摄像头芯片

    `帝欧电子赵生135-3012-2202,QQ:8798-21252长期高价回收手机摄像头,回收摄像头芯片。 摄像头广泛运用于我们的生活之中,大街上随处可见的安防监控,人手至少一台的手机平板,汽车
    发表于 07-14 17:53

    如何对ESP32 AUDIO OV2640摄像头的音频进行调试呢

    ESP32 AUDIO OV2640摄像头 音频调试日记前言一、外部PSRAM和FLASH公用CLK引脚二、外部PSRAM申请内存注意二、摄像头1.ESP32
    发表于 02-15 06:06

    esp32的模组中没有摄像头的硬件接口,请问它是如何与摄像头连接的呢?

    新手。看了esp32的模组中没有摄像头的硬件接口,请问它是如何与摄像头连接的呢
    发表于 03-13 06:28

    ESP32如何传输摄像头视频码流?

    ESP32本身如何传输摄像头视频码流?看到社区diy视频,esp32本身可以使用的IO就不多,如何可以连接摄像头呢?
    发表于 10-17 06:35

    ESP32 AUDIO OV2640摄像头 音频调试日记

    ESP32 AUDIO OV2640摄像头 音频调试日记前言一、外部PSRAM和FLASH公用CLK引脚二、外部PSRAM申请内存注意二、摄像头1.ESP32
    发表于 12-16 16:53 14次下载
    <b class='flag-5'>ESP32</b> AUDIO OV2640<b class='flag-5'>摄像头</b> 音频调试日记

    带有ESP32的Discord安全摄像头

    电子发烧友网站提供《带有ESP32的Discord安全摄像头.zip》资料免费下载
    发表于 11-08 09:19 0次下载
    带有<b class='flag-5'>ESP32</b>的Discord<b class='flag-5'>安全</b><b class='flag-5'>摄像头</b>

    ESP32 CAM:遥控物体检测摄像头

    电子发烧友网站提供《ESP32 CAM:遥控物体检测摄像头.zip》资料免费下载
    发表于 12-15 09:56 2次下载
    <b class='flag-5'>ESP32</b> CAM:遥控物体检测<b class='flag-5'>摄像头</b>

    基于ESP32-CAM的RSTP协议的网络摄像头

    本次介绍的程序是使用ESP32-CAM进行图像采集并将图像以RTSP协议进行无线传输。在同网络的PC上使用软件对摄像头的图像进行拉取观看。
    的头像 发表于 12-15 11:39 3510次阅读

    基于ESP32安全摄像头设计

    方案介绍这是我的 DIY 安全摄像头,它由一个 ESP32 制成,它与一个 5V 充电器电路相连,该电路将 240V 交流电转换为 5V 直流电供 ESP32 运行。制作这个项目的目标
    发表于 12-27 16:46 0次下载

    什么是ESP32-CAM摄像头

    ESP32-CAM是一款基于ESP32-S2 芯片,具有摄像功能的微型模组。同时配备了OV2640 摄像头、连接外设的GPIO,以及用于存储拍摄图像的microSD 卡。
    的头像 发表于 02-17 11:01 2.3w次阅读
    什么是<b class='flag-5'>ESP32</b>-CAM<b class='flag-5'>摄像头</b>?

    ESP32触屏摄像头

    电子发烧友网站提供《ESP32触屏摄像头.zip》资料免费下载
    发表于 06-27 14:28 0次下载
    <b class='flag-5'>ESP32</b>触屏<b class='flag-5'>摄像头</b>

    使用ESP32-S3搭建网络摄像头

    本篇博文使用ESP32-S3搭建网络摄像头,相比较局域网摄像头,本篇博文将分享如何搭建外网可以访问的网络摄像头
    的头像 发表于 09-06 12:48 5930次阅读
    使用<b class='flag-5'>ESP32</b>-S3搭建网络<b class='flag-5'>摄像头</b>