1 changed files with 150 additions and 0 deletions
@ -0,0 +1,150 @@
@@ -0,0 +1,150 @@
|
||||
/**
|
||||
* This example takes a picture every 5s and print its size on serial monitor. |
||||
*/ |
||||
|
||||
// =============================== SETUP ======================================
|
||||
|
||||
// 1. Board setup (Uncomment):
|
||||
// #define BOARD_WROVER_KIT
|
||||
// #define BOARD_ESP32CAM_AITHINKER
|
||||
|
||||
/**
|
||||
* 2. Kconfig setup |
||||
* |
||||
* If you have a Kconfig file, copy the content from |
||||
* https://github.com/espressif/esp32-camera/blob/master/Kconfig into it.
|
||||
* In case you haven't, copy and paste this Kconfig file inside the src directory. |
||||
* This Kconfig file has definitions that allows more control over the camera and |
||||
* how it will be initialized. |
||||
*/ |
||||
|
||||
/**
|
||||
* 3. Enable PSRAM on sdkconfig: |
||||
* |
||||
* CONFIG_ESP32_SPIRAM_SUPPORT=y |
||||
* |
||||
* More info on |
||||
* https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/kconfig.html#config-esp32-spiram-support
|
||||
*/ |
||||
|
||||
// ================================ CODE ======================================
|
||||
|
||||
#include <esp_event_loop.h> |
||||
#include <esp_log.h> |
||||
#include <esp_system.h> |
||||
#include <nvs_flash.h> |
||||
#include <sys/param.h> |
||||
#include <string.h> |
||||
|
||||
#include "freertos/FreeRTOS.h" |
||||
#include "freertos/task.h" |
||||
|
||||
#include "esp_camera.h" |
||||
|
||||
// WROVER-KIT PIN Map
|
||||
#ifdef BOARD_WROVER_KIT |
||||
|
||||
#define CAM_PIN_PWDN -1 //power down is not used
|
||||
#define CAM_PIN_RESET -1 //software reset will be performed
|
||||
#define CAM_PIN_XCLK 21 |
||||
#define CAM_PIN_SIOD 26 |
||||
#define CAM_PIN_SIOC 27 |
||||
|
||||
#define CAM_PIN_D7 35 |
||||
#define CAM_PIN_D6 34 |
||||
#define CAM_PIN_D5 39 |
||||
#define CAM_PIN_D4 36 |
||||
#define CAM_PIN_D3 19 |
||||
#define CAM_PIN_D2 18 |
||||
#define CAM_PIN_D1 5 |
||||
#define CAM_PIN_D0 4 |
||||
#define CAM_PIN_VSYNC 25 |
||||
#define CAM_PIN_HREF 23 |
||||
#define CAM_PIN_PCLK 22 |
||||
|
||||
#endif |
||||
|
||||
// ESP32Cam (AiThinker) PIN Map
|
||||
#ifdef BOARD_ESP32CAM_AITHINKER |
||||
|
||||
#define CAM_PIN_PWDN 32 |
||||
#define CAM_PIN_RESET -1 //software reset will be performed
|
||||
#define CAM_PIN_XCLK 0 |
||||
#define CAM_PIN_SIOD 26 |
||||
#define CAM_PIN_SIOC 27 |
||||
|
||||
#define CAM_PIN_D7 35 |
||||
#define CAM_PIN_D6 34 |
||||
#define CAM_PIN_D5 39 |
||||
#define CAM_PIN_D4 36 |
||||
#define CAM_PIN_D3 21 |
||||
#define CAM_PIN_D2 19 |
||||
#define CAM_PIN_D1 18 |
||||
#define CAM_PIN_D0 5 |
||||
#define CAM_PIN_VSYNC 25 |
||||
#define CAM_PIN_HREF 23 |
||||
#define CAM_PIN_PCLK 22 |
||||
|
||||
#endif |
||||
|
||||
static const char *TAG = "example:take_picture"; |
||||
|
||||
static camera_config_t camera_config = { |
||||
.pin_pwdn = CAM_PIN_PWDN, |
||||
.pin_reset = CAM_PIN_RESET, |
||||
.pin_xclk = CAM_PIN_XCLK, |
||||
.pin_sscb_sda = CAM_PIN_SIOD, |
||||
.pin_sscb_scl = CAM_PIN_SIOC, |
||||
|
||||
.pin_d7 = CAM_PIN_D7, |
||||
.pin_d6 = CAM_PIN_D6, |
||||
.pin_d5 = CAM_PIN_D5, |
||||
.pin_d4 = CAM_PIN_D4, |
||||
.pin_d3 = CAM_PIN_D3, |
||||
.pin_d2 = CAM_PIN_D2, |
||||
.pin_d1 = CAM_PIN_D1, |
||||
.pin_d0 = CAM_PIN_D0, |
||||
.pin_vsync = CAM_PIN_VSYNC, |
||||
.pin_href = CAM_PIN_HREF, |
||||
.pin_pclk = CAM_PIN_PCLK, |
||||
|
||||
//XCLK 20MHz or 10MHz for OV2640 double FPS (Experimental)
|
||||
.xclk_freq_hz = 20000000, |
||||
.ledc_timer = LEDC_TIMER_0, |
||||
.ledc_channel = LEDC_CHANNEL_0, |
||||
|
||||
.pixel_format = PIXFORMAT_JPEG, //YUV422,GRAYSCALE,RGB565,JPEG
|
||||
.frame_size = FRAMESIZE_VGA, //QQVGA-UXGA Do not use sizes above QVGA when not JPEG
|
||||
|
||||
.jpeg_quality = 12, //0-63 lower number means higher quality
|
||||
.fb_count = 1 //if more than one, i2s runs in continuous mode. Use only with JPEG
|
||||
}; |
||||
|
||||
static esp_err_t init_camera() |
||||
{ |
||||
//initialize the camera
|
||||
esp_err_t err = esp_camera_init(&camera_config); |
||||
if (err != ESP_OK) |
||||
{ |
||||
ESP_LOGE(TAG, "Camera Init Failed"); |
||||
return err; |
||||
} |
||||
|
||||
return ESP_OK; |
||||
} |
||||
|
||||
void app_main() |
||||
{ |
||||
init_camera(); |
||||
|
||||
while (1) |
||||
{ |
||||
ESP_LOGI(TAG, "Taking picture..."); |
||||
camera_fb_t *pic = esp_camera_fb_get(); |
||||
|
||||
// use pic->buf to access the image
|
||||
ESP_LOGI(TAG, "Picture taken! Its size was: %zu bytes", pic->len); |
||||
|
||||
vTaskDelay(5000 / portTICK_RATE_MS); |
||||
} |
||||
} |
Loading…
Reference in new issue