Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
T
thk_EspCamServer
Manage
Activity
Members
Labels
Plan
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
thk_libs
microcontrollers
thk_EspCamServer
Merge requests
!1
init
Code
Review changes
Check out branch
Download
Patches
Plain diff
Expand sidebar
Merged
init
master
into
main
Overview
0
Commits
2
Pipelines
0
Changes
4
Merged
Vladislav Vlasuk
requested to merge
master
into
main
3 years ago
Overview
0
Commits
2
Pipelines
0
Changes
4
0
0
Merge request reports
Compare
main
version 1
37fc22d7
3 years ago
main (base)
and
latest version
latest version
42b332f7
2 commits,
3 years ago
version 1
37fc22d7
1 commit,
3 years ago
4 files
+
267
−
59
Side-by-side
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
Files
4
examples/cameraserver/cameraserver.ino
0 → 100644
+
109
−
0
View file @ 42b332f7
Edit in single-file editor
Open in Web IDE
// Beschreibung:
// Beispiel Sketch für das Auslesen der ESP32One Waveshare Kamera
// und lokales Streamen des Kamerabildes per HTTP
// Abhängigkeiten:
// thk_EspCamDriver.h, thk_EspCamServer.h
// Autor:
// Vladislav Vlasuk (TH Köln, Labor für Assistenzsysteme)
// Datum:
// 05.07.2022
// Bitte ESP32 Kameramodell auskommentieren
#include
<thk_EspCamDriver.h>
// ESP32 Kamera
#include
<thk_EspCamServer.h>
// WIFI und HTTP-Server
// Wlan-Netzwerk und Internetressource (URI) festlegen
const
char
*
ssid
=
"iPhone von Vladislav"
;
const
char
*
password
=
"qqqqqqqq"
;
const
char
*
uri
=
"/stream"
;
// ESP32 Kameraspezifisch
esp_image_t
image
;
camera_config_t
cameraconfig
;
// Konfig
esp_err_t
cameraerror
;
// Fehler
camera_fb_t
*
fb
=
NULL
;
// Framebuffer
// Objekte erzeugen
thk_EspCamDriver
camera
(
&
cameraconfig
,
&
cameraerror
,
fb
,
&
image
);
thk_EspCamServer
server
(
ssid
,
password
,
uri
);
void
setup
()
{
Serial
.
begin
(
115200
);
camera
.
set_hmirror
(
1
);
camera
.
set_vflip
(
1
);
camera
.
set_grayscale
(
1
);
camera
.
init
();
// Kamera starten
server
.
connect
();
// Wifi verbinden
server
.
start_webserver
(
&
get_stream_handler
);
// Server starten
};
void
loop
()
{
// Do nothing. Everything is done in another task by the web server
delay
(
1e4
);
}
// Handler für das Auslesen des Kameramoduls am ESP32One Waveshare
esp_err_t
get_stream_handler
(
httpd_req_t
*
req
)
{
Serial
.
println
(
"Starte Kamera Handler"
);
esp_err_t
res
=
ESP_OK
;
size_t
_jpg_buf_len
=
0
;
uint8_t
*
_jpg_buf
=
NULL
;
char
*
part_buf
[
128
];
res
=
httpd_resp_set_type
(
req
,
_STREAM_CONTENT_TYPE
);
if
(
res
!=
ESP_OK
)
return
res
;
while
(
true
)
{
// Schieße Bild
camera
.
take_picture
();
_jpg_buf_len
=
camera
.
get_fb
()
->
len
;
_jpg_buf
=
camera
.
get_fb
()
->
buf
;
// This API will send the data as an HTTP response to the request in the form of chunks with chunked-encoding
if
(
res
==
ESP_OK
)
{
res
=
httpd_resp_send_chunk
(
req
,
_STREAM_BOUNDARY
,
strlen
(
_STREAM_BOUNDARY
));
}
if
(
res
==
ESP_OK
)
{
size_t
hlen
=
snprintf
((
char
*
)
part_buf
,
128
,
_STREAM_PART
,
_jpg_buf_len
);
res
=
httpd_resp_send_chunk
(
req
,
(
const
char
*
)
part_buf
,
hlen
);
}
if
(
res
==
ESP_OK
)
{
res
=
httpd_resp_send_chunk
(
req
,
(
const
char
*
)
_jpg_buf
,
_jpg_buf_len
);
}
// close stream
if
(
camera
.
get_fb
())
{
camera
.
close_stream
();
_jpg_buf
=
NULL
;
}
else
if
(
_jpg_buf
)
{
free
(
_jpg_buf
);
_jpg_buf
=
NULL
;
}
if
(
res
!=
ESP_OK
)
{
Serial
.
println
(
"send frame failed failed"
);
break
;
}
}
return
res
;
}
// Bare Minimum Handler
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
;
}
Loading