ESP32-CAM在ArduinoIDE获取视频流(超详细)

1 - ESP32-CAM购买

2 - Arduino IDE下载安装

下载地址:arduino.cc/en/Main/Software

(点击即可下载)↓↓

 

3 - 配置首选项

当下载安装IDE完成后,打开IDE,并点击左上角的“文件首选项

打开后找到“附加开发板管理网址” ,在框内填入“https://dl.espressif.com/dl/package_esp32_index.json”再点击好的

4 - 安装ESP32包

点开上方的“工具” → “开发板” → “开发板管理器”,在上方框内输入“esp32”搜索并安装

! ! !注意如果安装失败可以多次点击安装,还是不行的话可以切换热点试试

 

5 -  连接开发板

使用一个USB转TTL去连接开发板(如果没有可以去某宝购买)

! ! !注意烧录程序的时候IO0一定要和GND相连接!!

 

 

点击上方的“工具” → “开发板” → “ESP32 Arduino” → “AI Thinker ESP32-CAM

点击上方的“工具” → “端口” → 选择你的端口 (根据实际端口选择)

 

 

 6 - 烧录程序

点开上方的“文件” → “示例” → “ESP32” → “Camera” → “CameraWebServer

 

打开示例程序后,把下图上面框的代码前加“//”注释掉,然后把下面框的代码去掉“//

! ! !注意如果出现下图的报错请检查是否注释好了代码或者检查你的摄像头排线是否断裂,是否装反(camera_probe(): Detected camera not supported, esp_camera_init(): Camera probe failed with error 0x20004)

 

操作前

操作后 

然后把图中上面框选引号内填写你的WIFI名称下面框选引号内填写你的WIFI密码 

 

然后点击左上角的上传图标进行烧录程序

 

然后就等待上传完成

 

像上图出现框选的内容的话代表你烧录成功了!可以把IO0接GND的线拔了再按一下rst键即可

 ! ! !注意如果出现下图这种情况,请检查你的IO0有没有接GND,接上后按一下rst键再上传即可

7 - 打开串口监视器

点击上方的“工具”  → “串口监视器”,并把下方的波特率设置为“115200”

! ! !注意如果没有反应再按一下rst键即可

 

记住下图的地址

 8 - 获取视频流

打开浏览器输入上一张图所获得的的地址即可进入

 

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
要实现ArduinoESP32-CAM建立网页视频流,可以参考以下步骤: 1. 首先,需要安装ESP32-CAM库,可以在Arduino IDE中搜索并安装该库。 2. 在代码中引入必要的库,如WiFi、AsyncTCP、ESPAsyncWebServer和esp_camera。 3. 设置WiFi连接信息,并连接WiFi。 4. 初始化相机,设置分辨率、帧率等参数。 5. 创建ESPAsyncWebServer实例,并设置路由。 6. 在路由中处理视频流请求,通过调用相机API获取图像数据,将其转换为JPEG格式,并以流的形式发送到客户端。 以下是示例代码: ``` #include <WiFi.h> #include <AsyncTCP.h> #include <ESPAsyncWebServer.h> #include "esp_camera.h" // Replace with your network credentials const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; // Create AsyncWebServer object on port 80 AsyncWebServer server(80); // Initialize camera void init_camera() { 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_JPEG; config.frame_size = FRAMESIZE_VGA; config.jpeg_quality = 10; config.fb_count = 2; // 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; } } // Serve video stream void serve_video_stream(AsyncWebServerRequest *request) { Serial.println("Video stream requested"); if (request->hasParam("frame")) { // Get JPEG image from camera camera_fb_t * fb = esp_camera_fb_get(); if (!fb) { Serial.println("Camera capture failed"); request->send(500, "text/plain", "Camera capture failed"); return; } // Send JPEG image as stream AsyncWebServerResponse *response = request->beginResponse("image/jpeg", fb->len, [fb](uint8_t *buffer, size_t maxLen, size_t index) -> size_t { if (!index) { memcpy(buffer, fb->buf, fb->len); } return fb->len; }); response->addHeader("Cache-Control", "no-store"); request->send(response); // Release the memory esp_camera_fb_return(fb); } else { request->send(404); } } void setup() { Serial.begin(115200); // Connect to Wi-Fi WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("Connected to WiFi"); // Initialize camera init_camera(); // Serve video stream server.on("/video_stream", HTTP_GET, serve_video_stream); // Start server server.begin(); } void loop() { } ``` 在浏览器中输入ESP32-CAM的IP地址,加上“/video_stream?frame”,即可看到视频流。 注意,由于ESP32-CAM的处理能力有限,视频流可能会有卡顿或延迟,需要根据实际情况调整分辨率、帧率等参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

T1anhu4

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值