Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/buil_parallel.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ jobs:
- { env: "m5stack-cores3", family: "ESP32-S3",}
- { env: "m5stack-dinmeter", family: "ESP32-S3",}
- { env: "esp32-s3-devkitc-1", family: "ESP32-S3",}
- { env: "Freenove-FNK0104AB", family: "ESP32-S3",}
- { env: "esp32-c5", family: "ESP32-C5",}
- { env: "esp32-c5-tft", family: "ESP32-C5",}
- { env: "nm-cyd-c5", family: "ESP32-C5",}
Expand Down
51 changes: 51 additions & 0 deletions boards/Freenove-FNK0104AB/Freenove-FNK0104AB.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
; PlatformIO Project Configuration File
;
; Freenove-FNK0104AB - 2.8" IPS ESP32-S3 Display Module with Capacitive Touch
; Manufacturer: Freenove (FNK0104B) — ILI9341 2.8" variant of the ES3C28P design
;
; Hardware:
; - ESP32-S3R8 (8MB OPI PSRAM, 16MB QSPI Flash)
; - ILI9341V 240x320 IPS TFT (4-wire SPI)
; - FT6336G Capacitive Touch (I2C)
; - ES8311 Audio Codec + FM8002E Amplifier
; - MicroSD Card (SDIO mode)
; - WS2812 RGB LED
; - Battery ADC with voltage divider
; - BOOT button (GPIO0)

[env:Freenove-FNK0104AB]
board = Freenove-FNK0104AB
board_build.partitions = boards/Freenove-FNK0104AB/partitions_16Mb.csv
build_src_filter = ${env.build_src_filter} +<../boards/Freenove-FNK0104AB>
build_flags =
${env.build_flags}
-Iboards/Freenove-FNK0104AB
-Os
-DCORE_DEBUG_LEVEL=1
-DARDUINO_USB_CDC_ON_BOOT=1
-DDISABLE_ALL_LIBRARY_WARNINGS

; TFT SPI port for ESP32-S3
-DUSE_HSPI_PORT=1

; SD Card via SDIO (not SPI)
-DUSE_SD_MMC=1
-I$PROJECT_PACKAGES_DIR/framework-arduinoespressif32-libs/esp32s3/include/fatfs/src
-I$PROJECT_PACKAGES_DIR/framework-arduinoespressif32-libs/esp32s3/include/fatfs/vfs
-I$PROJECT_PACKAGES_DIR/framework-arduinoespressif32-libs/esp32s3/include/fatfs/diskio
-I$PROJECT_PACKAGES_DIR/framework-arduinoespressif32-libs/esp32s3/include/fatfs/**

; Touch screen
-DHAS_TOUCH=1

; Allow all GPIOs for IR/RF (user wires external modules)
-DALLOW_ALL_GPIO_FOR_IR_RF=1

; Redraw delay to improve menu navigation on this display
-DREDRAW_DELAY=1

lib_deps =
${env.lib_deps}

lib_ignore =
SD
49 changes: 49 additions & 0 deletions boards/Freenove-FNK0104AB/connections.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Freenove FNK0104B — Bruce wiring / pinouts

Freenove FNK0104B (2.8" ILI9341 ESP32-S3, FT6336 capacitive touch) — the same
hardware design as the ES3C28P. Display, touch, SD card, RGB LED and the BOOT
button are on-board and already configured; you only wire the optional add-on
radios/modules.

## On-board (already configured — for reference)

| Function | Pins |
| --- | --- |
| Display (ILI9341, SPI) | SCLK 12, MOSI 11, MISO 13, CS 10, DC 46, RST board-reset, BL 45 |
| Touch (FT6336, I2C @0x38) | SDA 16, SCL 15, INT 17, RST 18 |
| SD card | on-board slot (SDMMC) — just insert a microSD |
| RGB LED (WS2812) | 40 |
| Button (Select) | 0 (BOOT) |
| Battery ADC | 8 (x2 divider) |

## Free GPIOs (broken-out headers)

| Header | Free GPIOs | Notes |
| --- | --- | --- |
| Expanded IO | 2, 3, 14, 21 | + 3V3 + GND |
| UART | 43 (TX0), 44 (RX0) | free if the serial console is unused |
| IIC | 16 (SDA), 15 (SCL) | shared touch/audio bus — for I2C add-ons |

Power modules from the header **3V3** pin — CC1101 and nRF24 are 3.3V, not 5V-tolerant.

## Sub-GHz / 2.4 GHz radios (SPI, shared bus)

| Device | SCK | MOSI | MISO | CS | GDO0/CE |
| --- | :---: | :---: | :---: | :---: | :---: |
| CC1101 | 14 | 3 | 2 | 21 | 43 (GDO0) |
| nRF24 | 14 | 3 | 2 | 44 | 3V3 * (CE) |

- CC1101 and nRF24 share SCK/MOSI/MISO. Set pins in Bruce → Settings → Hardware/Pins.
- **CC1101 GDO0** default collides with MISO (GPIO 2) — set GDO0 to **43** in the UI.
- Both radios at once need 7 GPIOs but only 6 are free (4 Expanded IO + 2 UART).
Either tie nRF24 **CE to 3V3** ( * ) so Bruce drives it over SPI only, or use one
radio at a time and swap CS in the UI.
- nRF24: add a decoupling cap across the module VCC/GND (10 uF; 100 uF for PA+LNA).

## I2C add-ons (no extra pins)

PN532 (NFC), DS3231 (RTC) and other I2C devices join the IIC header
(SDA 16 / SCL 15) at their own addresses.

> Match wiring by **GPIO number to the header silkscreen** (IO2/IO3/IO14/IO21,
> TX/RX), not by connector position.
Loading