Skip to content

Add ESP32-2432S028 (Cheap Yellow Display) port - #11

Open
flycabl3guy wants to merge 1 commit into
jbohack:mainfrom
flycabl3guy:cyd-port
Open

Add ESP32-2432S028 (Cheap Yellow Display) port#11
flycabl3guy wants to merge 1 commit into
jbohack:mainfrom
flycabl3guy:cyd-port

Conversation

@flycabl3guy

Copy link
Copy Markdown

Adds a PlatformIO env (nyanbox-cyd) porting nyanBOX to the 2.8" Cheap Yellow Display (ESP32-2432S028): ILI9341 240x320 SPI TFT + XPT2046 resistive touch, classic ESP32-WROOM (4MB, no PSRAM). No buttons, no OLED — the UI and input are adapted while all 42 app modules build unchanged. Lives under cyd-port/; existing envs untouched. Build: pio run -e nyanbox-cyd.

Highlights

  • Radio pin remap (pindefs.h): the 3x nRF24 share the CYD's SD SPI bus; CE/CSN moved to free pins (R1 22/5, R2 27/17, R3 4/16) since the stock pins collide with the TFT. NeoPixel 14->0. Sacrifices microSD + RGB LED.
  • Display bridge: a CydU8g2 subclass keeps the 128x64 U8g2 mono buffer (zero I2C) and blits it letterboxed onto the ILI9341 via TFT_eSPI; a build-flag macro rewrites the SSD1306 type so the UI compiles unchanged.
  • Touch: bit-banged XPT2046 (software SPI, no contention with HSPI=TFT / VSPI=radios), pressure-gated (PENIRQ is unreliable on the CYD), with a 4-corner self-calibration stored to EEPROM.
  • Touch-native menus: tap a row to select, drag a left-edge slider to scroll, bottom BACK/LEVEL bar; apps auto-switch to a 5-zone on-screen D-pad.
  • Boot fixes: skip absent radios (no infinite hang) and drive the backlight (GPIO21).

Builds green, boots, display + touch verified on hardware. nRF24 wiring notes (per-module 3.3V off the 5V header) are in cyd-port/README.md. Opening this in case it's useful upstream or to others on CYD hardware — happy to adjust structure/placement.

PlatformIO env `nyanbox-cyd` porting nyanBOX to the 2.8" CYD (ILI9341 TFT +
XPT2046 resistive touch, classic ESP32-WROOM). All 42 app modules build unchanged.

- Radio CE/CSN remap for the CYD (share the SD SPI bus); NeoPixel 14->0
- U8g2 128x64 buffer -> ILI9341 bridge (letterboxed, zero I2C)
- Bit-bang XPT2046 touch, pressure-gated, 4-corner self-calibration to EEPROM
- Touch-native menus (tap-to-select, drag slider, BACK bar) + in-app 5-zone D-pad
- Boot fixes: skip absent radios (no hang), drive backlight GPIO21

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.

2 participants