| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- #include <WiFi.h>
- #include "esp_camera.h"
- // Replace with your network credentials
- const char* nanny_ssid = "Flipper0";
- const char* nanny_password = "12345678";
- // Create an instance of the nannyServer
- WiFiServer nannyServer(80);
- void nanny_cam_setup() {
- //Serial.begin(115200);
- // Start access point
- WiFi.mode(WIFI_AP);
- WiFi.softAP(nanny_ssid, nanny_password);
- // Print IP address
- IPAddress IP = WiFi.softAPIP();
- // Start the camera
- startCamera();
- // Start the nannyServer
- nannyServer.begin();
- //Serial.println("Server started");
- Serial.print("SSID: ");
- Serial.println(nanny_ssid);
- Serial.print("PW: ");
- Serial.println(nanny_password);
- Serial.print("IP: ");
- Serial.println(IP);
- }
- void nanny_cam_loop() {
- //Serial.print(".");
- // Wait for a client to connect
- WiFiClient client = nannyServer.available();
- if (client) {
- //Serial.println("New client connected");
- handleStreamRequest();
- }
- }
- void startCamera() {
- 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 size: 640x480
- config.frame_size = FRAMESIZE_VGA;
- // Two buffers for streaming video
- config.jpeg_quality = 10;
- config.fb_count = 2;
- // Initialize the camera
- esp_err_t err = esp_camera_init(&config);
- if (err != ESP_OK) {
- Serial.printf("Camera init failed with error 0x%x", err);
- return;
- }
- // Set the focus to infinity
- /*sensor_t* s = esp_camera_sensor_get();
- s->set_focus(s, 0);*/
- }
- void handleStreamRequest() {
- WiFiClient client = nannyServer.available();
- // Send HTTP headers
- client.println("HTTP/1.1 200 OK");
- client.println("Content-Type: multipart/x-mixed-replace; boundary=frame");
- client.println("");
- // Start streaming JPEG frames
- while (client.connected()) {
- camera_fb_t* fb = esp_camera_fb_get();
- if (!fb) {
- Serial.println("Camera capture failed");
- break;
- }
- // Send frame header
- client.println("--frame");
- client.println("Content-Type: image/jpeg");
- client.print("Content-Length: ");
- client.println(fb->len);
- client.println("");
- // Send frame data
- client.write(fb->buf, fb->len);
- client.println("");
- // Release the buffer
- esp_camera_fb_return(fb);
- }
- // Disconnect the client
- client.stop();
- //Serial.println("Client disconnected");
- }
|