ESP-EYE devkit board

I just got an ESP-EYE devkit. I would like to know which board I should use to be able to use the camera? Or which lib.


it looks like the board has just been added to the arduino-esp32 repo. Just have to be patient and wait a bit.

1 Like


You can use this board config:

board = esp32dev
platform = espressif32
framework = arduino
board_build.partitions = huge_app.csv

Arduino core for ESP32 comes with an example CameraWebServer.ino which you can use for basis. The board_build.partition setting is there because for this example, it would not otherwise fit.

Be prepared to be patient though, it’s quite a fiddly board unfortunately. I was able to get the example working for most parts but the face tracking always crashed my board. Based on what I read, the camera would work better on ESP32 WROVER based board with it’s added PSRAM. ESP-EYE is based on a regular WROOM module.

Then there’s Micro-RTSP library for example: GitHub - geeksville/Micro-RTSP: A RTSP video server intended for very small CPUs (ESP32 etc)
The developer has a popular example project TenDollarWebcam in another repository: GitHub - geeksville/TenDollarWebcam: A small example app for ESP32 + Micro-RTSP

I did not get that working though but I’m starting to think there might be some issue with my ESP-EYE as many people seem to have got it working, otherwise the repository would not have 137 stars.

I hope this helps. This is as far as I got with it the last time I had time to play around with it.

@Macfly I just noticed your two messages are talkng about two separate boards which got me confused. ESP-EYE is a development board made by Espressif themselves: ESP-EYE AI Board I Espressif
It seems to include the added PSRAM.

My comment was about ESP32-CAM which is a different board that’s commonly sold on AliExpress. When writing my previous comment I was in the belief it does not have PSRAM onboard but I was mistaken. It has an Ipus IPS6404LSQ 8MB PSRAM chip:

Enabling PSRAM with PlatformIO is documented here: Espressif 32 — PlatformIO latest documentation


platform = espressif32
framework = arduino
board = ...
build_flags =


platform = espressif32
framework = espidf
board = ...
build_flags =

I think I’m going to have to give the board another shot now. :slight_smile:

Commenting here to myself in case someone ends up reading these later. ESP32-CAM board works a lot better now with PSRAM enabled. So combining the two configs I’ve posted earlier it works fine!

We added board = esp32cam board profile with enabled PSRAM by default.

1 Like

I think there are two different boards with similar features. One is the ESP-CAM and the other is ESP-EYE:

Is there any experienced user that can add compatibility with the ESP-EYE? As is slightly different I’m not sure if it will work.

Thank you.

In addition, if you are using the MicroRTSP library GitHub - geeksville/Micro-RTSP: A RTSP video server intended for very small CPUs (ESP32 etc) with an ESP-EYE board you will need to create a new camera_config_t.

Edit the following files (Micro-RTSP\src\OV2640.h, Micro-RTSP\src\OV2640.cpp)

1: Micro-RTSP\src\OV2640.h
Line 11: add a new name to camera_config_t e.g.

extern camera_config_t esp_eye_config, esp32cam_config, esp32cam_aithinker_config, esp32cam_ttgo_t_config;

2: Micro-RTSP\src\OV2640.cpp
Create a new camera_config_t definition with the same name and adjust
the pin values to those outlined by expressif arduino-esp32/camera_pins.h at master · espressif/arduino-esp32 · GitHub e.g.

camera_config_t esp_eye_config {
    .pin_pwdn = -1,     //#define PWDN_GPIO_NUM    -1
    .pin_reset = -1,    //#define RESET_GPIO_NUM   -1
    .pin_xclk = 4,      //#define XCLK_GPIO_NUM    4
    .pin_sscb_sda = 18, //#define SIOD_GPIO_NUM    18
    .pin_sscb_scl = 23, //#define SIOC_GPIO_NUM    23
    .pin_d7 = 36,       //#define Y9_GPIO_NUM      36       
    .pin_d6 = 37,       //#define Y8_GPIO_NUM      37       
    .pin_d5 = 38,       //#define Y7_GPIO_NUM      38       
    .pin_d4 = 39,       //#define Y6_GPIO_NUM      39      
    .pin_d3 = 35,       //#define Y5_GPIO_NUM      35       
    .pin_d2 = 14,       //#define Y4_GPIO_NUM      14       
    .pin_d1 = 13,       //#define Y3_GPIO_NUM      13
    .pin_d0 = 34,       //#define Y2_GPIO_NUM      34
    .pin_vsync = 5,     //#define VSYNC_GPIO_NUM   5
    .pin_href = 27,     //#define HREF_GPIO_NUM    27
    .pin_pclk = 25,     //#define PCLK_GPIO_NUM    25
    .xclk_freq_hz = 20000000,
    .ledc_timer = LEDC_TIMER_0,
    .ledc_channel = LEDC_CHANNEL_0,
    .pixel_format = PIXFORMAT_JPEG,
    // .frame_size = FRAMESIZE_UXGA, // needs 234K of framebuffer space
    // .frame_size = FRAMESIZE_SXGA, // needs 160K for framebuffer
    // .frame_size = FRAMESIZE_XGA, // needs 96K or even smaller FRAMESIZE_SVGA - can work if using only 1 fb
    .frame_size = FRAMESIZE_SVGA,
    .jpeg_quality = 12,               //0-63 lower numbers are higher quality
    .fb_count = 2 // if more than one i2s runs in continous mode.  Use only with jpeg

NOTE: the pin names are not exactly 1:1 but easy enough to translate by looking at the other examples e.g. compare the camera config for aithinker in the OV2640.cpp vs expressif’s camera_pins.h