From d55a97a3a7e3a56ac83e6fca7bcfc2e563e368df Mon Sep 17 00:00:00 2001 From: Andrew Yong Date: Fri, 7 Mar 2025 11:56:07 +0800 Subject: [PATCH] Add support for M5Stack AtomS3R-CAM Signed-off-by: Andrew Yong --- boards/esp32cam_m5stack_atoms3r.json | 82 ++++++++++++++++++++++++++++ platformio.ini | 3 + src/main.cpp | 5 ++ 3 files changed, 90 insertions(+) create mode 100644 boards/esp32cam_m5stack_atoms3r.json diff --git a/boards/esp32cam_m5stack_atoms3r.json b/boards/esp32cam_m5stack_atoms3r.json new file mode 100644 index 0000000..8901e77 --- /dev/null +++ b/boards/esp32cam_m5stack_atoms3r.json @@ -0,0 +1,82 @@ +{ + "build": { + "arduino":{ + "ldscript": "esp32s3_out.ld", + "partitions": "default_8MB.csv", + "memory_type": "qio_opi" + }, + "core": "esp32", + "extra_flags": [ + "'-D ESP32CAM_M5STACK_ATOMS3R'", + "'-D BOARD_HAS_PSRAM'", + "'-D ARDUINO_USB_MODE=1'", + "'-D ARDUINO_USB_CDC_ON_BOOT=1'", + "'-D ARDUINO_RUNNING_CORE=1'", + "'-D ARDUINO_EVENT_RUNNING_CORE=1'", + "'-D USER_LED_GPIO=GPIO_NUM_NC'", + "'-D USER_LED_ON_LEVEL=GPIO_NUM_NC'", + "'-D CAMERA_POWER_GPIO=18'", + "'-D CAMERA_POWER_ON_LEVEL=LOW'", + "'-D CAMERA_CONFIG_PIN_PWDN=GPIO_NUM_NC'", + "'-D CAMERA_CONFIG_PIN_RESET=GPIO_NUM_NC'", + "'-D CAMERA_CONFIG_PIN_XCLK=21'", + "'-D CAMERA_CONFIG_PIN_SCCB_SDA=12'", + "'-D CAMERA_CONFIG_PIN_SCCB_SCL=9'", + "'-D CAMERA_CONFIG_PIN_Y9=13'", + "'-D CAMERA_CONFIG_PIN_Y8=11'", + "'-D CAMERA_CONFIG_PIN_Y7=17'", + "'-D CAMERA_CONFIG_PIN_Y6=4'", + "'-D CAMERA_CONFIG_PIN_Y5=48'", + "'-D CAMERA_CONFIG_PIN_Y4=46'", + "'-D CAMERA_CONFIG_PIN_Y3=42'", + "'-D CAMERA_CONFIG_PIN_Y2=3'", + "'-D CAMERA_CONFIG_PIN_VSYNC=10'", + "'-D CAMERA_CONFIG_PIN_HREF=14'", + "'-D CAMERA_CONFIG_PIN_PCLK=40'", + "'-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=2'", + "'-D GROVE_SCL=1'" + ], + "f_cpu": "240000000L", + "f_flash": "80000000L", + "flash_mode": "qio", + "hwids": [ + [ + "0x2886", + "0x0056" + ], + [ + "0x2886", + "0x8056" + ] + ], + "mcu": "esp32s3", + "variant": "esp32s3" + }, + "connectivity": [ + "bluetooth", + "wifi" + ], + "debug": { + "openocd_target": "esp32s3.cfg" + }, + "frameworks": [ + "arduino", + "espidf" + ], + "name": "M5STACK ATOMS3R", + "upload": { + "flash_size": "8MB", + "maximum_ram_size": 327680, + "maximum_size": 8388608, + "require_upload_port": true, + "speed": 460800 + }, + "url": "https://docs.m5stack.com/en/unit/esp32cam", + "vendor": "M5STACK" +} diff --git a/platformio.ini b/platformio.ini index 3f722ef..a1635ba 100644 --- a/platformio.ini +++ b/platformio.ini @@ -83,6 +83,9 @@ board = esp32cam_espressif_esp32s3_eye [env:esp32cam_freenove_wrover_kit] board = esp32cam_freenove_wrover_kit +[env:esp32cam_m5stack_atoms3r] +board = esp32cam_m5stack_atoms3r + [env:esp32cam_m5stack_camera_psram] board = esp32cam_m5stack_camera_psram diff --git a/src/main.cpp b/src/main.cpp index 8899780..2d205cd 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -316,6 +316,11 @@ void setup() // Disable brownout WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); +#ifdef CAMERA_POWER_GPIO + pinMode(CAMERA_POWER_GPIO, OUTPUT); + digitalWrite(CAMERA_POWER_GPIO, CAMERA_POWER_ON_LEVEL); +#endif + #ifdef USER_LED_GPIO pinMode(USER_LED_GPIO, OUTPUT); digitalWrite(USER_LED_GPIO, !USER_LED_ON_LEVEL);