#include "esp_camera.h" #include // MOD // WARNING!!! Make sure that you have either selected ESP32 Wrover Module, // or another board which has PSRAM enabled // // 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 = "NetworkName"; const char* password = "MyPassword"; uint8_t dis_count = 0; void startCameraServer(); void setup() { Serial.begin(115200); Serial.setDebugOutput(true); Serial.println(); 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; //init with high specs to pre-allocate larger buffers if(psramFound()){ config.frame_size = FRAMESIZE_UXGA; config.jpeg_quality = 10; config.fb_count = 2; } else { config.frame_size = FRAMESIZE_SVGA; config.jpeg_quality = 12; config.fb_count = 1; } #if defined(CAMERA_MODEL_ESP_EYE) pinMode(13, INPUT_PULLUP); pinMode(14, INPUT_PULLUP); #endif // camera init esp_err_t err = esp_camera_init(&config); if (err != ESP_OK) { Serial.printf("Camera init failed with error 0x%x", err); return; } sensor_t * s = esp_camera_sensor_get(); //initial sensors are flipped vertically and colors are a bit saturated s->set_vflip(s, 1);//flip it back s->set_hmirror(s, 1); //drop down frame size for higher initial frame rate s->set_framesize(s, FRAMESIZE_XGA); //umcomment for static IP // IPAddress ip(192, 168, 4, 210); // IPAddress gateway(192, 168, 4, 1); // IPAddress subnet(255, 255, 255, 0); // IPAddress dnsAdrr(8, 8, 8, 8); // Serial.println(F("Wifi config...")); // WiFi.config(ip, gateway, subnet, dnsAdrr); //Comment out for static IP WiFi.config(INADDR_NONE, INADDR_NONE, INADDR_NONE); // helps set host name WiFi.setHostname("ESP32C_STREET"); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print("."); dis_count++; if(dis_count>60) { Serial.println(); Serial.println("Restarting ESP"); delay(1000); ESP.restart(); } } Serial.println(""); Serial.println("WiFi connected"); startCameraServer(); Serial.print("Camera Ready! Use 'http://"); Serial.print(WiFi.localIP()); Serial.println("' to connect"); } void loop() { //Reboot ESP32 if Wi-fi connection is lost (fixes some issues) delay(1000); if(WiFi.status() != WL_CONNECTED) { dis_count++; Serial.println("Not Connected to Wi-Fi | " + String(dis_count)); } else { dis_count=0; } if(dis_count>60) { Serial.println("Restarting ESP"); delay(1000); ESP.restart(); } }