ESP32-S3 Camera Module Selection
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
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); }
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