ESP32-S3 Camera Module Selection

Pre-route check passed, so I’m starting the autorouter now with the single-layer stackup in place. If the router cannot complete every connection on one copper layer, I’ll report the specific remaining airwires rather than adding vias.
I set the PCB up as a single-copper-layer CNC-friendly board and resized it to 50 mm × 80 mm with wider margins/clearance. I also placed the parts as requested: XIAO on the right edge, TFT header on the top edge, buttons vertically on the right, and MicroSD near the XIAO.
Open items:
  • Autorouting could not continue because the account is out of ACUs.
  • The board still has unrouted airwires because routing did not complete.
  • After adding ACUs, the next step is to rerun routing and then DRC/airwire checks.
Suggested next steps:
  1. Add ACUs to continue AI routing.
  2. Ask me to rerun the autorouter for the 1-layer CNC board.
  3. If 1-layer routing cannot complete, I’ll identify the exact unrouted nets and propose CNC-friendly jumper-wire options without adding vias.
Rerun autorouter
Find jumper options
Run layout checks
List remaining steps

Refine this doc
Ask about this doc
Firmware Starter
Target board: Seeed Studio XIAO ESP32S3 Sense.
Pin map

Cpp


#define TFT_SCK_PIN 7
#define TFT_SDA_PIN 6
#define TFT_RES_PIN 5
#define TFT_DC_PIN 4
#define TFT_CS_PIN 3
#define TFT_BLK_PIN -1 // intentionally unconnected

#define BTN_CAPTURE_PIN 1
#define BTN_ISO_PIN 2
#define BTN_MODE_PIN 43

#define SD_SCK_PIN 7
#define SD_MOSI_PIN 9
#define SD_MISO_PIN 8
#define SD_CS_PIN 44
Arduino starter

Cpp


#include <Arduino.h>
#include <SPI.h>
#include <SD.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7789.h>

#define TFT_SCK_PIN 7
#define TFT_SDA_PIN 6
#define TFT_RES_PIN 5
#define TFT_DC_PIN 4
#define TFT_CS_PIN 3
#define TFT_BLK_PIN -1

#define BTN_CAPTURE_PIN 1
#define BTN_ISO_PIN 2
#define BTN_MODE_PIN 43

#define SD_SCK_PIN 7
#define SD_MOSI_PIN 9
#define SD_MISO_PIN 8
#define SD_CS_PIN 44

SPIClass sdSPI(FSPI);
Adafruit_ST7789 tft(TFT_CS_PIN, TFT_DC_PIN, TFT_SDA_PIN, TFT_SCK_PIN, TFT_RES_PIN);

void setup() {
  Serial.begin(115200);
  delay(500);

  pinMode(BTN_CAPTURE_PIN, INPUT_PULLUP);
  pinMode(BTN_ISO_PIN, INPUT_PULLUP);
  pinMode(BTN_MODE_PIN, INPUT_PULLUP);

  tft.init(240, 240);
  tft.setRotation(0);
  tft.fillScreen(ST77XX_BLACK);
  tft.setTextColor(ST77XX_WHITE);
  tft.setCursor(10, 10);
  tft.println("XIAO ESP32S3 Sense");

  sdSPI.begin(SD_SCK_PIN, SD_MISO_PIN, SD_MOSI_PIN, SD_CS_PIN);
  if (!SD.begin(SD_CS_PIN, sdSPI)) {
    Serial.println("SD init failed");
  } else {
    Serial.println("SD init OK");
  }
}

void loop() {
  if (!digitalRead(BTN_CAPTURE_PIN)) Serial.println("Capture pressed");
  if (!digitalRead(BTN_ISO_PIN)) Serial.println("ISO pressed");
  if (!digitalRead(BTN_MODE_PIN)) Serial.println("Mode pressed");
  delay(100);
}
platformio.ini

Ini


[env:seeed_xiao_esp32s3]
platform = espressif32
board = seeed_xiao_esp32s3
framework = arduino
monitor_speed = 115200
lib_deps =
  adafruit/Adafruit GFX Library
  adafruit/Adafruit ST7735 and ST7789 Library
  • Pin map

  • Arduino starter

  • platformio.ini

Documents

  • Firmware Starter

  • Board Bring-Up Plan

Assets

No assets added.

XIAO ESP32S3 Camera Display

XIAO ESP32S3 Camera Display thumbnail
ESP32-S3 Sense camera board with ST7789 SPI display, MicroSD storage, and three right-edge tactile buttons for capture and mode controls.

Properties

Properties describe core aspects of the project.

Pricing & Availability

Distributor

Qty 1

Arrow

$13.25

Digi-Key

$15.38

HQonline

$1.40

LCSC

$40.03

Mouser

$16.84

Verical

$13.95–$17.25

Controls