0% found this document useful (0 votes)
183 views5 pages

ESP32 Camera Streaming Code

This document defines code for setting up a camera stream server on an ESP32 board. It includes headers for the camera module, WiFi networking, and web server functionality. It defines constants for the camera model and stream headers/boundaries. Setup code configures the camera, connects to WiFi, and starts the web server to handle streaming JPEG images over HTTP to clients requesting the /mjpeg/1 or /jpg URLs. The main loop handles client requests to the server continuously.

Uploaded by

ichal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
183 views5 pages

ESP32 Camera Streaming Code

This document defines code for setting up a camera stream server on an ESP32 board. It includes headers for the camera module, WiFi networking, and web server functionality. It defines constants for the camera model and stream headers/boundaries. Setup code configures the camera, connects to WiFi, and starts the web server to handle streaming JPEG images over HTTP to clients requesting the /mjpeg/1 or /jpg URLs. The main loop handles client requests to the server continuously.

Uploaded by

ichal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

#include "src/OV2640.

h"

#include <WiFi.h>

#include <WebServer.h>

#include <WiFiClient.h>

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

#include "camera_pins.h"

const char* ssid = "--Uci_wifi--";

const char* password = "wifiuci123";

OV2640 cam;

WebServer server(80);

const char HEADER[] = "HTTP/1.1 200 OK\r\n" \

"Access-Control-Allow-Origin: *\r\n" \

"Content-Type: multipart/x-mixed-replace;
boundary=123456789000000000000987654321\r\n";

const char BOUNDARY[] = "\r\n--123456789000000000000987654321\r\n";

const char CTNTTYPE[] = "Content-Type: image/jpeg\r\nContent-Length: ";


const int hdrLen = strlen(HEADER);

const int bdrLen = strlen(BOUNDARY);

const int cntLen = strlen(CTNTTYPE);

void handle_jpg_stream(void)

char buf[32];

int s;

WiFiClient client = [Link]();

[Link](HEADER, hdrLen);

[Link](BOUNDARY, bdrLen);

while (true)

if (![Link]()) break;

[Link]();

s = [Link]();

[Link](CTNTTYPE, cntLen);

sprintf( buf, "%d\r\n\r\n", s );

[Link](buf, strlen(buf));

[Link]((char *)[Link](), s);

[Link](BOUNDARY, bdrLen);

const char JHEADER[] = "HTTP/1.1 200 OK\r\n" \

"Content-disposition: inline; filename=[Link]\r\n" \

"Content-type: image/jpeg\r\n\r\n";

const int jhdLen = strlen(JHEADER);


void handle_jpg(void)

WiFiClient client = [Link]();

[Link]();

if (![Link]()) return;

[Link](JHEADER, jhdLen);

[Link]((char *)[Link](), [Link]());

void handleNotFound()

String message = "Server is running!\n\n";

message += "URI: ";

message += [Link]();

message += "\nMethod: ";

message += ([Link]() == HTTP_GET) ? "GET" : "POST";

message += "\nArguments: ";

message += [Link]();

message += "\n";

[Link](200, "text / plain", message);

void setup()

[Link](115200);

//while (!Serial); //wait for serial connection.


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_format = PIXFORMAT_JPEG;

// Frame parameters

// config.frame_size = FRAMESIZE_UXGA;

config.frame_size = FRAMESIZE_QVGA;

config.jpeg_quality = 12;

config.fb_count = 2;

#if defined(CAMERA_MODEL_ESP_EYE)

pinMode(13, INPUT_PULLUP);

pinMode(14, INPUT_PULLUP);
#endif

[Link](config);

IPAddress ip;

[Link](WIFI_STA);

[Link](ssid, password);

while ([Link]() != WL_CONNECTED)

delay(500);

[Link](F("."));

ip = [Link]();

[Link](F("WiFi connected"));

[Link]("");

[Link](ip);

[Link]("Stream Link: [Link]

[Link](ip);

[Link]("/mjpeg/1");

[Link]("/mjpeg/1", HTTP_GET, handle_jpg_stream);

[Link]("/jpg", HTTP_GET, handle_jpg);

[Link](handleNotFound);

[Link]();

void loop()

[Link]();

You might also like