Hardware Reference
Know your board. POOM is built on an ESP32-C5 (RISC-V, 2.4 GHz Wi-Fi + BLE + 802.15.4) and exposes a handful of on-board peripherals through dedicated drivers. This page maps what's on the device, which driver runs it, and the GPIO assignments from the board support header.
On-Board Peripherals & Drivers
| Peripheral | Driver | Notes |
|---|---|---|
| 6 buttons (A, B, UP, DOWN, LEFT, RIGHT) | button_driver | Publishes press events over SBUS (input/button) |
| OLED display 128×64 | poom_arduboy_display | I2C; Arduboy-style graphics API |
| WS2812 / SK6812 LED strip | ws2812 | RMT-based; driven by LED rainbow or Lua Led.* |
| Buzzer | buzzer | PWM tones via ESP-IDF LEDC |
| IR receive + transmit | ir_rcv (+ IR TX pin) | NEC decode over RMT; used by IR UNIV |
| microSD card | sd_card | SPI mode, FATFS, mount point /sdcard |
| I2C bus (Qwiic-style) | i2c | Shared bus for sensors + display |
| NFC front-end (ST25R3916) | nfc | Interrupt-driven; see the NFC Lab |
GPIO Pinout
The board support header (board/include/bsp_pong.h) defines two pin profiles — assignments differ by board revision / target. Confirm which profile matches your hardware before wiring anything external.
| Signal | Profile A (GPIO) | Profile B (GPIO) |
|---|---|---|
| Button A | 9 | 28 |
| Button B | 10 | 9 |
| Button LEFT | 22 | 3 |
| Button RIGHT | 23 | 23 |
| Button UP | 1 | 7 |
| Button DOWN | 15 | 24 |
| I2C SDA | 6 | 0 |
| I2C SCL | 7 | 1 |
| SPI MOSI | 19 | 4 |
| SPI MISO | 20 | 8 |
| SPI CLK | 21 | 6 |
| SPI CS (SD) | 18 | 5 |
| WS2812 LED data | 8 | 27 |
| Buzzer | 2 | 26 |
| NFC interrupt | 4 | 2 |
| IR TX | 3 | 25 |
| IR RX | 11 | 10 |
board/include/bsp_pong.h for your exact build before connecting hardware.Storage Map
Flash is partitioned for dual-slot OTA plus persistent storage:
| Partition | Purpose |
|---|---|
nvs | Key-value store: config, Wi-Fi credentials, BLE bonding, saved NFC profiles |
phy_init | Wi-Fi/BLE PHY calibration |
zb_storage / zb_fct | Zigbee/Thread storage and factory data (FATFS) |
otadata | Tracks the active OTA slot |
internal | Internal filesystem (SPIFFS, 512 KB) |
ota_0 / ota_1 | Two 3712 KB app slots for safe updates |
The microSD card (/sdcard) is separate from flash and holds captures, portal templates, NFC dumps and Lua scripts.
Where to Go Next
The full component catalogue is in the Technologies Matrix. To drive this hardware from scripts, see Lua Scripting; for wiring problems, see Troubleshooting.