Components & wiring
Everything you need to build a Jellybox device from scratch. The Classic build is intentionally simple: an ESP32, an NFC reader, an eInk screen, and a NeoPixel ring.
jb-eink-v1). These instructions apply to this hardware variant only — other Jellybox SKUs use different displays, pinouts, and peripherals.Bill of materials
All components are available on Amazon, AliExpress, or Adafruit.
| Component | Notes | Qty |
|---|---|---|
| ESP32 dev board | Any 38-pin ESP32 DevKit works. The BOOT button (GPIO0) is used for factory reset. | 1 |
| PN532 NFC/RFID module | Must support I²C mode. Most breakout boards (Elechouse, AZDelivery) include mode-select DIP switches. | 1 |
| Waveshare 2.9" V2 B/W eInk display | Part number: 2.9inch e-Paper Module (B). 296×128 pixels, SPI interface. Make sure it is V2. | 1 |
| NeoPixel 16-LED ring (WS2812B) | Any WS2812B 16-LED ring. Unbranded ones from Amazon/AliExpress work fine. | 1 |
| LiPo battery + TP4056 charger board | A 1000–2000 mAh single-cell LiPo with a TP4056 (micro-USB or USB-C) charging board. | 1 |
| SPDT power switch | Fitted in line between the TP4056 output and the ESP32 so the device can be turned off completely. | 1 |
| Breadboard or perfboard + jumper wires | For prototyping. | 1 |
| RFID/NFC tags (NTAG213 or NTAG215) | Standard ISO 14443A tags. CR80 PVC stickers (85.6 × 53.98 mm) pair with the dashboard's sticker sheet designer. | 10+ |
Custom PCB
Skip the breadboard — a drop-in PCB that routes every connection above onto a single board.
Want to fabricate your own? The Download gerbers button above gives you the manufacturing files as a single ZIP. Upload it directly to a fab house like JLCPCB, PCBWay, or OSH Park.
Board dimensions & mounting holes
For anyone designing their own enclosure or 3D-printed shell around the PCB.
The PCB is 77.14 × 33.01 mm, two-layer FR4, 1.6 mm thick. Four 2.0 mm mounting holes (M2 clearance) sit near the corners — positions are measured from the bottom-left corner of the board outline.
| Hole | X (mm) | Y (mm) | Ø (mm) |
|---|---|---|---|
| M1 (bottom-left) | 1.27 | 1.47 | 2.0 |
| M2 (bottom-right) | 75.70 | 1.67 | 2.0 |
| M3 (top-left) | 1.47 | 31.65 | 2.0 |
| M4 (top-right) | 75.70 | 31.55 | 2.0 |
For the full, dimensioned reference — including every via and component hole — see the drill map:
jb-eink-v1) build only — other Jellybox SKUs use different displays and peripherals and will need their own boards.No PCB? See the hand-wired pinout below.
Wiring
All components run on 3.3 V logic and are directly compatible with the ESP32. The NeoPixel ring can be powered from 5 V for full brightness, or 3.3 V for dimmer but safer operation.
PN532 NFC reader (I²C)
IRQ and RST are not used by the firmware yet — leave those pins on the PN532 disconnected.
| Component pin | ESP32 pin | Notes |
|---|---|---|
| VCC | 3.3V | 3.3 V only — do not use 5 V |
| GND | GND | |
| SDA | GPIO 21 | I²C data — add 4.7 kΩ pull-up to 3.3 V if signal is unstable |
| SCL | GPIO 22 | I²C clock |
Waveshare 2.9″ V2 eInk display (SPI)
The display uses the ESP32's default VSPI bus (MOSI=23, CLK=18). Other pins are defined in Config.h.
| Component pin | ESP32 pin | Notes |
|---|---|---|
| VCC | 3.3V | |
| GND | GND | |
| DIN (MOSI) | GPIO 23 | SPI MOSI — shared VSPI bus |
| CLK (SCK) | GPIO 18 | SPI clock — shared VSPI bus |
| CS | GPIO 5 | Chip select — active low |
| DC | GPIO 17 | Data / command select |
| RST | GPIO 16 | Reset |
| BUSY | GPIO 4 | Busy signal — wait for LOW before sending commands |
NeoPixel 16-LED ring (WS2812B)
| Component pin | ESP32 pin | Notes |
|---|---|---|
| VCC / +5V | 5V (VIN) | Use 5 V from the ESP32 VIN pin for full brightness. 3.3 V also works at lower brightness. |
| GND | GND | |
| DIN | GPIO 27 | Data signal — a 300–500 Ω series resistor on this line is recommended to prevent ringing |
Power
Jellybox is designed as a portable, battery-powered device — not a tethered USB gadget.
The assembly draws around 200–300 mA at 5 V when active (mostly the NeoPixel ring). A single-cell LiPo (1000–2000 mAh) wired through a TP4056 charger board gives a good balance of runtime and size, and lets you recharge over USB without removing the cell.
Battery wiring (TP4056 → ESP32)
Fit a power switch in line between the TP4056 output and the ESP32 so the device can be fully turned off when not in use.
| Component pin | ESP32 pin | Notes |
|---|---|---|
| LiPo + | TP4056 B+ | Battery positive into the charger board |
| LiPo − | TP4056 B− | Battery negative into the charger board |
| TP4056 OUT+ | Switch → ESP32 5V / VIN | Run the positive output through an SPDT switch, then into the ESP32 5 V rail |
| TP4056 OUT− | ESP32 GND | Common ground |
The firmware does not use the ESP32's deep-sleep mode yet, so the device stays active while switched on. Expect a few hours of runtime from a 2000 mAh cell — flip the switch off between uses to extend battery life.
Tag stickers
Credit-card-format NFC stickers are the easiest tag form factor — slim, cheap, and printable.
Jellybox is built around standard ISO 14443A tags, but the recommended form factor is a CR80 credit-card-sized PVC sticker (85.6 × 53.98 mm) with an embedded NTAG213 or NTAG215 chip. They're the same shape as a bank card, so they sit neatly in a wallet, a binder pocket, or a display rack next to the device — and the rigid white face takes printed artwork well.
The dashboard includes a built-in sticker sheet designer at Tags → Create sticker sheet. It:
- Pre-fills one sticker per registered RFID tag, pulling the poster or album artwork from the linked Jellyfin (or extension) item.
- Lays stickers out on A4 at exact CR80 dimensions, with cut marks and a safe-print border so they trim cleanly with a guillotine or scissors.
- Lets you tweak title text, swap artwork, choose landscape or portrait, and set text colour per card before printing.
Look for “NTAG213 PVC card” or “NTAG215 NFC card” on Amazon or AliExpress, sold in packs of 10–50. NTAG215 has more user memory (504 bytes) but Jellybox only stores the UID, so NTAG213 (144 bytes) is plenty.
Hardware assembled? Flash the firmware →