diff --git a/configs/sdkconfig_diycam_esp32s3devkitc1.defaults b/configs/sdkconfig_diycam_esp32s3devkitc1.defaults new file mode 100644 index 00000000..3cb84aa6 --- /dev/null +++ b/configs/sdkconfig_diycam_esp32s3devkitc1.defaults @@ -0,0 +1,154 @@ +# diycam esp32s3devkitc1 +CONFIG_APP_REPRODUCIBLE_BUILD=y +CONFIG_BF20A6_SUPPORT=n +CONFIG_BF3005_SUPPORT=n +CONFIG_BOARD_TYPE_CUSTOM=y +CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y +CONFIG_BOOTLOADER_LOG_LEVEL_INFO=y +CONFIG_BOOTLOADER_WDT_ENABLE=n +CONFIG_BT_ENABLED=y +CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=517 +CONFIG_BT_NIMBLE_ENABLED=y +CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=11 +CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=5632 +CONFIG_BT_NIMBLE_LOG_LEVEL_NONE=y +CONFIG_BT_NIMBLE_MAX_CONNECTIONS=1 +CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL=y +CONFIG_BT_NIMBLE_NVS_PERSIST=y +CONFIG_BT_NIMBLE_ROLE_BROADCASTER=n +CONFIG_BT_NIMBLE_ROLE_CENTRAL=n +CONFIG_BT_NIMBLE_ROLE_OBSERVER=n +CONFIG_BT_NIMBLE_SM_LEGACY=n +CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="j" +CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100 +CONFIG_BUTTON_LONG_PRESS_TIME_MS=500 +CONFIG_CAMERA_D0=4 +CONFIG_CAMERA_D1=5 +CONFIG_CAMERA_D2=6 +CONFIG_CAMERA_D3=7 +CONFIG_CAMERA_D4=8 +CONFIG_CAMERA_D5=9 +CONFIG_CAMERA_D6=16 +CONFIG_CAMERA_D7=17 +CONFIG_CAMERA_FRONT_FACING=n +CONFIG_CAMERA_HREF=39 +CONFIG_CAMERA_PCLK=21 +CONFIG_CAMERA_PWDN=-1 +CONFIG_CAMERA_RESET=-1 +CONFIG_CAMERA_ROTATE_180=n +CONFIG_CAMERA_ROTATE_270=n +CONFIG_CAMERA_ROTATE_90=y +CONFIG_CAMERA_SCL=41 +CONFIG_CAMERA_SDA=40 +CONFIG_CAMERA_VSYNC=38 +CONFIG_CAMERA_XCLK=-1 +CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y +CONFIG_COMPILER_OPTIMIZATION_SIZE=y +CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y +CONFIG_COMPILER_WARN_WRITE_STRINGS=y +CONFIG_DCS_ADDRESS_MODE_BGR_SELECTED=n +CONFIG_DCS_ADDRESS_MODE_MIRROR_X_SELECTED=y +CONFIG_DCS_ADDRESS_MODE_MIRROR_Y_SELECTED=n +CONFIG_DCS_ADDRESS_MODE_SWAP_XY_SELECTED=y +CONFIG_DEBUG_MODE=y +CONFIG_DISPLAY_HEIGHT=135 +CONFIG_DISPLAY_INVERT=y +CONFIG_DISPLAY_OFFSET_X=40 +CONFIG_DISPLAY_OFFSET_Y=53 +CONFIG_DISPLAY_PIN_BL=15 +CONFIG_DISPLAY_PIN_CLK=12 +CONFIG_DISPLAY_PIN_CS=10 +CONFIG_DISPLAY_PIN_DC=13 +CONFIG_DISPLAY_PIN_MISO=-1 +CONFIG_DISPLAY_PIN_MOSI=11 +CONFIG_DISPLAY_PIN_RST=14 +CONFIG_DISPLAY_SPI_CLOCK=32000000 +CONFIG_DISPLAY_SPI_HOST=1 +CONFIG_DISPLAY_WIDTH=240 +CONFIG_ESP_CONSOLE_UART_DEFAULT=y +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y +CONFIG_ESP_ERR_TO_NAME_LOOKUP=n +CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288 +CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=n +CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=n +CONFIG_ESP_SYSTEM_BBPLL_RECALIB=n +CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT=y +CONFIG_ESP_TASK_WDT_EN=n +CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n +CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n +CONFIG_ESP_WIFI_IRAM_OPT=n +CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=n +CONFIG_ESP_WIFI_NVS_ENABLED=n +CONFIG_ESP_WIFI_RX_IRAM_OPT=n +CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y +CONFIG_FATFS_LFN_HEAP=y +CONFIG_FATFS_VFS_FSTAT_BLKSIZE=4096 +CONFIG_FATFS_VOLUME_COUNT=1 +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3 +CONFIG_GC0308_SUPPORT=n +CONFIG_GC032A_SUPPORT=n +CONFIG_GC2145_SUPPORT=n +CONFIG_HAS_CAMERA=y +CONFIG_I2C_SCL=-1 +CONFIG_I2C_SDA=-1 +CONFIG_IDF_TARGET="esp32s3" +CONFIG_INPUT_BTN_A=1 +CONFIG_INPUT_BTN_B=42 +CONFIG_INPUT_FRONT_SW=2 +CONFIG_INPUT_INVERT_WHEEL=n +CONFIG_INPUT_ONE_BUTTON_MODE=n +CONFIG_INPUT_WHEEL_A=-1 +CONFIG_INPUT_WHEEL_B=-1 +CONFIG_INPUT_WHEEL_SW=-1 +CONFIG_LCD_BACKLIGHT_PIN_NUM=-1 +CONFIG_LCD_CMD_BITS=-1 +CONFIG_LCD_PARAM_BITS=-1 +CONFIG_LCD_PIXEL_CLOCK_HZ=-1 +CONFIG_LCD_POWER_PIN_NUM=-1 +CONFIG_LCD_RD_PIN_NUM=-1 +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n +CONFIG_NEWLIB_NANO_FORMAT=y +CONFIG_NT99141_SUPPORT=n +CONFIG_OV2640_SUPPORT=y +CONFIG_OV3660_SUPPORT=n +CONFIG_OV5640_SUPPORT=n +CONFIG_OV7670_SUPPORT=n +CONFIG_OV7725_SUPPORT=n +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitionss3.csv" +CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y +CONFIG_PIN_NUM_CS=-1 +CONFIG_PIN_NUM_DATA0=-1 +CONFIG_PIN_NUM_DATA1=-1 +CONFIG_PIN_NUM_DATA2=-1 +CONFIG_PIN_NUM_DATA3=-1 +CONFIG_PIN_NUM_DATA4=-1 +CONFIG_PIN_NUM_DATA5=-1 +CONFIG_PIN_NUM_DATA6=-1 +CONFIG_PIN_NUM_DATA7=-1 +CONFIG_PIN_NUM_DC=-1 +CONFIG_PIN_NUM_RST=-1 +CONFIG_PIN_NUM_WR=-1 +CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=n +CONFIG_PSRAM_DATA_ALIGNMENT=-1 +CONFIG_SC030IOT_SUPPORT=n +CONFIG_SCCB_CLK_FREQ=200000 +CONFIG_SPI_FLASH_VERIFY_WRITE=y +CONFIG_SPI_MASTER_ISR_IN_IRAM=n +CONFIG_SPI_SLAVE_ISR_IN_IRAM=n +CONFIG_SPIRAM=y +CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y +CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y +CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=256 +CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=65536 +CONFIG_SPIRAM_MEMTEST=n +CONFIG_SPIRAM_MODE_OCT=y +CONFIG_SPIRAM_RODATA=y +CONFIG_SPIRAM_SPEED_80M=y +CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP=y +CONFIG_TINYUSB_CDC_ENABLED=y +CONFIG_TINYUSB_CDC_RX_BUFSIZE=64 +CONFIG_UI_WRAP_ALL_MENUS=y diff --git a/diy/README.md b/diy/README.md index 9966917e..ad1041f0 100644 --- a/diy/README.md +++ b/diy/README.md @@ -119,6 +119,19 @@ There are a number of hardware devices that can run Jade firmware with minimal c * [3d printed case, example STL files available here](https://www.printables.com/model/493485-cases-for-diy-jade-based-on-esp32-cam) * [Assembly Guide & Hardware Notes](./esp32-cam/) +### ESP32-S3-DevKitC-1 + ST7789 1.14" LCD + OV2640 Camera +![](img/esp32s3-devkitc1.jpg) +* Costs ~$10-15 USD for the dev board + ~$5-10 USD for display and camera modules +* Three button interface (left / select / right) +* USB VendorID:303a ProductID:1001 (Different to retail Jade) +* Typically supports Secure Boot V2 +* Hardware Required (No Soldering Required) + * [ESP32-S3-DevKitC-1](https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s3/esp32-s3-devkitc-1/index.html) (N8R8 variant, 8MB flash + 8MB Octal PSRAM) + * ST7789 1.14" 135*240 SPI LCD module + * OV2640 camera module (STM32-compatible red module with onboard oscillator) + * Dupont wires +* [Assembly Guide & Hardware Notes](./esp32s3-devkitc1/) + ### Waveshare S3 Touch LCD 2 ![](img/ws-touch-lcd2.jpg) * Costs ~$20 USD from manufacturer diff --git a/diy/esp32s3-devkitc1/README.md b/diy/esp32s3-devkitc1/README.md new file mode 100644 index 00000000..4d543fb5 --- /dev/null +++ b/diy/esp32s3-devkitc1/README.md @@ -0,0 +1,50 @@ +# ESP32-S3-DevKitC-1 Assembly + +**Note on the OV2640 Camera Module** + +This build uses the STM32-compatible OV2640 red module (common on AliExpress). Unlike other OV2640 modules, this one has an **onboard 24 MHz oscillator**, so the XCLK pin is not connected. The pixel clock output on this module is labelled **DCLK** (not PCLK), connect it to GPIO 21. + +## Power Pins +| Function | Pin Number (On ESP32-S3) | +| --- | --- | +| VCC (Display, Camera) | 3.3V | +| GND (Display, Camera, Buttons) | GND | + +## Display Pins (ST7789 1.14" SPI) +| Function Pin (On Display) | Pin Number (On ESP32-S3) | +| --- | --- | +| SDA (MOSI) | 11 | +| SCL (CLK) | 12 | +| CS | 10 | +| DC | 13 | +| RES (RST) | 14 | +| BL (Backlight) | 15 | + +## Camera Pins (OV2640) +| Function Pin (On Camera) | Pin Number (On ESP32-S3) | +| --- | --- | +| D0 | 4 | +| D1 | 5 | +| D2 | 6 | +| D3 | 7 | +| D4 | 8 | +| D5 | 9 | +| D6 | 16 | +| D7 | 17 | +| XCLK | Not Connected (onboard oscillator) | +| DCLK (PCLK) | 21 | +| VSYNC | 38 | +| HREF | 39 | +| SDA (SCCB) | 40 | +| SCL (SCCB) | 41 | +| PWDN | GND (tie directly) | +| RESET | 3.3V (tie directly) | + +## Button Pins +Wire each button with one leg to the Pin Number (On ESP32-S3) and the other to GND. Internal pull-ups are enabled, no external resistors needed. + +| Button | Pin Number (On ESP32-S3) | Function | +| --- | --- | --- | +| LEFT | 1 | Navigate left / back | +| SELECT | 2 | Confirm / select | +| RIGHT | 42 | Navigate right | diff --git a/diy/img/esp32s3-devkitc1.jpg b/diy/img/esp32s3-devkitc1.jpg new file mode 100644 index 00000000..c2640f61 Binary files /dev/null and b/diy/img/esp32s3-devkitc1.jpg differ