ESP32-S3-WROOM-1 16N8
Dual-core 240 MHz module with 16 MB flash and 8 MB PSRAM.
// BADGE SPEC
The badge is an ESP32-S3 wearable with OLED, LED matrix, face buttons, analog joystick, IMU, haptics, IR, FatFS storage, and an embedded MicroPython runtime.
Dual-core 240 MHz module with 16 MB flash and 8 MB PSRAM.
Arduino C++ firmware hosts a 128 KB Python heap from PSRAM.
/appsApp files live on the FFat partition. The referenced build uses a 0x600000-byte partition.
The IMU can detect when the badge hangs upside down, then flip display, matrix, and input orientation.
// HARDWARE AT A GLANCE
| Component | Spec | Primary Calls |
|---|---|---|
| Display | 128x64 monochrome OLED, SSD1306 | oled_println(), oled_show() |
| LED Matrix | 8x8 red LED matrix, IS31FL3731, per-pixel PWM | led_set_pixel(), led_show_image() |
| Input | 4 d-pad buttons and analog joystick | button_pressed(), joy_x() |
| Motion | LIS2DH12 3-axis accelerometer | imu_tilt_y(), imu_face_down() |
| IR | NEC-protocol TX LED and TSOP receiver | ir_start(), ir_send_words() |
| Haptics | Vibration motor with coil-tone support | haptic_pulse(), tone() |
// CONTROLS
Use semantic constants for menu behavior and physical constants for game controls.
BTN_UP is Y, BTN_DOWN is A,
BTN_LEFT is X, and BTN_RIGHT is B.
PlayStation-style aliases are available:
BTN_TRIANGLE, BTN_CROSS,
BTN_SQUARE, and BTN_CIRCLE.
BTN_CONFIRM and BTN_BACK follow the
user confirm/back swap setting.
joy_x() and joy_y() return raw values
from 0 to 4095. Center is usually near 2048.