【花雕学编程】Arduino动手做(230)---WifiCam: 无线网络摄像头HTTP服务器

2024-09-07154
AI 快速预览详细 收起
本文介绍了如何使用ESP32-Cam开发板和OV2640摄像头模块搭建一个无线网络摄像头HTTP服务器。通过详细的代码示例和实验步骤,展示了如何配置摄像头、连接Wi-Fi网络,并启动Web服务器。最终效果是可以在浏览器中查看实时图像,支持BMP、JPG和MJPEG格式的照片和视频流。

02.jpg

ESP32-Cam 是一款运行在 ESP32-S 芯片上并使用 OV2640 摄像头的小型摄像头模块。ESP32_Cam 也可以 OV7670 摄像头,但 OV2640 更好(更高的分辨率和内置的 JPEG 编码,这消除了 ESP32-S 的处理任务)。
ESP-32 Cam 规格ESP-32 系列
它支持 Wi-Fi (802.11b/g/n)
支持蓝牙 (4.2 带 BLE)
内置 LED 闪光灯
9 个 IO 端口
支持 UART、SPI、I2C 和 PWM
内置 micro SD 读卡器
输入电源:3.3V / 5V(据报道,5V 供电比 3.3V 更稳定)
OV2640 摄像头
2 百万像素
阵列尺寸:UXGA (1600 x 1200)
镜头尺寸:1/4 英寸(6.35 毫米)
最大图像传输速率:15 帧/秒
 

10.jpg

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
 实验二百三十:ESP32 CAM开发板 带OV2640摄像头模块 WIFI+蓝牙模块
 项目实验之十:WifiCam: 无线网络摄像头HTTP服务器

 

下载WifiCam库
链接:https://github.com/yoursunny/esp32cam?tab=readme-ov-file

 

36.jpg
 

项目实验之十:WifiCam: 无线网络摄像头HTTP服务器
实验开源代码

 

代码
/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百三十:ESP32 CAM开发板 带OV2640摄像头模块 WIFI+蓝牙模块
  项目实验之十:WifiCam: 无线网络摄像头HTTP服务器
*/

// 引入WifiCam库
#include "WifiCam.hpp"
// 引入WiFi库
#include <WiFi.h>

// 定义WiFi的SSID和密码
static const char* WIFI_SSID = "zhz3";
static const char* WIFI_PASS = "z156721";

// 定义初始分辨率
esp32cam::Resolution initialResolution;

// 创建Web服务器,端口号为80
WebServer server(80);

void setup() {
  // 初始化串口通信,波特率为115200
  Serial.begin(115200);
  Serial.println();
  delay(1000);

  // 设置WiFi模式为STA(Station)
  WiFi.persistent(false);
  WiFi.mode(WIFI_STA);
  // 连接到WiFi网络
  WiFi.begin(WIFI_SSID, WIFI_PASS);
  // 等待WiFi连接结果
  if (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.printf("WiFi连接失败 %d\n", WiFi.status());
    delay(5000);
    ESP.restart();
  }
  Serial.println("WiFi连接成功");
  delay(1000);

  {
    using namespace esp32cam;

    // 设置初始分辨率为1024x768
    initialResolution = Resolution::find(1024, 768);

    // 配置摄像头参数
    Config cfg;
    cfg.setPins(pins::AiThinker);  // 设置引脚
    cfg.setResolution(initialResolution);  // 设置分辨率
    cfg.setJpeg(80);  // 设置JPEG质量

    // 初始化摄像头
    bool ok = Camera.begin(cfg);
    if (!ok) {
      Serial.println("摄像头初始化失败");
      delay(5000);
      ESP.restart();
    }
    Serial.println("摄像头初始化成功");
  }

  // 输出摄像头启动信息和设备IP地址
  Serial.println("摄像头启动中");
  Serial.print("http://");
  Serial.println(WiFi.localIP());

  // 添加请求处理程序
  addRequestHandlers();
  // 启动Web服务器
  server.begin();
}

void loop() {
  // 处理客户端请求
  server.handleClient();
}

实验串口返回情况

 

37-.jpg

打开浏览器控制页面:http://192.168.28.223/
 

37.jpg

分成照片格式BMP,不同大小规格供选择,打开后直接在浏览器上显示照片

 

38.jpg

照片格式还有JPG,也是不同大小规格供选择,打开后直接在浏览器上显示照片(晚上灯光环境,拍虚了)
 

39.jpg

第三种是视频流MJPEG格式,这里实验使用800X600格式,可以拍摄21.17fps

 

【【花雕学编程】Arduino动手做(230)---WIFI无线网络摄像头】

 

https://www.bilibili.com/video/BV1ZTp8eFEaU/?share_source=copy_web&vd_source=371a292a55e5ca9be994cbb4a86cc987

 

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(0)
- 没有更多了 -