thk_EspCamServer
Zunächst muss die Bibliothek im Sketch inkludiert werden.
#include "thk_EspCamServer.h" // WIFI und HTTP-Server
Anschließend wird das WiFI-Netzwerk konfiguriert und (optional) der Name des HTTP-Ressource festgelegt.
const char *ssid = "FRITZBOX";
const char *password = "qqqqqqqq";
const char *uri = "/stream";
Nun kann das Objekt erzeugt werden.
thk_EspCamServer server(ssid, password, uri);
Für die Verwendung der Klasse ist ein sogenannter Handler erforderlich. Dieser regelt das Verhalten beim Aufrufen der Internetressource (bspw. beim eintippen von http://172.02.11/server im Browser innerhalb des lokalen Netzwerks).
Hier kann für den Anfang die folgende Funktion außerhalb der setup() und loop() Routine erstellt werden:
static esp_err_t get_helloworld_handler(httpd_req_t *req)
{
/* Send a simple response */
Serial.println("Ein HTTP Request hat uns erreicht!");
return ESP_OK;
}
Hier erfolgt beim Aufrufen der Internetressource eine Textausgabe durch den ESP32 im Seriellen Monitor.
In der Setup Routine wird die Verbindung zum WiFi-Netzwerk aufgebaut
server.connect();
und der Webserver mit einer Referenz auf den benutzerdefinierten Handler (hier unser HelloWorld Beispiel) aufgerufen.
server.start_webserver(&get_stream_handler);
CameraWebServer
Das Beispiel cameraserver.ino streamt das Kamerabild mittels eines lokalen Webservers. Hierfür ist die Bibliothek thk_EspCamDriver erforderlich!
https://git-ce.rwth-aachen.de/thk_libs/microcontrollers/thk_espcamdriver.git
Zum Verwenden des Skriptes muss das Netzwerk vorab angepasst werden
const char* ssid = "iPhone von Vladislav";
const char* password = "qqqqqqqq";
Im Anschluss den Sketch auf den ESP32 One hochladen. Hierbei als Board "ESP32 DEV MODULE(esp32)" wählen. Nun kann mit einem im Netzwerk befindlichen Gerät über die Https-Adresse das Bild im Webserver angezeigt und gespeichert werden. Im Seriellen Monitor wird hier durch das Neustarten des ESP (Reset-Button) die Adresse ausgegeben.
[OK] WiFi verbunden: 172.20.10.2
[OK] HTTP_Get-Server bereit ( Port 80 ) HTTP: 172.20.10.2/stream
Erläuterung des Skripts
Zunächst wird die erforderliche Bibliothek zum Interagieren mit der Kamera und Starten des Servers inkludiert
#include "thk_EspCamDriver.h" // ESP32 Kamera
#include "thk_EspCamServer.h" // WIFI und HTTP-Server
Im Anschluss wird das Netzwerk eingerichtet
const char *ssid = "iPhone von Vladislav";
const char *password = "qqqqqqqq";
Optional kann auch die Internetressource unbenannt werden. Diese wird beim Aufruf des Servers benötigt.
const char *uri = "/stream";
Die folgenden Objekte sind für den Datenaustausch mit der Kamera notwendig
camera_config_t cameraconfig; // Konfig
esp_err_t cameraerror; // Fehler
camera_fb_t *fb = NULL; // Framebuffer
Um sowohl die Kamera als auch den Server möglichst kompakt für den Anwender nutzbar zu machen, sind zwei benutzerdefinierten Klassen vorhanden
thk_EspCamDriver camera(&cameraconfig, &cameraerror, fb);
thk_EspCamServer server(ssid, password, uri);
Anschließend kann in der Setup-Routine die Kamera initialisiert
camera.init();
Und mit dem WiFi-Netzwerk verbunden werden
server.connect();
Abschließend wird der Webserver gestartet. Dafür ist ein sogenannter Handler erforderlich. Dieser bildet die Antwort auf den Zugriff über HTTP. Hier kann neben dem Stream-Handler für das Kamerabild
server.start_webserver(&get_stream_handler);
auch stattdessen das HelloWorld Beispiel ausprobiert werden. Hierzu die Referenz entsprechend anpassen.
server.start_webserver(&get_helloworld_handler);
Das Kamerabild wird hier als Buffer gespeichert. Die Länge und der Inhalt (Pixel) können über die Server-Bibliothek bezogen werden.
camera.getBufLen()
camera.getJpgBuf()