#include "camera_control.h" #include #include "esp_camera.h" // ========== User Config ========== const char* ssid = "YOUR_WIFI_SSID"; const char* password = "YOUR_WIFI_PASSWORD"; // ================================= bool camera_init() { 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_sccb_sda = 26; config.pin_sccb_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 = 12; config.fb_count = 2; esp_err_t err = esp_camera_init(&config); if (err != ESP_OK) { Serial.printf("[ERROR] Camera init failed: 0x%x\n", err); return false; } Serial.println("[INFO] Camera initialized."); return true; } bool wifi_connect() { WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); Serial.print("[INFO] Connecting to WiFi"); for (int i = 0; i < 40 && WiFi.status() != WL_CONNECTED; i++) { delay(250); Serial.print("."); } if (WiFi.status() == WL_CONNECTED) { Serial.println("\n[INFO] WiFi connected: " + WiFi.localIP().toString()); return true; } else { Serial.println("\n[ERROR] WiFi connect failed."); return false; } }