|
| 1 | +#include "esp_camera.h" |
| 2 | + |
| 3 | +//WROVER-KIT PIN Map |
| 4 | +#define CAM_PIN_PWDN 32 |
| 5 | +#define CAM_PIN_RESET -1 |
| 6 | +#define CAM_PIN_XCLK 0 |
| 7 | +#define CAM_PIN_SIOD 26 |
| 8 | +#define CAM_PIN_SIOC 27 |
| 9 | + |
| 10 | +#define CAM_PIN_D7 35 |
| 11 | +#define CAM_PIN_D6 34 |
| 12 | +#define CAM_PIN_D5 39 |
| 13 | +#define CAM_PIN_D4 36 |
| 14 | +#define CAM_PIN_D3 21 |
| 15 | +#define CAM_PIN_D2 19 |
| 16 | +#define CAM_PIN_D1 18 |
| 17 | +#define CAM_PIN_D0 5 |
| 18 | +#define CAM_PIN_VSYNC 25 |
| 19 | +#define CAM_PIN_HREF 23 |
| 20 | +#define CAM_PIN_PCLK 22 |
| 21 | + |
| 22 | +static camera_config_t camera_config = { |
| 23 | + .pin_pwdn = CAM_PIN_PWDN, |
| 24 | + .pin_reset = CAM_PIN_RESET, |
| 25 | + .pin_xclk = CAM_PIN_XCLK, |
| 26 | + .pin_sscb_sda = CAM_PIN_SIOD, |
| 27 | + .pin_sscb_scl = CAM_PIN_SIOC, |
| 28 | + |
| 29 | + .pin_d7 = CAM_PIN_D7, |
| 30 | + .pin_d6 = CAM_PIN_D6, |
| 31 | + .pin_d5 = CAM_PIN_D5, |
| 32 | + .pin_d4 = CAM_PIN_D4, |
| 33 | + .pin_d3 = CAM_PIN_D3, |
| 34 | + .pin_d2 = CAM_PIN_D2, |
| 35 | + .pin_d1 = CAM_PIN_D1, |
| 36 | + .pin_d0 = CAM_PIN_D0, |
| 37 | + .pin_vsync = CAM_PIN_VSYNC, |
| 38 | + .pin_href = CAM_PIN_HREF, |
| 39 | + .pin_pclk = CAM_PIN_PCLK, |
| 40 | + |
| 41 | + //XCLK 20MHz or 10MHz for OV2640 double FPS (Experimental) |
| 42 | + .xclk_freq_hz = 20000000, |
| 43 | + .ledc_timer = LEDC_TIMER_0, |
| 44 | + .ledc_channel = LEDC_CHANNEL_0, |
| 45 | + |
| 46 | + .pixel_format = PIXFORMAT_RGB565,//YUV422,GRAYSCALE,RGB565,JPEG |
| 47 | + .frame_size = FRAMESIZE_QQVGA,//QQVGA-QXGA Do not use sizes above QVGA when not JPEG |
| 48 | + |
| 49 | + .jpeg_quality = 12, //0-63 lower number means higher quality |
| 50 | + .fb_count = 2 //if more than one, i2s runs in continuous mode. Use only with JPEG |
| 51 | +}; |
| 52 | + |
| 53 | +bool cameraInit() |
| 54 | +{ |
| 55 | + |
| 56 | + int tries = 0; |
| 57 | + esp_err_t err; |
| 58 | + do |
| 59 | + { |
| 60 | + //power up the camera if PWDN pin is defined |
| 61 | + if(CAM_PIN_PWDN != -1){ |
| 62 | + pinMode(CAM_PIN_PWDN, OUTPUT); |
| 63 | + digitalWrite(CAM_PIN_PWDN, HIGH); |
| 64 | + delay(500); |
| 65 | + digitalWrite(CAM_PIN_PWDN, LOW); |
| 66 | + delay(500); |
| 67 | + } |
| 68 | + |
| 69 | + //initialize the camera |
| 70 | + err = esp_camera_init(&camera_config); |
| 71 | + if (err != ESP_OK) { |
| 72 | + Serial.println("Camera Init Failed."); |
| 73 | + delay(500); |
| 74 | + } |
| 75 | + tries++; |
| 76 | + } |
| 77 | + while(err != ESP_OK && tries < 3); |
| 78 | + if(err == ESP_OK) |
| 79 | + Serial.println("Camera Init Success"); |
| 80 | + else |
| 81 | + { |
| 82 | + Serial.println("Restarting..."); |
| 83 | + ESP.restart(); |
| 84 | + } |
| 85 | + return err; |
| 86 | +} |
| 87 | + |
| 88 | +void setCameraParams() |
| 89 | +{ |
| 90 | + sensor_t *sensor = esp_camera_sensor_get(); |
| 91 | + sensor->set_brightness(sensor, -2); |
| 92 | + sensor->set_contrast(sensor, 2); |
| 93 | + sensor->set_saturation(sensor, 0); |
| 94 | + |
| 95 | + //0: auto, 1: sun, 2: cloud, 3: indoors |
| 96 | + sensor->set_wb_mode(sensor, 0); |
| 97 | + |
| 98 | + //sensor->set_exposure_ctrl(sensor, 1); |
| 99 | + //sensor->set_aec_value(sensor, -2); |
| 100 | + //sensor->set_ae_level(sensor, 100); |
| 101 | + //sensor->set_gain_ctrl(sensor, 100); |
| 102 | + |
| 103 | + |
| 104 | +/* |
| 105 | +* some other prameters.. good luck |
| 106 | + int (*set_sharpness) (sensor_t *sensor, int level); |
| 107 | + int (*set_denoise) (sensor_t *sensor, int level); |
| 108 | + int (*set_gainceiling) (sensor_t *sensor, gainceiling_t gainceiling); |
| 109 | + int (*set_quality) (sensor_t *sensor, int quality); |
| 110 | + int (*set_colorbar) (sensor_t *sensor, int enable); |
| 111 | + int (*set_whitebal) (sensor_t *sensor, int enable); |
| 112 | + int (*set_gain_ctrl) (sensor_t *sensor, int enable); |
| 113 | + int (*set_exposure_ctrl) (sensor_t *sensor, int enable); |
| 114 | + int (*set_hmirror) (sensor_t *sensor, int enable); |
| 115 | + int (*set_vflip) (sensor_t *sensor, int enable); |
| 116 | +
|
| 117 | + int (*set_aec2) (sensor_t *sensor, int enable); |
| 118 | + int (*set_awb_gain) (sensor_t *sensor, int enable); |
| 119 | + int (*set_agc_gain) (sensor_t *sensor, int gain); |
| 120 | + int (*set_aec_value) (sensor_t *sensor, int gain); |
| 121 | +
|
| 122 | + int (*set_special_effect) (sensor_t *sensor, int effect); |
| 123 | + int (*set_wb_mode) (sensor_t *sensor, int mode); |
| 124 | + int (*set_ae_level) (sensor_t *sensor, int level); |
| 125 | +
|
| 126 | + int (*set_dcw) (sensor_t *sensor, int enable); |
| 127 | + int (*set_bpc) (sensor_t *sensor, int enable); |
| 128 | + int (*set_wpc) (sensor_t *sensor, int enable); |
| 129 | +
|
| 130 | + int (*set_raw_gma) (sensor_t *sensor, int enable); |
| 131 | + int (*set_lenc) (sensor_t *sensor, int enable); */ |
| 132 | +} |
0 commit comments