PCB_Badge
PublicLoading…
BoardRepo Programmable Badge
A Tufty-style programmable badge: one 96 × 152 mm, 2-layer PCB. The top half is a name card; the bottom half holds a 2.8" 320×240 touch screen, five buttons, an ESP32-S3 and a LiPo.
What's on it
| Block | Part |
|---|---|
| Brain | ESP32-S3-WROOM-1-N16R8 (Wi-Fi + BLE, 16 MB flash, 8 MB PSRAM, native USB) |
| Screen | Adafruit 2.8" 320×240 TFT with capacitive touch (#2090), plugged into the 18-pin EYESPI connector J2 |
| Buttons | A, B, C under the screen; UP, DOWN on the right; BOOT and RESET on the back |
| Power | USB-C (ESD-protected), MCP73831 LiPo charger at ~500 mA, automatic USB/battery switch-over, AP2112K 3.3 V regulator, power switch |
| Extras | Qwiic/STEMMA QT I2C port, LTR-303 light sensor, battery + USB voltage sensing, 4 white back-glow LEDs, charge LED, UART debug header |
ESP32-S3 pin map
| Function | GPIO | Function | GPIO | |
|---|---|---|---|---|
| SPI SCK / MOSI / MISO | 12 / 11 / 13 | Button A / B / C | 15 / 16 / 17 | |
| Display CS / DC / RST | 10 / 9 / 8 | Button UP / DOWN | 18 / 21 | |
| Backlight (PWM) | 14 | I2C SDA / SCL | 39 / 40 | |
| SD card CS (on display) | 47 | Touch INT / Light INT | 7 / 41 | |
| Display TE | 6 | Battery / USB sense (÷2) | 4 / 5 | |
| Glow LEDs 1–4 | 1, 2, 42, 48 | UART TX / RX | 43 / 44 | |
| USB D− / D+ | 19 / 20 (native) | BOOT / RESET | IO0 / EN |
Buttons are active-low (use internal pull-ups) and sit on RTC GPIOs, so any of them can wake the badge from deep sleep.
Files
kicad/— board + schematic (openbadge.kicad_proin KiCad 10);kicad/3d/holds stand-in 3D models for the USB-C, battery connector, light sensor and the display module.badge_gerbers.zip— fab-ready Gerbers + drill (2 layers, 1.6 mm, ENIG recommended for the gold art).badge_bom.csv,badge_cpl_jlc.csv— parts list and placement file for PCB assembly (e.g. JLCPCB).firmware/— MicroPython starter:badge.py(hardware layer + ILI9341 driver) andmain.py(launcher with a name badge, Snake, a sensor page and back-glow control).source/— the scripts that generated the board, so you can change the name, parts or layout and rebuild.
Building one
- Order the PCB with assembly using the Gerbers, BOM and placement file. Parts marked with an empty LCSC column (EYESPI FPC connector, B3S / B3U switches, LTR-303 light sensor, PCM12 power switch) need an LCSC part chosen by hand. Check every part's rotation in the assembler's placement preview, especially back-side parts.
- Buy the Adafruit 2.8" EYESPI display (#2090), an 18-pin 0.5 mm EYESPI cable, and four M2.5 × 6 mm standoffs.
- Battery: 3.7 V LiPo with a protection circuit and a JST-PH 2.0 plug, about 34 × 50 × 5 mm (e.g. "503450"). Polarity: pin 1 = GND (Adafruit standard). Many cheap batteries are wired the other way — check before plugging in.
- Flash MicroPython (
ESP32_GENERIC_S3, SPIRAM_OCT build) over USB-C (hold BOOT, tap RESET if needed), thenmpremote cp firmware/badge.py firmware/main.py :and reset.
Status — please read
- Not built or tested yet. The board passes KiCad's design rule check with 0 errors and 0 unconnected nets; the remaining warnings are thermal-relief notes on the USB-C ground pads (also tied by tracks), one copper sliver and some silkscreen-over-pad clipping.
- Schematic:
kicad/badge.kicad_sch(andbadge_schematic.pdf) is generated from the same netlist insource/build_badge.py. ERC passes with 0 violations, and KiCad's schematic-parity check matches every board pad to its schematic net (only intentional no-connect pins and mounting-hole BOM flags are reported). - The power switch's ON/OFF direction isn't marked; check it on the first board and add the label.
- The firmware has not run on hardware; the ILI9341 start-up sequence is minimal and may need tuning.
- The ESP32 antenna sits under the name card with no copper around it; keep metal (e.g. a metal badge clip) away from that area.
Ask about this board
No comments yet. Be the first to ask about this board.