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

Coding CCTV ESP32 Cam

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)
150 views5 pages

Coding CCTV ESP32 Cam

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
You are on page 1/ 5

#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 = server.client();

client.write(HEADER, hdrLen);

client.write(BOUNDARY, bdrLen);

while (true)

if (!client.connected()) break;

cam.run();

s = cam.getSize();

client.write(CTNTTYPE, cntLen);

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

client.write(buf, strlen(buf));

client.write((char *)cam.getfb(), s);

client.write(BOUNDARY, bdrLen);

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

"Content-disposition: inline; filename=capture.jpg\r\n" \

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

const int jhdLen = strlen(JHEADER);


void handle_jpg(void)

WiFiClient client = server.client();

cam.run();

if (!client.connected()) return;

client.write(JHEADER, jhdLen);

client.write((char *)cam.getfb(), cam.getSize());

void handleNotFound()

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

message += "URI: ";

message += server.uri();

message += "\nMethod: ";

message += (server.method() == HTTP_GET) ? "GET" : "POST";

message += "\nArguments: ";

message += server.args();

message += "\n";

server.send(200, "text / plain", message);

void setup()

Serial.begin(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

cam.init(config);

IPAddress ip;

WiFi.mode(WIFI_STA);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED)

delay(500);

Serial.print(F("."));

ip = WiFi.localIP();

Serial.println(F("WiFi connected"));

Serial.println("");

Serial.println(ip);

Serial.print("Stream Link: http://");

Serial.print(ip);

Serial.println("/mjpeg/1");

server.on("/mjpeg/1", HTTP_GET, handle_jpg_stream);

server.on("/jpg", HTTP_GET, handle_jpg);

server.onNotFound(handleNotFound);

server.begin();

void loop()

server.handleClient();

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy