Skip to the content
PCBKitNew board
2 layers94 × 45 mmFirebeetleCarrier, the printed circuit board in 3D

FirebeetleCarrier

JuzzyDee/oneiro-beacon

A memory, made physical — an open e-paper display for the Oneiro memory system. No-solder build, KiCad hardware, bring-your-own backend.

Size
94 × 45 mm
Copper layers
2
Thickness
1.6 mm
Parts
47
Nets
55
Pads
141
Tracks, vias
273, 32
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
24 Jul 2026
Updated
24 Jul 2026

Overview

FirebeetleCarrier is an open-source printed circuit board by JuzzyDee, from the JuzzyDee/oneiro-beacon repository on GitHub, published under the MIT licence. It is a 2-layer board of 94 × 45 mm with 47 parts on 55 nets, routed with 273 tracks and 32 vias.

It is built around the MBR0530, AO3400A and SI2301CDS-T1-E3. Its parts include 12 resistors, 11 capacitors, 6 connectors, 3 diodes and 3 transistors. It belongs with the lEDs and displays boards of this library.

Main components

3

README

README.md

Beacon

A memory, made physical.

The Beacon is a battery e-paper desk device that wakes once a day, fetches a single image from a backend you control, paints it onto the glass, and goes back to sleep. E-paper is bistable, so the image holds at zero power between refreshes — it just sits there, a picture on your desk that quietly changes once a day.

It was built as the display end of Oneiro, a memory system for an AI: each day it surfaces one memory as a dithered illustration. But the Beacon itself doesn't care where the image comes from. The device is the easy part — the memory feed is yours to bring.

Built with soldering-optional hardware, so anyone can make one.


What you need (no-solder build)

PartNotes
DFRobot FireBeetle 2 ESP32-EThe brains. Very low deep-sleep current, built-in LiPo charging.
5" e-paper, 960×552 + driver HATThe glass — bistable, holds the image on no power. Discontinued panel; see the sourcing note.
A LiPo cellI run a 2200 mAh 18650 (flat packs were out of stock). It wakes once a day, so runtime is long — exact life yet to be measured.
A Type D cableConnects the display to the board — see the schematic notes.
(optional) The carrier PCB — see hardware/Tidies it into one clean object. Not required to try it first on the HAT.

No iron needed for the basic build: the e-paper sits on its HAT, the FireBeetle plugs into the carrier (or a breadboard), joined by the Type D cable.

Sourcing note: the 960×552 panel (the EPD_5in0 driver's target) appears to be discontinued — I found mine cheap on AliExpress. Any current Waveshare e-paper works; just match its resolution and FRAME_BYTES in the firmware and your backend.


Flash it

  1. Install the Arduino IDE and the ESP32 board package.
  2. Open firmware/beacon.ino.
  3. Create your secrets file from the template and fill it in:
    sh
    cd firmware
    cp secrets.h.example secrets.h
    Edit secrets.h — your WiFi, your backend's BEACON_URL, and a BEACON_KEY bearer token if your backend wants one. secrets.h is gitignored; it never leaves your machine.
  4. Board settings in the Arduino IDE:
    • Board: FireBeetle 2 ESP32-E
    • Partition Scheme: Default 4MB with SPIFFS
  5. Upload. On boot it joins WiFi, pulls a frame, paints it, and deep-sleeps until the next refresh.

The Waveshare 5" driver is vendored in firmware/ for convenience (see NOTICE) — nothing else to install.


Bring your own memory feed

The Beacon fetches exactly one thing: a pre-packed 1-bit display frame, over HTTP. It does no rendering — your backend owns the pixels. So you can point it at anything that speaks this contract:

GET <BEACON_URL> → the raw frame bytes.

  • Size: 960 × 552 px = 66,240 bytes
  • Packing: 1 bit/pixel, 8 px/byte, 120 bytes/row, row-major
  • Bit order: MSB = leftmost pixel
  • Colour: bit 1 = white, 0 = black (an all-0xFF buffer is a blank white screen)
  • Auth: the device sends Authorization: Bearer <BEACON_KEY>. Ignore it if your endpoint is open.
  • Schedule (optional): respond with an X-Beacon-Sleep-Seconds header and the device sleeps exactly that long before the next fetch — so your server owns the cadence and the device's RC-timer drift never accumulates. Without it, it falls back to a 6-hour interval.
  • Empty shelf: return 503 and the device leaves the current image up and retries later. (E-paper persistence means a blank fetch never blanks the wall.)

Render however you like — Python + Pillow with Floyd–Steinberg dithering is an easy start. A homelab box, a serverless function, a Raspberry Pi — anything that can return 66,240 bytes works. The contract above is all you actually need.


Hardware

hardware/ holds the KiCad source for the FireBeetle carrier board (Rev 0.1B) — schematic and PCB. It tidies the FireBeetle, the e-paper connector, power, and the decoupling/bulk caps into one board. You don't need it to try the Beacon (a HAT on a breadboard works), but if you want the clean desk object, it's here to fab.

Connection: the display attaches via a Type D cable — the schematic notes cover it.

Fabrication: no Gerbers or BOM are shipped on purpose. Export your own from KiCad — File → Fabrication Outputs for Gerbers and drill files, and the BOM / component-position tools for assembly. That keeps you on current fab-house requirements and, more importantly, means you can change the board first — which is the whole point of open hardware. Open the project, tweak what you want, export, order.


Why

Built because someone wanted an AI's memory to be something you could look at from across a room — not a database row, but a picture on the glass that changes with the day. If you build your own, that's the spirit: it isn't a status display, it's a small daily window into whatever you decide is worth remembering.

Firmware, hardware, and this guide are MIT — do what you like with them. The one piece kept private is the specific art-generation prompt behind the original images; bring your own.

Built by Justin Davis, with Claude — to give a memory a face.

Parts

47
QtyValueFootprintReferences
74.7uF/25VCapacitor_SMD:C_0805_2012MetricC1, C3, C5, C6, C7, C8, C9
6470ΩResistor_SMD:R_0805_2012MetricR7, R8, R9, R10, R11, R12
31uF/50VCapacitor_SMD:C_0805_2012MetricC2, C4, C10
3MBR0530Diode_SMD:D_SOD-123D1, D2, D3
1100KResistor_SMD:R_0805_2012MetricR5
1100nF/50VCapacitor_SMD:C_0805_2012MetricC11
110KResistor_SMD:R_0805_2012MetricR4
110uHeasyeda2kicad:IND-SMD_L4.5-W4.0L1
11MΩResistor_SMD:R_0805_2012MetricR2
12.2ΩResistor_SMD:R_0805_2012MetricR1
13v3 In TestTestPoint:TestPoint_Pad_1.5x1.5mmTP1
13v3 Out TestTestPoint:TestPoint_Pad_1.5x1.5mmTP2
147KResistor_SMD:R_0805_2012MetricR6
1AO3400APackage_TO_SOT_SMD:SOT-23Q1
1Conn_01x04Connector_JST:JST_PH_S4B-PH-K_1x04_P2.00mm_HorizontalJ4
1Conn_01x14Connector_PinSocket_2.54mm:PinSocket_1x14_P2.54mm_VerticalJ3
1Conn_01x18Connector_PinSocket_2.54mm:PinSocket_1x18_P2.54mm_VerticalJ2
1Conn_01x24_Pineasyeda2kicad:CONN-SMD_FH12A-24S-0.5SH-55J1
1Conn_CONFIGConnector_JST:JST_PH_S2B-PH-K_1x02_P2.00mm_HorizontalJ6
1Conn_REFRESHConnector_JST:JST_PH_S2B-PH-K_1x02_P2.00mm_HorizontalJ5
1Force JumperJumper:SolderJumper-2_P1.3mm_Open_TrianglePad1.0x1.5mmJP1
1GND testTestPoint:TestPoint_Pad_1.5x1.5mmTP3
1NC/47KResistor_SMD:R_0805_2012MetricR3
1PWR TestTestPoint:TestPoint_Pad_1.5x1.5mmTP4
1Q_NPNPackage_TO_SOT_SMD:SOT-23Q3
1RX TestTestPoint:TestPoint_Pad_1.5x1.5mmTP6
1SI2301CDS-T1-E3Package_TO_SOT_SMD:SOT-23Q2
1TX TestTestPoint:TestPoint_Pad_1.5x1.5mmTP5

The 43 most common of 47 parts.

Questions

How big is the FirebeetleCarrier PCB?

It measures 94 × 45 mm and has 2 copper layers, 1.6 mm thick.

What parts does the FirebeetleCarrier use?

47 parts, built around the MBR0530, AO3400A and SI2301CDS-T1-E3. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the FirebeetleCarrier KiCad files?

From the JuzzyDee/oneiro-beacon repository on GitHub, at the commit this page was made from: the board is hardware/FirebeetleCarrier.kicad_pcb and its schematic hardware/FirebeetleCarrier.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the FirebeetleCarrier design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers83.1 × 56.2 mmSchematics, the printed circuit board in 3D

    Schematics

    fulvionardi/Epaper

    This project is a replication of the Waveshare 3.6inch e-Paper HAT+ schematics, originally documented in 3.6inche-PaperHAT+Schematics.pdf.

    73 parts1
  • 2 layers58 × 92.6 mmBadge, the printed circuit board in 3D

    Badge

    wisdom-km/color-eink-work-badge

    Color e-ink work badge (彩色墨水屏工牌). P36 3.6-inch six-color 400x600 portrait badge.

    81 parts
  • 2 layers33.2 × 40 mmDesk Display, the printed circuit board in 3D

    Desk Display

    ANSHUMANDOCX/Desk-Display

    It is a desk display made using an E ink display.

    63 parts
  • 4 layers177 × 118 mmE ink picture frame, the printed circuit board in 3D

    E ink picture frame

    bkuhn4/e-ink-picture-frame

    To make it easy for you to get started with GitLab, here's a list of recommended next steps.

    110 parts
  • 4 layers34.8 × 69.6 mmEnokiEEG v2, the printed circuit board in 3D

    EnokiEEG v2

    io-tronic/EnokiEEG

    This project funded in part by the Russell Foundation

    93 parts
  • 2 layers100 × 100 mmControl, the printed circuit board in 3D

    Control

    mamaheux/CNC

    160 partsMIT
  • 4 layers36.5 × 69 mmStorm tracker, the printed circuit board in 3D

    Storm tracker

    solderable/storm-tracker-hardware

    Open-source-ready Storm Tracker hardware design, documentation, BOM, and manufacturing package

    102 parts58
  • 2 layers33.8 × 46 mmWatchy, the printed circuit board in 3D

    Watchy

    xywatch/watchy-hardware-v2

    watchy hardware v2 with typec

    64 parts8