Skip to content

Add LCDWiki 2.8" ESP32-S3 Display board (MARAUDER_LCDWIKI_28) - #1408

Open
pazyuk wants to merge 2 commits into
justcallmekoko:masterfrom
pazyuk:add-lcdwiki-2.8-esp32s3-board
Open

Add LCDWiki 2.8" ESP32-S3 Display board (MARAUDER_LCDWIKI_28)#1408
pazyuk wants to merge 2 commits into
justcallmekoko:masterfrom
pazyuk:add-lcdwiki-2.8-esp32s3-board

Conversation

@pazyuk

@pazyuk pazyuk commented Jul 28, 2026

Copy link
Copy Markdown

Summary

Adds a new board target, MARAUDER_LCDWIKI_28, for the LCDWiki 2.8" ESP32‑S3 Display
module — an inexpensive all‑in‑one ESP32‑S3 board with a 240×320 IPS panel and capacitive touch.

Hardware

MCU ESP32‑S3‑WROOM‑1 N16R8 (16 MB flash, 8 MB OPI PSRAM)
Display 2.8" 240×320 IPS, ILI9341V, SPI
Touch FT6336 capacitive, I²C 0x38 (uses the existing ft6336.h)
microSD SDIO‑wired slot, driven over SPI
Extras WS2812 RGB LED, native USB‑C, broken‑out UART + GPIO headers

What's included

  • configs.h – new MARAUDER_LCDWIKI_28 target: features, BOOT button, display block,
    touch / SD / GPS pins, menu geometry, and baked FT6336 touch‑calibration constants.
  • User_Setup_marauder_lcdwiki_28.h + User_Setup_Select.h – TFT_eSPI setup
    (ILI9341 driver, board pins, USE_FSPI_PORT, BGR).
  • Display.cpp – FT6336 touch‑coordinate calibration map, turn the on‑board WS2812 (IO42)
    off, and an optional 2‑point touch‑calibration screen (-DTOUCH_CAL) that prints fresh
    constants over serial.
  • SDInterface.cpp/.h – make the existing HAS_SEPARATE_SD flag actually select the
    dedicated‑SPI‑bus init, and hold the SDIO DAT1/DAT2 lines high while using the slot in SPI mode.
  • esp32_marauder.ino – when the console is USB‑CDC, don't block boot forever waiting for a
    host to open the port (so the board also runs off a powerbank/charger).
  • docs/ – board guide with the full pinout, free pins, build steps and gotchas.

Pinout

Display (SPI/FSPI): SCLK 12 · MOSI 11 · MISO 13 · CS 10 · DC 46 · RST –1 · BL 45
Touch (I²C): SDA 16 · SCL 15 · RST 18 · INT 17(nc)
microSD (SPI on the SDIO slot): SCK 38 · MOSI 40 · MISO 39 · CS 47 (DAT1 41 / DAT2 48 held high)
Other: WS2812 RGB → 42 · BOOT → 0 · USB D+/D‑ → 20/19
Broken out & free: IO2, IO3, IO14, IO21 · I²C header 16/15 (shared with touch) · UART header 44/43 (GPS here)

Tested on hardware

Verified on the actual module:

  • ✅ Display draws correctly (colours/orientation OK)
  • ✅ Capacitive touch — accurate after the baked calibration; menu navigation works
  • ✅ Backlight PWM brightness control (Device → Brightness / edge‑hold)
  • ✅ Wi‑Fi scan
  • ✅ microSD read/write (card must be FAT32)
  • ✅ Boots on a powerbank/charger (no USB host) as well as on a PC
  • ✅ On‑board RGB LED turned off

Notes for reviewers

  • The while(!Serial) change in esp32_marauder.ino is gated on ARDUINO_USB_CDC_ON_BOOT,
    so it only affects native‑USB‑CDC boards; UART‑console boards keep the original behaviour.
  • Adding HAS_SEPARATE_SD to the SDInterface guards makes that flag finally reach the
    dedicated‑SPI‑bus path. This also enables it for MARAUDER_CYD_3_5_INCH (which already
    defines HAS_SEPARATE_SD); it looked like the outer guard just missed it, but worth a check
    on that board.
  • The board is SDIO‑wired but works fine over SPI once the card is FAT32.

Build (Arduino IDE)

  1. Uncomment #define MARAUDER_LCDWIKI_28 in esp32_marauder/configs.h.
  2. Copy User_Setup_marauder_lcdwiki_28.h into the TFT_eSPI library and enable it in
    User_Setup_Select.h.
  3. Tools → ESP32S3 Dev Module, Flash 16MB, PSRAM OPI PSRAM, USB CDC On Boot: Enabled.

Aleksei Paziuk and others added 2 commits July 28, 2026 13:25
Adds support for the LCDWiki 2.8" ESP32-S3 Display
(https://www.lcdwiki.com/2.8inch_ESP32-S3_Display): ESP32-S3-WROOM-1
N16R8, 240x320 ILI9341V panel over SPI, FT6336 I2C capacitive touch,
SDIO-wired microSD driven over SPI, WS2812 RGB LED, and a GPS/UART header.

- configs.h: new MARAUDER_LCDWIKI_28 target — features, BOOT button,
  display block, touch/SD/GPS pins, menu geometry, and baked FT6336 touch
  calibration constants.
- User_Setup_marauder_lcdwiki_28.h + User_Setup_Select.h: TFT_eSPI setup
  (ILI9341 driver, board pins, FSPI port to keep the TFT off the SD bus,
  BGR order).
- Display.cpp: FT6336 touch coordinate calibration map, turn the onboard
  WS2812 (IO42) off, and an optional 2-point touch-calibration screen
  (compile with -DTOUCH_CAL) that prints fresh constants over serial.
- SDInterface: make the existing HAS_SEPARATE_SD flag actually select the
  dedicated-SPI-bus init (it was listed in the inner branch but missing
  from the outer guard; this also enables it for MARAUDER_CYD_3_5_INCH),
  and hold the SDIO DAT1/DAT2 lines high while using the slot in SPI mode.
- esp32_marauder.ino: when the console is USB CDC, don't block boot forever
  waiting for a host to open the port, so the board also runs off a
  powerbank/charger (and make CDC prints non-blocking).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Pinout (display / touch / SD / LED / USB), the broken-out UART and free
expansion pins, Arduino IDE build settings, and notes (FAT32 SD, PWM
backlight, FSPI/SD bus split, USB-CDC boot, touch re-calibration).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant