From 1025059d33df878d3353229250a7d80dcc822883 Mon Sep 17 00:00:00 2001 From: SZL <zhiyingli@g.ucla.edu> Date: Thu, 11 Nov 2021 15:51:38 -0800 Subject: [PATCH] Fixed IP of ESP32CAM --- .../ESP32_Cam/WifiCam_fixIP/WifiCam_fixIP.ino | 172 ++++++++++++++++++ 1 file changed, 172 insertions(+) create mode 100644 Code/ESP32_Cam/WifiCam_fixIP/WifiCam_fixIP.ino diff --git a/Code/ESP32_Cam/WifiCam_fixIP/WifiCam_fixIP.ino b/Code/ESP32_Cam/WifiCam_fixIP/WifiCam_fixIP.ino new file mode 100644 index 0000000..6f5f23d --- /dev/null +++ b/Code/ESP32_Cam/WifiCam_fixIP/WifiCam_fixIP.ino @@ -0,0 +1,172 @@ +#include <WebServer.h> +#include <WiFi.h> +#include <esp32cam.h> + + +// const char* WIFI_SSID = "lemur"; +// const char* WIFI_PASS = "lemur9473"; + +// const char* WIFI_SSID = "uclahci"; +// const char* WIFI_PASS = "94739473"; + +const char* WIFI_SSID = "NETGEAR33"; +const char* WIFI_PASS = "freestreet163"; + +// const char* WIFI_SSID = "LEMUR_ESP32_EYE_AP_1"; +// const char* WIFI_PASS = "123456789"; + +WebServer server(80); + +static auto loRes = esp32cam::Resolution::find(320, 240); +static auto hiRes = esp32cam::Resolution::find(800, 600); + +void +handleBmp() +{ + if (!esp32cam::Camera.changeResolution(loRes)) { + Serial.println("SET-LO-RES FAIL"); + } + + auto frame = esp32cam::capture(); + if (frame == nullptr) { + Serial.println("CAPTURE FAIL"); + server.send(503, "", ""); + return; + } + Serial.printf("CAPTURE OK %dx%d %db\n", frame->getWidth(), frame->getHeight(), + static_cast<int>(frame->size())); + + if (!frame->toBmp()) { + Serial.println("CONVERT FAIL"); + server.send(503, "", ""); + return; + } + Serial.printf("CONVERT OK %dx%d %db\n", frame->getWidth(), frame->getHeight(), + static_cast<int>(frame->size())); + + server.setContentLength(frame->size()); + server.send(200, "image/bmp"); + WiFiClient client = server.client(); + frame->writeTo(client); +} + +void +serveJpg() +{ + auto frame = esp32cam::capture(); + if (frame == nullptr) { + Serial.println("CAPTURE FAIL"); + server.send(503, "", ""); + return; + } + Serial.printf("CAPTURE OK %dx%d %db\n", frame->getWidth(), frame->getHeight(), + static_cast<int>(frame->size())); + + server.setContentLength(frame->size()); + server.send(200, "image/jpeg"); + WiFiClient client = server.client(); + frame->writeTo(client); +} + +void +handleJpgLo() +{ + if (!esp32cam::Camera.changeResolution(loRes)) { + Serial.println("SET-LO-RES FAIL"); + } + serveJpg(); +} + +void +handleJpgHi() +{ + if (!esp32cam::Camera.changeResolution(hiRes)) { + Serial.println("SET-HI-RES FAIL"); + } + serveJpg(); +} + +void +handleJpg() +{ + server.sendHeader("Location", "/cam-hi.jpg"); + server.send(302, "", ""); +} + +void +handleMjpeg() +{ + if (!esp32cam::Camera.changeResolution(hiRes)) { + Serial.println("SET-HI-RES FAIL"); + } + + Serial.println("STREAM BEGIN"); + WiFiClient client = server.client(); + auto startTime = millis(); + int res = esp32cam::Camera.streamMjpeg(client); + if (res <= 0) { + Serial.printf("STREAM ERROR %d\n", res); + return; + } + auto duration = millis() - startTime; + Serial.printf("STREAM END %dfrm %0.2ffps\n", res, 1000.0 * res / duration); +} + +void +setup() +{ + Serial.begin(115200); + Serial.println(); + + // We set a Static IP address + IPAddress local_IP(192, 168, 0, 114); + // We set a Gateway IP address + IPAddress gateway(192, 168, 0, 1); + IPAddress subnet(255, 255, 255, 0); + + { + using namespace esp32cam; + Config cfg; + cfg.setPins(pins::AiThinker); + cfg.setResolution(hiRes); + cfg.setBufferCount(2); + cfg.setJpeg(80); + + bool ok = Camera.begin(cfg); + Serial.println(ok ? "CAMERA OK" : "CAMERA FAIL"); + } + + WiFi.persistent(false); + WiFi.mode(WIFI_STA); + + WiFi.begin(WIFI_SSID, WIFI_PASS); + + if(!WiFi.config(local_IP, gateway, subnet)) { + Serial.println("STA Failed to configure"); + } + + while (WiFi.status() != WL_CONNECTED) { + delay(500); + } + + Serial.print("http://"); + Serial.println(WiFi.localIP()); + // Serial.println(" /cam.bmp"); + Serial.println(" /cam-lo.jpg"); + Serial.println(" /cam-hi.jpg"); + // Serial.println(" /cam.mjpeg"); + + // server.on("/cam.bmp", handleBmp); + server.on("/cam-lo.jpg", handleJpgLo); + server.on("/cam-hi.jpg", handleJpgHi); + // server.on("/cam.jpg", handleJpg); + // server.on("/cam.mjpeg", handleMjpeg); + + server.begin(); +} + +void +loop() +{ + server.handleClient(); +} -- GitLab