mirror of
https://github.com/rzeldent/esp32cam-rtsp.git
synced 2025-11-12 03:06:22 +00:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ce3a12f422 |
22
.devcontainer/devcontainer.json
Normal file
22
.devcontainer/devcontainer.json
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"name": "ESP32-CAM RTSP Development",
|
||||
"image": "platformio/platformio-core",
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"platformio.platformio-ide",
|
||||
"ms-vscode.cpptools",
|
||||
"ms-vscode.cmake-tools"
|
||||
]
|
||||
}
|
||||
},
|
||||
"mounts": ["source=/dev,target=/dev,type=bind"],
|
||||
"runArgs": ["--privileged", "--device-cgroup-rule=c 166:* rmw"],
|
||||
"postCreateCommand": "pio pkg update -g -p espressif32",
|
||||
"remoteUser": "root",
|
||||
"forwardPorts": [80, 554],
|
||||
"portsAttributes": {
|
||||
"80": { "label": "Web Interface" },
|
||||
"554": { "label": "RTSP Stream" }
|
||||
}
|
||||
}
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,4 +1,5 @@
|
||||
.*/*
|
||||
.pio/*
|
||||
.vscode/*
|
||||
.*.*
|
||||
__pycache__/
|
||||
*.log
|
||||
|
||||
37
README.md
37
README.md
@@ -42,8 +42,6 @@ This software supports the following ESP32-CAM (and alike) modules:
|
||||
- M5STACK_V2_PSRAM
|
||||
- M5STACK_PSRAM
|
||||
- M5STACK_WIDE
|
||||
- M5STACK M5PoECAM-W
|
||||
- M5STACK Timer CAM (Original and X)
|
||||
- M5STACK
|
||||
- Seeed Studio XIAO ESP32S3 SENSE
|
||||
- TTGO T-CAMERA
|
||||
@@ -312,23 +310,22 @@ The availability of PSRAM can be seen in the HTML status overview.
|
||||
|
||||
Not all the boards are equipped with PSRAM:
|
||||
|
||||
| Board | PSRAM |
|
||||
|--------------------|----------------|
|
||||
| WROVER_KIT | 8Mb |
|
||||
| ESP_EYE | 8Mb |
|
||||
| ESP32S3_EYE | 8Mb |
|
||||
| M5STACK_PSRAM | 8Mb |
|
||||
| M5STACK_V2_PSRAM | Version B only |
|
||||
| M5STACK_WIDE | 8Mb |
|
||||
| M5STACK_ESP32CAM | No |
|
||||
| M5STACK_UNITCAM | No |
|
||||
| M5STACK_UNITCAMS3 | 8Mb |
|
||||
| M5STACK_M5PoECAM-W | 8MB |
|
||||
| AI_THINKER | 8Mb |
|
||||
| TTGO_T_JOURNAL | No |
|
||||
| ESP32_CAM_BOARD | ? |
|
||||
| ESP32S2_CAM_BOARD | ? |
|
||||
| ESP32S3_CAM_LCD | ? |
|
||||
| Board | PSRAM |
|
||||
|--- |--- |
|
||||
| WROVER_KIT | 8Mb |
|
||||
| ESP_EYE | 8Mb |
|
||||
| ESP32S3_EYE | 8Mb |
|
||||
| M5STACK_PSRAM | 8Mb |
|
||||
| M5STACK_V2_PSRAM | Version B only |
|
||||
| M5STACK_WIDE | 8Mb |
|
||||
| M5STACK_ESP32CAM | No |
|
||||
| M5STACK_UNITCAM | No |
|
||||
| M5STACK_UNITCAMS3 | 8Mb |
|
||||
| AI_THINKER | 8Mb |
|
||||
| TTGO_T_JOURNAL | No |
|
||||
| ESP32_CAM_BOARD | ? |
|
||||
| ESP32S2_CAM_BOARD | ? |
|
||||
| ESP32S3_CAM_LCD | ? |
|
||||
|
||||
Depending on the image resolution, framerate and quality, the PSRAM must be enabled and/or the number of frame buffers increased to keep up with the data generated by the sensor.
|
||||
There are (a lot of?) boards around with faulty PSRAM. If the camera fails to initialize, this might be a reason. See on [Reddit](https://www.reddit.com/r/esp32/comments/z2hyns/i_have_a_faulty_psram_on_my_esp32cam_what_should/).
|
||||
@@ -360,8 +357,6 @@ esp32cam-rtsp depends on PlatformIO, Bootstrap 5 and Micro-RTSP by Kevin Hester.
|
||||
|
||||
## Change history
|
||||
|
||||
- August 2024
|
||||
- Added support for M5Stack M5PoECAM-W
|
||||
- January 2024
|
||||
- Moved settings to board definitions
|
||||
- Added new boards
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 36 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 18 KiB |
@@ -9,7 +9,6 @@
|
||||
"'-D ESP32CAM_AI_THINKER'",
|
||||
"'-D BOARD_HAS_PSRAM'",
|
||||
"'-mfix-esp32-psram-cache-issue'",
|
||||
"'-D FLASH_LED_GPIO=4'",
|
||||
"'-D USER_LED_GPIO=33'",
|
||||
"'-D USER_LED_ON_LEVEL=LOW'",
|
||||
"'-D CAMERA_CONFIG_PIN_PWDN=32'",
|
||||
|
||||
@@ -1,68 +0,0 @@
|
||||
{
|
||||
"build": {
|
||||
"arduino":{
|
||||
"ldscript": "esp32_out.ld",
|
||||
"partitions": "default_8MB.csv"
|
||||
},
|
||||
"core": "esp32",
|
||||
"extra_flags": [
|
||||
"'-D ESP32CAM_M5STACK_M5POECAM'",
|
||||
"'-D BOARD_HAS_PSRAM'",
|
||||
"'-D USER_LED_GPIO=0'",
|
||||
"'-D USER_LED_ON_LEVEL=LOW'",
|
||||
"'-mfix-esp32-psram-cache-issue'",
|
||||
"'-D CAMERA_CONFIG_PIN_PWDN=GPIO_NUM_NC'",
|
||||
"'-D CAMERA_CONFIG_PIN_RESET=15'",
|
||||
"'-D CAMERA_CONFIG_PIN_XCLK=27'",
|
||||
"'-D CAMERA_CONFIG_PIN_SCCB_SDA=14'",
|
||||
"'-D CAMERA_CONFIG_PIN_SCCB_SCL=12'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y9=19'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y8=36'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y7=18'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y6=39'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y5=5'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y4=34'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y3=35'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y2=32'",
|
||||
"'-D CAMERA_CONFIG_PIN_VSYNC=22'",
|
||||
"'-D CAMERA_CONFIG_PIN_HREF=26'",
|
||||
"'-D CAMERA_CONFIG_PIN_PCLK=21'",
|
||||
"'-D CAMERA_CONFIG_CLK_FREQ_HZ=20000000'",
|
||||
"'-D CAMERA_CONFIG_LEDC_TIMER=LEDC_TIMER_0'",
|
||||
"'-D CAMERA_CONFIG_LEDC_CHANNEL=LEDC_CHANNEL_0'",
|
||||
"'-D CAMERA_CONFIG_FB_COUNT=2'",
|
||||
"'-D CAMERA_CONFIG_FB_LOCATION=CAMERA_FB_IN_PSRAM'",
|
||||
"'-D SCCB_I2C_PORT=I2C_NUM_0'",
|
||||
"'-D GROVE_SDA=25'",
|
||||
"'-D GROVE_SCL=33'"
|
||||
],
|
||||
"f_cpu": "240000000L",
|
||||
"f_flash": "80000000L",
|
||||
"flash_mode": "dio",
|
||||
"mcu": "esp32",
|
||||
"variant": "esp32"
|
||||
},
|
||||
"connectivity": [
|
||||
"wifi",
|
||||
"bluetooth",
|
||||
"ethernet",
|
||||
"can"
|
||||
],
|
||||
"debug": {
|
||||
"openocd_board": "esp-wroom-32.cfg"
|
||||
},
|
||||
"frameworks": [
|
||||
"arduino",
|
||||
"espidf"
|
||||
],
|
||||
"name": "ESP32-CAM M5STACK M5PoECAM-W",
|
||||
"upload": {
|
||||
"flash_size": "16MB",
|
||||
"maximum_ram_size": 327680,
|
||||
"maximum_size": 16777216,
|
||||
"require_upload_port": true,
|
||||
"speed": 460800
|
||||
},
|
||||
"url": "https://docs.m5stack.com/en/unit/poecam-w",
|
||||
"vendor": "M5STACK"
|
||||
}
|
||||
@@ -20,25 +20,25 @@
|
||||
"'-D CAMERA_CONFIG_PIN_XCLK=11'",
|
||||
"'-D CAMERA_CONFIG_PIN_SCCB_SDA=17'",
|
||||
"'-D CAMERA_CONFIG_PIN_SCCB_SCL=41'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y9=13'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y8=4'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y7=10'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y6=5'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y5=7'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y4=16'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y3=15'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y2=6'",
|
||||
"'-D CAMERA_CONFIG_PIN_VSYNC=42'",
|
||||
"'-D CAMERA_CONFIG_PIN_HREF=18'",
|
||||
"'-D CAMERA_CONFIG_PIN_PCLK=12'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y9=35'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y8=34'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y7=39'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y6=36'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y5=19'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y4=18'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y3=5'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y2=4'",
|
||||
"'-D CAMERA_CONFIG_PIN_VSYNC=25'",
|
||||
"'-D CAMERA_CONFIG_PIN_HREF=23'",
|
||||
"'-D CAMERA_CONFIG_PIN_PCLK=22'",
|
||||
"'-D CAMERA_CONFIG_CLK_FREQ_HZ=20000000'",
|
||||
"'-D CAMERA_CONFIG_LEDC_TIMER=LEDC_TIMER_0'",
|
||||
"'-D CAMERA_CONFIG_LEDC_CHANNEL=LEDC_CHANNEL_0'",
|
||||
"'-D CAMERA_CONFIG_FB_COUNT=2'",
|
||||
"'-D CAMERA_CONFIG_FB_LOCATION=CAMERA_FB_IN_DRAM'",
|
||||
"'-D SCCB_I2C_PORT=I2C_NUM_0'",
|
||||
"'-D I2C_MEMS_SDA=17'",
|
||||
"'-D I2C_MEMS_SCL=41'",
|
||||
"'-D I2C_MEMS_SDA=48'",
|
||||
"'-D I2C_MEMS_SCL=47'",
|
||||
"'-D TF_CS=9'",
|
||||
"'-D TF_MOSI=38'",
|
||||
"'-D TF_CLK=39'",
|
||||
|
||||
@@ -1,72 +0,0 @@
|
||||
{
|
||||
"build": {
|
||||
"arduino": {
|
||||
"ldscript": "esp32s3_out.ld",
|
||||
"partitions": "default_16MB.csv",
|
||||
"memory_type": "qio_opi"
|
||||
},
|
||||
"core": "esp32",
|
||||
"extra_flags": [
|
||||
"'-D ARDUINO_ESP32S3_DEV'",
|
||||
"'-D ARDUINO_USB_MODE=1'",
|
||||
"'-D BOARD_HAS_PSRAM'",
|
||||
"'-D ARDUINO_RUNNING_CORE=1'",
|
||||
"'-D ARDUINO_EVENT_RUNNING_CORE=1'",
|
||||
"'-D ARDUINO_USB_CDC_ON_BOOT=1'",
|
||||
"'-D CAMERA_CONFIG_PIN_PWDN=GPIO_NUM_NC'",
|
||||
"'-D CAMERA_CONFIG_PIN_RESET=GPIO_NUM_NC'",
|
||||
"'-D CAMERA_CONFIG_PIN_XCLK=15'",
|
||||
"'-D CAMERA_CONFIG_PIN_SCCB_SDA=4'",
|
||||
"'-D CAMERA_CONFIG_PIN_SCCB_SCL=5'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y9=16'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y8=17'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y7=18'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y6=12'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y5=10'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y4=8'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y3=9'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y2=11'",
|
||||
"'-D CAMERA_CONFIG_PIN_VSYNC=6'",
|
||||
"'-D CAMERA_CONFIG_PIN_HREF=7'",
|
||||
"'-D CAMERA_CONFIG_PIN_PCLK=13'",
|
||||
"'-D CAMERA_CONFIG_CLK_FREQ_HZ=20000000'",
|
||||
"'-D CAMERA_CONFIG_LEDC_TIMER=LEDC_TIMER_0'",
|
||||
"'-D CAMERA_CONFIG_LEDC_CHANNEL=LEDC_CHANNEL_0'",
|
||||
"'-D CAMERA_CONFIG_FB_COUNT=2'",
|
||||
"'-D CAMERA_CONFIG_FB_LOCATION=CAMERA_FB_IN_PSRAM'",
|
||||
"'-D SCCB_I2C_PORT=I2C_NUM_0'"
|
||||
],
|
||||
"f_cpu": "240000000L",
|
||||
"f_flash": "80000000L",
|
||||
"flash_mode": "dio",
|
||||
"psram_type": "opi",
|
||||
"hwids": [
|
||||
[
|
||||
"0x303A",
|
||||
"0x1001"
|
||||
]
|
||||
],
|
||||
"mcu": "esp32s3",
|
||||
"variant": "esp32s3"
|
||||
},
|
||||
"connectivity": [
|
||||
"wifi"
|
||||
],
|
||||
"debug": {
|
||||
"openocd_target": "esp32s3.cfg"
|
||||
},
|
||||
"frameworks": [
|
||||
"arduino",
|
||||
"espidf"
|
||||
],
|
||||
"name": "ESP32 S3 WROOM n16r8",
|
||||
"upload": {
|
||||
"flash_size": "16MB",
|
||||
"maximum_ram_size": 327680,
|
||||
"maximum_size": 16777216,
|
||||
"require_upload_port": true,
|
||||
"speed": 921600
|
||||
},
|
||||
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/user-guide-devkitc-1.html",
|
||||
"vendor": "Espressif"
|
||||
}
|
||||
@@ -1,69 +0,0 @@
|
||||
{
|
||||
"build": {
|
||||
"arduino":{
|
||||
"ldscript": "esp32_out.ld",
|
||||
"partitions": "huge_app.csv"
|
||||
},
|
||||
"core": "esp32",
|
||||
"extra_flags": [
|
||||
"'-D ARDUINO_M5Stack_Timer_CAM'",
|
||||
"'-D BOARD_HAS_PSRAM'",
|
||||
"'-mfix-esp32-psram-cache-issue'",
|
||||
"'-mfix-esp32-psram-cache-strategy=memw'",
|
||||
"'-D USER_LED_GPIO=2'",
|
||||
"'-D USER_LED_ON_LEVEL=HIGH'",
|
||||
"'-D CAMERA_CONFIG_PIN_PWDN=GPIO_NUM_NC'",
|
||||
"'-D CAMERA_CONFIG_PIN_RESET=15'",
|
||||
"'-D CAMERA_CONFIG_PIN_XCLK=27'",
|
||||
"'-D CAMERA_CONFIG_PIN_SCCB_SDA=25'",
|
||||
"'-D CAMERA_CONFIG_PIN_SCCB_SCL=23'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y9=19'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y8=36'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y7=18'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y6=39'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y5=5'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y4=34'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y3=35'",
|
||||
"'-D CAMERA_CONFIG_PIN_Y2=32'",
|
||||
"'-D CAMERA_CONFIG_PIN_VSYNC=22'",
|
||||
"'-D CAMERA_CONFIG_PIN_HREF=26'",
|
||||
"'-D CAMERA_CONFIG_PIN_PCLK=21'",
|
||||
"'-D CAMERA_CONFIG_CLK_FREQ_HZ=20000000'",
|
||||
"'-D CAMERA_CONFIG_LEDC_TIMER=LEDC_TIMER_0'",
|
||||
"'-D CAMERA_CONFIG_LEDC_CHANNEL=LEDC_CHANNEL_0'",
|
||||
"'-D CAMERA_CONFIG_FB_COUNT=2'",
|
||||
"'-D CAMERA_CONFIG_FB_LOCATION=CAMERA_FB_IN_PSRAM'",
|
||||
"'-D SCCB_I2C_PORT=I2C_NUM_0'",
|
||||
"'-D GROVE_SDA=4'",
|
||||
"'-D GROVE_SCL=13'"
|
||||
],
|
||||
"f_cpu": "240000000L",
|
||||
"f_flash": "40000000L",
|
||||
"flash_mode": "dio",
|
||||
"mcu": "esp32",
|
||||
"variant": "m5stack_timer_cam"
|
||||
},
|
||||
"connectivity": [
|
||||
"wifi",
|
||||
"bluetooth",
|
||||
"ethernet",
|
||||
"can"
|
||||
],
|
||||
"debug": {
|
||||
"openocd_board": "esp-wroom-32.cfg"
|
||||
},
|
||||
"frameworks": [
|
||||
"arduino",
|
||||
"espidf"
|
||||
],
|
||||
"name": "M5Stack Timer CAM",
|
||||
"upload": {
|
||||
"flash_size": "4MB",
|
||||
"maximum_ram_size": 327680,
|
||||
"maximum_size": 4194304,
|
||||
"require_upload_port": true,
|
||||
"speed": 115200
|
||||
},
|
||||
"url": "https://docs.m5stack.com/en/unit/timercam",
|
||||
"vendor": "M5STACK"
|
||||
}
|
||||
@@ -10,7 +10,6 @@
|
||||
|
||||
###############################################################################
|
||||
[platformio]
|
||||
#default_envs = esp32cam_s3_wroom_n16r8
|
||||
#default_envs = esp32cam_ai_thinker
|
||||
#default_envs = esp32cam_espressif_esp_eye
|
||||
#default_envs = esp32cam_espressif_esp32s2_cam_board
|
||||
@@ -21,19 +20,18 @@
|
||||
#default_envs = esp32cam_m5stack_camera_psram
|
||||
#default_envs = esp32cam_m5stack_camera
|
||||
#default_envs = esp32cam_m5stack_esp32cam
|
||||
|
||||
#default_envs = esp32cam_m5stack_unitcam
|
||||
#default_envs = esp32cam_m5stack_unitcams3
|
||||
#default_envs = esp32cam_m5stack_wide
|
||||
#default_envs = esp32cam_m5stack_m5poecam_w
|
||||
#default_envs = esp32cam_seeed_xiao_esp32s3_sense
|
||||
#default_envs = esp32cam_ttgo_t_camera
|
||||
#default_envs = esp32cam_ttgo_t_journal
|
||||
|
||||
[env]
|
||||
platform = espressif32@6.9.0
|
||||
platform = espressif32
|
||||
framework = arduino
|
||||
|
||||
#upload_port = /dev/tty.usbmodem*
|
||||
#upload_protocol = espota
|
||||
#upload_port = 192.168.178.223
|
||||
#upload_flags = --auth='ESP32CAM-RTSP'
|
||||
@@ -106,9 +104,6 @@ board = esp32cam_m5stack_unitcams3
|
||||
[env:esp32cam_m5stack_wide]
|
||||
board = esp32cam_m5stack_wide
|
||||
|
||||
[env:esp32cam_m5stack_m5poecam_w]
|
||||
board = esp32cam_m5stack_m5poecam_w
|
||||
|
||||
[env:esp32cam_seeed_xiao_esp32s3_sense]
|
||||
board = esp32cam_seeed_xiao_esp32s3_sense
|
||||
|
||||
@@ -116,10 +111,4 @@ board = esp32cam_seeed_xiao_esp32s3_sense
|
||||
board = esp32cam_ttgo_t_camera
|
||||
|
||||
[env:esp32cam_ttgo_t_journal]
|
||||
board = esp32cam_ttgo_t_journal
|
||||
|
||||
[env:m5stack-timer-cam]
|
||||
board = m5stack-timer-cam
|
||||
|
||||
[env:esp32cam_s3_wroom_n16r8]
|
||||
board = esp32cam_s3_wroom_n16r8
|
||||
board = esp32cam_ttgo_t_journal
|
||||
84
src/main.cpp
84
src/main.cpp
@@ -150,20 +150,6 @@ void handle_root()
|
||||
web_server.send(200, "text/html", html);
|
||||
}
|
||||
|
||||
#ifdef FLASH_LED_GPIO
|
||||
void handle_flash()
|
||||
{
|
||||
log_v("handle_flash");
|
||||
// If no value present, use off, otherwise convert v to integer. Depends on analog resolution for max value
|
||||
auto v = web_server.hasArg("v") ? web_server.arg("v").toInt() : 0;
|
||||
// If conversion fails, v = 0
|
||||
analogWrite(FLASH_LED_GPIO, v);
|
||||
|
||||
web_server.sendHeader("Cache-Control", "no-cache, no-store, must-revalidate");
|
||||
web_server.send(200);
|
||||
}
|
||||
#endif
|
||||
|
||||
void handle_snapshot()
|
||||
{
|
||||
log_v("handle_snapshot");
|
||||
@@ -233,35 +219,35 @@ esp_err_t initialize_camera()
|
||||
auto jpeg_quality = param_jpg_quality.value();
|
||||
log_i("Frame duration: %d ms", param_frame_duration.value());
|
||||
const camera_config_t camera_config = {
|
||||
.pin_pwdn = CAMERA_CONFIG_PIN_PWDN, // GPIO pin for camera power down line
|
||||
.pin_reset = CAMERA_CONFIG_PIN_RESET, // GPIO pin for camera reset line
|
||||
.pin_xclk = CAMERA_CONFIG_PIN_XCLK, // GPIO pin for camera XCLK line
|
||||
.pin_sccb_sda = CAMERA_CONFIG_PIN_SCCB_SDA, // GPIO pin for camera SDA line
|
||||
.pin_sccb_scl = CAMERA_CONFIG_PIN_SCCB_SCL, // GPIO pin for camera SCL line
|
||||
.pin_d7 = CAMERA_CONFIG_PIN_Y9, // GPIO pin for camera D7 line
|
||||
.pin_d6 = CAMERA_CONFIG_PIN_Y8, // GPIO pin for camera D6 line
|
||||
.pin_d5 = CAMERA_CONFIG_PIN_Y7, // GPIO pin for camera D5 line
|
||||
.pin_d4 = CAMERA_CONFIG_PIN_Y6, // GPIO pin for camera D4 line
|
||||
.pin_d3 = CAMERA_CONFIG_PIN_Y5, // GPIO pin for camera D3 line
|
||||
.pin_d2 = CAMERA_CONFIG_PIN_Y4, // GPIO pin for camera D2 line
|
||||
.pin_d1 = CAMERA_CONFIG_PIN_Y3, // GPIO pin for camera D1 line
|
||||
.pin_d0 = CAMERA_CONFIG_PIN_Y2, // GPIO pin for camera D0 line
|
||||
.pin_vsync = CAMERA_CONFIG_PIN_VSYNC, // GPIO pin for camera VSYNC line
|
||||
.pin_href = CAMERA_CONFIG_PIN_HREF, // GPIO pin for camera HREF line
|
||||
.pin_pclk = CAMERA_CONFIG_PIN_PCLK, // GPIO pin for camera PCLK line
|
||||
.xclk_freq_hz = CAMERA_CONFIG_CLK_FREQ_HZ, // Frequency of XCLK signal, in Hz. EXPERIMENTAL: Set to 16MHz on ESP32-S2 or ESP32-S3 to enable EDMA mode
|
||||
.ledc_timer = CAMERA_CONFIG_LEDC_TIMER, // LEDC timer to be used for generating XCLK
|
||||
.ledc_channel = CAMERA_CONFIG_LEDC_CHANNEL, // LEDC channel to be used for generating XCLK
|
||||
.pixel_format = PIXFORMAT_JPEG, // Format of the pixel data: PIXFORMAT_ + YUV422|GRAYSCALE|RGB565|JPEG
|
||||
.frame_size = frame_size, // Size of the output image: FRAMESIZE_ + QVGA|CIF|VGA|SVGA|XGA|SXGA|UXGA
|
||||
.jpeg_quality = jpeg_quality, // Quality of JPEG output. 0-63 lower means higher quality
|
||||
.fb_count = CAMERA_CONFIG_FB_COUNT, // Number of frame buffers to be allocated. If more than one, then each frame will be acquired (double speed)
|
||||
.fb_location = CAMERA_CONFIG_FB_LOCATION, // The location where the frame buffer will be allocated
|
||||
.grab_mode = CAMERA_GRAB_LATEST, // When buffers should be filled
|
||||
.pin_pwdn = CAMERA_CONFIG_PIN_PWDN, // GPIO pin for camera power down line
|
||||
.pin_reset = CAMERA_CONFIG_PIN_RESET, // GPIO pin for camera reset line
|
||||
.pin_xclk = CAMERA_CONFIG_PIN_XCLK, // GPIO pin for camera XCLK line
|
||||
.pin_sccb_sda = CAMERA_CONFIG_PIN_SCCB_SDA, // GPIO pin for camera SDA line
|
||||
.pin_sccb_scl = CAMERA_CONFIG_PIN_SCCB_SCL, // GPIO pin for camera SCL line
|
||||
.pin_d7 = CAMERA_CONFIG_PIN_Y9, // GPIO pin for camera D7 line
|
||||
.pin_d6 = CAMERA_CONFIG_PIN_Y8, // GPIO pin for camera D6 line
|
||||
.pin_d5 = CAMERA_CONFIG_PIN_Y7, // GPIO pin for camera D5 line
|
||||
.pin_d4 = CAMERA_CONFIG_PIN_Y6, // GPIO pin for camera D4 line
|
||||
.pin_d3 = CAMERA_CONFIG_PIN_Y5, // GPIO pin for camera D3 line
|
||||
.pin_d2 = CAMERA_CONFIG_PIN_Y4, // GPIO pin for camera D2 line
|
||||
.pin_d1 = CAMERA_CONFIG_PIN_Y3, // GPIO pin for camera D1 line
|
||||
.pin_d0 = CAMERA_CONFIG_PIN_Y2, // GPIO pin for camera D0 line
|
||||
.pin_vsync = CAMERA_CONFIG_PIN_VSYNC, // GPIO pin for camera VSYNC line
|
||||
.pin_href = CAMERA_CONFIG_PIN_HREF, // GPIO pin for camera HREF line
|
||||
.pin_pclk = CAMERA_CONFIG_PIN_PCLK, // GPIO pin for camera PCLK line
|
||||
.xclk_freq_hz = CAMERA_CONFIG_CLK_FREQ_HZ, // Frequency of XCLK signal, in Hz. EXPERIMENTAL: Set to 16MHz on ESP32-S2 or ESP32-S3 to enable EDMA mode
|
||||
.ledc_timer = CAMERA_CONFIG_LEDC_TIMER, // LEDC timer to be used for generating XCLK
|
||||
.ledc_channel = CAMERA_CONFIG_LEDC_CHANNEL, // LEDC channel to be used for generating XCLK
|
||||
.pixel_format = PIXFORMAT_JPEG, // Format of the pixel data: PIXFORMAT_ + YUV422|GRAYSCALE|RGB565|JPEG
|
||||
.frame_size = frame_size, // Size of the output image: FRAMESIZE_ + QVGA|CIF|VGA|SVGA|XGA|SXGA|UXGA
|
||||
.jpeg_quality = jpeg_quality, // Quality of JPEG output. 0-63 lower means higher quality
|
||||
.fb_count = CAMERA_CONFIG_FB_COUNT, // Number of frame buffers to be allocated. If more than one, then each frame will be acquired (double speed)
|
||||
.fb_location = CAMERA_CONFIG_FB_LOCATION, // The location where the frame buffer will be allocated
|
||||
.grab_mode = CAMERA_GRAB_LATEST, // When buffers should be filled
|
||||
#if CONFIG_CAMERA_CONVERTER_ENABLED
|
||||
conv_mode = CONV_DISABLE, // RGB<->YUV Conversion mode
|
||||
conv_mode = CONV_DISABLE, // RGB<->YUV Conversion mode
|
||||
#endif
|
||||
.sccb_i2c_port = SCCB_I2C_PORT // If pin_sccb_sda is -1, use the already configured I2C bus by number
|
||||
.sccb_i2c_port = SCCB_I2C_PORT // If pin_sccb_sda is -1, use the already configured I2C bus by number
|
||||
};
|
||||
|
||||
return cam.init(camera_config);
|
||||
@@ -330,8 +316,6 @@ void setup()
|
||||
// Disable brownout
|
||||
WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0);
|
||||
|
||||
Serial.begin(115200);
|
||||
Serial.setDebugOutput(true);
|
||||
#ifdef CAMERA_POWER_GPIO
|
||||
pinMode(CAMERA_POWER_GPIO, OUTPUT);
|
||||
digitalWrite(CAMERA_POWER_GPIO, CAMERA_POWER_ON_LEVEL);
|
||||
@@ -342,13 +326,8 @@ void setup()
|
||||
digitalWrite(USER_LED_GPIO, !USER_LED_ON_LEVEL);
|
||||
#endif
|
||||
|
||||
#ifdef FLASH_LED_GPIO
|
||||
pinMode(FLASH_LED_GPIO, OUTPUT);
|
||||
// Set resolution to 8 bits
|
||||
analogWriteResolution(8);
|
||||
// Turn flash led off
|
||||
analogWrite(FLASH_LED_GPIO, 0);
|
||||
#endif
|
||||
Serial.begin(115200);
|
||||
Serial.setDebugOutput(true);
|
||||
|
||||
#ifdef ARDUINO_USB_CDC_ON_BOOT
|
||||
// Delay for USB to connect/settle
|
||||
@@ -423,10 +402,7 @@ void setup()
|
||||
web_server.on("/snapshot", HTTP_GET, handle_snapshot);
|
||||
// Camera stream
|
||||
web_server.on("/stream", HTTP_GET, handle_stream);
|
||||
#ifdef FLASH_LED_GPIO
|
||||
// Flash led
|
||||
web_server.on("/flash", HTTP_GET, handle_flash);
|
||||
#endif
|
||||
|
||||
web_server.onNotFound([]()
|
||||
{ iotWebConf.handleNotFound(); });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user