Skip to content

Add Freenove FNK0104B (2.8" ILI9341 ESP32-S3) board - #2629

Open
ajax80 wants to merge 2 commits into
BruceDevices:mainfrom
ajax80:add-freenove-fnk0104ab-board
Open

Add Freenove FNK0104B (2.8" ILI9341 ESP32-S3) board#2629
ajax80 wants to merge 2 commits into
BruceDevices:mainfrom
ajax80:add-freenove-fnk0104ab-board

Conversation

@ajax80

@ajax80 ajax80 commented Jul 10, 2026

Copy link
Copy Markdown

Add Freenove FNK0104B (2.8" ILI9341 ESP32-S3)

Adds board support for the Freenove FNK0104B, the 2.8" ILI9341 + FT6336 capacitive-touch member of Freenove's ESP32-S3 Display family (Freenove_ESP32_S3_Display). It's a popular, cheap board with no Bruce support today — flashing a CYD build fails because it's an ESP32-S3, not the ESP32 the CYDs use.

Why it's small

It's the same reference design as the existing ES3C28P board — the display and touch pins are identical. So this is derived from ES3C28P with three corrections for the Freenove variant:

ES3C28P FNK0104B
WS2812 RGB LED GPIO42 GPIO40
Battery ADC GPIO9 GPIO8
Panel colour order (default RGB) BGR (per Freenove's official TFT_eSPI setup)

Internal ES3C28P_* constants were renamed to FNK0104AB_* and the identity macro set to FREENOVE_FNK0104AB. Added to platformio.ini's board list and the parallel build matrix so it's built/flashable like the others.

Testing

  • Bench-tested on real hardware (a physical Freenove FNK0104B): builds clean, boots, 240×320 display and FT6336 capacitive touch confirmed working, colours correct with BGR.
  • ⚠️ RGB LED (GPIO40) and battery ADC (GPIO8) are taken from Freenove's own source/tutorials, not bench-verified by me.
  • Scope: the 2.8" "B" variant only. The 3.5"/4.0" siblings (FNK0104N/S) use ST7796/ST7789 and would be separate boards.

Notes

  • I added it to the buil_parallel.yml matrix so it produces a web-flashable release like other boards — happy to drop that if you'd rather gate release inclusion.
  • Board files follow the ES3C28P layout (.ini, interface.cpp, pins_arduino.h, partitions_16Mb.csv, _boards_json/*.json with variant: pinouts).

🤖 Generated with Claude Code

ajax80 and others added 2 commits July 10, 2026 16:57
The Freenove FNK0104B is the 2.8" ILI9341 + FT6336 capacitive-touch
member of Freenove's ESP32-S3 Display family. It is the same reference
design as the existing ES3C28P board (identical display and touch pins),
so this board is derived from ES3C28P with three corrections for the
Freenove variant:

- WS2812 RGB LED on GPIO40 (ES3C28P: 42)
- Battery ADC on GPIO8 (ES3C28P: 9)
- TFT_RGB_ORDER = TFT_BGR (per Freenove's official TFT_eSPI setup, so
  red/blue are not swapped)

Internal ES3C28P_* constants renamed to FNK0104AB_* and the board
identity macro set accordingly. Added to platformio.ini's board list and
the parallel build matrix.

Tested on hardware (Freenove FNK0104B): builds, boots, 240x320 display
and FT6336 capacitive touch confirmed working. RGB LED and battery ADC
pins are taken from Freenove's own source, not bench-verified. Covers the
2.8" "B" variant only (the 3.5"/4.0" siblings use ST7796/ST7789).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Documents the board's broken-out headers (Expanded IO GPIO 2/3/14/21,
UART 43/44, IIC 16/15), on-board peripherals, and ready-to-use CC1101 /
nRF24 wiring on the shared SPI bus (including the GDO0-vs-MISO pin
collision fix and the 6-free-GPIO budget for running both radios).

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants