ESP32-CAM模块Arduino环境搭建测试

这篇具有很好参考价值的文章主要介绍了ESP32-CAM模块Arduino环境搭建测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ESP32-CAM模块Arduino环境搭建测试

一.ESP32+OV2640摄像头模块CameraWebServer视频查看

二.测试ESP32-CAM(后续称cam模块)代码是否上传执行成功测试

const int led0 = 12;
const int led1 = 13;

void setup() {
    // put your setup code here, to run once:
    pinMode(led0, OUTPUT);
    pinMode(led1, OUTPUT);
}

void loop() {
    // put your main code here, to run repeatedly:
    digitalWrite(led0, HIGH);
    digitalWrite(led1, HIGH);
    delay(5000);
    digitalWrite(led0, LOW);
    digitalWrite(led1, LOW);
    delay(500);
}

PS:上叙代码是测试cam模块代码是否执行成功

二.由于之前使用的是Arduino IDE 1.8.5版本,ESP32-CAM模块上传代码后报错 Camera probe failed with error 0x105(ESP_ERR_NOT_FOUND) Camera init failed with error 0x105 , 代码如下

代码片段①

#include <esp_camera.h>

// 定义摄像头模块的引脚连接
#define CAMERA_MODEL_AI_THINKER // 如果你使用的是 AI Thinker 摄像头模块,请取消注释此行
//#define CAMERA_MODEL_M5STACK_PSRAM // 如果你使用的是 M5Stack 摄像头模块,请取消注释此行

const int ledPin = 4; // 摄像头准备拍照时闪烁的 LED 引脚

void setup() {
  Serial.begin(115200);

  // 配置摄像头模块
  camera_config_t config;
  config.ledc_channel = LEDC_CHANNEL_0;
  config.ledc_timer = LEDC_TIMER_0;
  config.pin_d0 = 5;
  config.pin_d1 = 18;
  config.pin_d2 = 19;
  config.pin_d3 = 21;
  config.pin_d4 = 36;
  config.pin_d5 = 39;
  config.pin_d6 = 34;
  config.pin_d7 = 35;
  config.pin_xclk = 0;
  config.pin_pclk = 22;
  config.pin_vsync = 25;
  config.pin_href = 23;
  config.pin_sscb_sda = 26;
  config.pin_sscb_scl = 27;
  config.pin_pwdn = 32;
  config.pin_reset = -1;
  config.xclk_freq_hz = 20000000;
  config.pixel_format = PIXFORMAT_RGB565;
  config.frame_size = FRAMESIZE_QVGA; // 设置图像分辨率为QVGA

  // 摄像头初始化
  esp_err_t err = esp_camera_init(&config);
  if (err != ESP_OK) {
    Serial.printf("摄像头初始化失败: %s", esp_err_to_name(err));
    return;
  }

  // 设置 LED 引脚为输出模式
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // 拍照
  camera_fb_t *fb = NULL;
  fb = esp_camera_fb_get();
  if (!fb) {
    Serial.println("获取图像缓冲区失败");
    return;
  }

  // 在串口打印图像大小
  Serial.printf("分辨率: %dx%d, 图像大小: %u bytes\n", fb->width, fb->height, fb->len);

  // 闪烁 LED 表示拍照完成
  digitalWrite(ledPin, HIGH);
  delay(500);
  digitalWrite(ledPin, LOW);

  // 释放图像缓冲区
  esp_camera_fb_return(fb);
}

ps:上叙代码片段报错 Camera probe failed with error 0x105(ESP_ERR_NOT_FOUND) Camera init failed with error 0x105,
获取图像失败!

代码片段②

#include <WiFi.h>
#include <ESPAsyncWebServer.h>
#include <esp_camera.h>

// WiFi 参数
const char* ssid = "your_SSID";
const char* password = "12345678";

// 定义摄像头模块的引脚连接
#define CAMERA_MODEL_AI_THINKER // 如果你使用的是 AI Thinker 摄像头模块,请取消注释此行
//#define CAMERA_MODEL_M5STACK_PSRAM // 如果你使用的是 M5Stack 摄像头模块,请取消注释此行

// 创建 AsyncWebServer 实例
AsyncWebServer server(80);

void setup() {
  Serial.begin(115200);
  
  // 连接到 Wi-Fi
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("Wi-Fi connected");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  
  // 配置摄像头模块
  camera_config_t config;
  // 省略摄像头配置参数设置
  
  // 摄像头初始化
  esp_err_t err = esp_camera_init(&config);
  if (err != ESP_OK) {
    Serial.printf("摄像头初始化失败: %s", esp_err_to_name(err));
    return;
  }
  
  // 设置路由和处理程序
  server.on("/", HTTP_GET, handleRoot);
  server.on("/stream", HTTP_GET, handleStream);
  
  // 启动服务器
  server.begin();
  Serial.println("Server started");
}

void loop() {
  // 不需要代码
}

// 处理根路径请求的处理程序
void handleRoot(AsyncWebServerRequest* request) {
  request->send(200, "text/plain", "Hello from ESP32!");
}

// 处理图像流请求的处理程序
void handleStream(AsyncWebServerRequest* request) {
  // 设置图像类型为 multipart/x-mixed-replace
  request->sendHeader("Content-Type", "multipart/x-mixed-replace; boundary=boundary");

  while (true) {
    // 拍照
    camera_fb_t* fb = esp_camera_fb_get();
    if (!fb) {
      Serial.println("获取图像缓冲区失败");
      break;
    }
  
    // 发送图像数据
    request->send_P(200, "image/jpeg", (const char*)fb->buf, fb->len);

    // 释放图像缓冲区
    esp_camera_fb_return(fb);
  
    // 延时一段时间,控制图像刷新率
    delay(100);
  }
}


串口报错 Camera probe failed with error 0x105(ESP_ERR_NOT_FOUND) Camera init failed with error 0x105, 报错ESPAsyncWebServer.h,esp_camera.h not found , 获取图像失败!

代码片段③

#include "esp_camera.h"

// 定义摄像头配置
camera_config_t config;

void setup() {
  Serial.begin(115200);

  // 配置摄像头
  config.ledc_channel = LEDC_CHANNEL_0;
  config.ledc_timer = LEDC_TIMER_0;
  config.pin_d0 = 32;
  config.pin_d1 = 35;
  config.pin_d2 = 34;
  config.pin_d3 = 5;
  config.pin_d4 = 39;
  config.pin_d5 = 18;
  config.pin_d6 = 36;
  config.pin_d7 = 19;
  config.pin_xclk = 27;
  config.pin_pclk = 21;
  config.pin_vsync = 25;
  config.pin_href = 26;
  config.pin_sscb_sda = 22;
  config.pin_sscb_scl = 23;
  config.pin_reset = -1; // 不使用复位引脚
  config.xclk_freq_hz = 20000000;
  config.pixel_format = PIXFORMAT_JPEG;

  // 启动摄像头
  esp_err_t err = esp_camera_init(&config);
  if (err != ESP_OK) {
    Serial.printf("摄像头启动失败!错误代码: 0x%x\n", err);
    return;
  }

  Serial.println("摄像头已启动!");
}

void loop() {
  // 捕获图像
  camera_fb_t *fb = esp_camera_fb_get();

  if (!fb) {
    Serial.println("获取图像失败!");
    Serial.print("fb = ");
    Serial.println((unsigned long)fb);
    return;
  }

  // 打印图像数据
  for (size_t i = 0; i < fb->len; i++) {
    Serial.write(fb->buf[i]);
  }

  // 释放图像缓存
  esp_camera_fb_return(fb);

  delay(1000); // 延迟1秒后再次捕获图像
}

上叙代码还是同样报错,导致一度怀疑摄像头是坏的

三.成功运行成功代码.

PS 后经过查询,看到很多博主教程中使用的都是Arduino 版本都是比本人使用的高,并且选择的工具开发板是AI -Thinker ESP32-CAM, 本人使用的1.8.5版本经过折腾始终没有出现AI-Thinker ESP32-CAM选项, 干脆升级到了 Arduino 2.1.0 版本
安装过程中使用魔法后依然报错Error: 2 UNKNOWN: Get “https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip”: dial tcp 20.205.243.166:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. 解决办法直接使浏览器贴入https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip, 下载下来后,粘贴到 C:\Users\Search\AppData\Local\Arduino15\staging\packages, 注:每个人电脑C:\Users\Search\路径不一样, 然后接着点击安装ESP32-CAM模块Arduino环境搭建测试,嵌入式硬件
新版本 2.0.11也尝试安装但是失败
文件首选项开发板管理器地址中的https://dl.espressif.com/dl/package_esp32_index.json,经过查询最新版本只能到1.0.6
https://arduino.me/packages/esp32.json经过查看最新版本能到2.0.9
ESP32-CAM模块Arduino环境搭建测试,嵌入式硬件
猜测是导致2.0.11安装失败的原因吧,

当你安装成功后
ESP32-CAM模块Arduino环境搭建测试,嵌入式硬件

四.运行示例代码注意事项

ESP32-CAM模块Arduino环境搭建测试,嵌入式硬件
ESP32-CAM模块Arduino环境搭建测试,嵌入式硬件

验证代码过程中会报错项目太大了;阅读以下页面的提示减小文件大小。
http://www.arduino.cc/en/Guide/Troubleshooting#size
为开发板 ESP32 Wrover Module 编译时出错。
解决办法
ESP32-CAM模块Arduino环境搭建测试,嵌入式硬件
ESP32-CAM模块Arduino环境搭建测试,嵌入式硬件

ESP32-CAM模块Arduino环境搭建测试,嵌入式硬件文章来源地址https://www.toymoban.com/news/detail-676685.html

五. 无法进行人脸识别,需要修改代码app_httpd.cpp

line 280~290 行间的free() 改成 dl_lib_free()
if (net_boxes){
        detected = true;
        if(recognition_enabled){
            face_id = run_face_recognition(image_matrix, net_boxes);
        }
        draw_face_boxes(image_matrix, net_boxes, face_id);
        free(net_boxes->score);
        free(net_boxes->box);
        free(net_boxes->landmark);
        free(net_boxes);
    }
    



line 378~388 行间的free() 改成 dl_lib_free()
 if(net_boxes){
      detected = true;
      if(recognition_enabled){
          face_id = run_face_recognition(image_matrix, net_boxes);
      }
      fr_recognize = esp_timer_get_time();
      draw_face_boxes(image_matrix, net_boxes, face_id);
      free(net_boxes->score);
      free(net_boxes->box);
      free(net_boxes->landmark);
      free(net_boxes);
  }


到了这里,关于ESP32-CAM模块Arduino环境搭建测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Arduino ESP32开发环境搭建入门教程,esp32的arduino开发环境搭建教程,arduino导入eps32开发插件

    从官网下载 Arduino IDE 软件并安装。下载链接:Software | Arduino 网盘链接:链接:https://pan.baidu.com/s/1ZuSbo1BPy8XyyXzfl4KNzg?pwd=f8yd 提取码:f8yd 1、找到Arduino IDE安装目录,打开hardware文件夹。 2、在hardware文件夹中创建一个espressif文件夹。 3、将解压出的文件夹移动到espressif文件夹中,

    2024年02月13日
    浏览(39)
  • Arduino_ESP32开发环境搭建

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 – 提示:以下是本篇文章正文内容,下面案例可供参考 Arduino IDE 是一款免费的软件,可以直接去官网(https://www.arduino.cc/en/software)下载。 直接点击红色方框即可下载,下载完成如图所示。 直接点击ardu

    2023年04月13日
    浏览(47)
  • Arduino+Esp32-wroom32E开发环境搭建(2023)

    这两天开始在Arduino下安装esp32,经历了从自动安装到手动安装的过程。自动安装,三个字评价:太慢了,然后还每次100%失败,无语。 然后开始手动安装。最后成功了。 最新的发布版本: 官网下载页面 不要修改安装路径。 设置中文: 如果这一步要是运气好,成功了,还是很

    2023年04月14日
    浏览(31)
  • 第4篇:vscode+platformio搭建esp32 arduino开发环境

    打开环境变量,点击新建 输入变量名PLATFORMIO_CORE_DIR与路径:D:PLATFORMIO_CORE   d盘创建PLATFORMIO_CORE目录和目录:D:PLATFORMIO_project

    2024年02月11日
    浏览(30)
  • 【雕爷学编程】Arduino智能家居之ESP32-CAM运动检测和图像捕获

    Arduino是一个开放源码的电子原型平台,它可以让你用简单的硬件和软件来创建各种互动的项目。Arduino的核心是一个微控制器板,它可以通过一系列的引脚来连接各种传感器、执行器、显示器等外部设备。Arduino的编程是基于C/C++语言的,你可以使用Arduino IDE(集成开发环境)来

    2024年03月26日
    浏览(39)
  • 【雕爷学编程】Arduino智能家居之ESP32-CAM远程监控和图像存储

    Arduino是一个开放源码的电子原型平台,它可以让你用简单的硬件和软件来创建各种互动的项目。Arduino的核心是一个微控制器板,它可以通过一系列的引脚来连接各种传感器、执行器、显示器等外部设备。Arduino的编程是基于C/C++语言的,你可以使用Arduino IDE(集成开发环境)来

    2024年04月27日
    浏览(33)
  • ESP32 CAM 模块和 OpenCV 的二维码扫描器

    概述 该项目是关于使用 ESP32 CAM 模块和 OpenCV 设计的二维码扫描仪或阅读器。我们将使用 ESP32 摄像头模块和 python 库开发一个程序和设备,我们可以用它来扫描二维码。使用 ESP32 CAM,项目变得更便宜。 QR 码现在已经成为我们日常生活的一部分,因为我们几乎在任何地方都使用

    2024年02月16日
    浏览(33)
  • 基于esp32-cam模块的监控,并自动拍照保存置服务器

    推荐esp教程网站:esp教程网站 ,纯英文,需魔法上网。         Arduino官网:Software | Arduino         建议下载1.8.x版本,不推荐下载2.x版本,1.8.x版本可以使用插件,但是2.x版本有代码补充。         点击后,会弹出两个网页,都选择 JUST DOWNLOAD 。 ​         安装

    2024年04月16日
    浏览(37)
  • ESP32CAM基于Python环境开发实时摄影

    安装Thonny代码编辑器和ESP32带有CAM的固件 链接:https://pan.baidu.com/s/1NBTMvZzzF6eJse2Wsr2ykQ?pwd=1o6y  提取码:1o6y 安装Thonny,教程网上一大把,基本上一路下一步即可! 先点击运行,配置解释器然后如图操作,选择端口与烧录文件  然后重启Thonny即可,如果使用了下载板,把下载板

    2024年02月19日
    浏览(29)
  • ESP32-CAM带摄像头的开发板使用-环境安装

            首先是需要在开发板上搭建环境,其实就是将安装包给下载到开发板上,然后程序能在开发板上运行并控制开发板,这一下载过程也称为烧录。 首先我这里使用ESP32-CAM纯粹是因为便宜,所以买啦 哈哈哈 我买的是30多带摄像头的,比较主要是拿来做图像识别的。

    2024年01月21日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包