
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.
A memory, made physical — an open e-paper display for the Oneiro memory system. No-solder build, KiCad hardware, bring-your-own backend.
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.
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.
| Part | Notes |
|---|---|
| DFRobot FireBeetle 2 ESP32-E | The brains. Very low deep-sleep current, built-in LiPo charging. |
| 5" e-paper, 960×552 + driver HAT | The glass — bistable, holds the image on no power. Discontinued panel; see the sourcing note. |
| A LiPo cell | I 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 cable | Connects 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_5in0driver's target) appears to be discontinued — I found mine cheap on AliExpress. Any current Waveshare e-paper works; just match its resolution andFRAME_BYTESin the firmware and your backend.
firmware/beacon.ino.cd firmware
cp secrets.h.example secrets.hsecrets.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.The Waveshare 5" driver is vendored in firmware/ for convenience (see
NOTICE) — nothing else to install.
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.
1 = white, 0 = black (an all-0xFF buffer is a blank white screen)Authorization: Bearer <BEACON_KEY>. Ignore it if your endpoint is open.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.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/ 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.
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.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 7 | 4.7uF/25V | Capacitor_SMD:C_0805_2012Metric | C1, C3, C5, C6, C7, C8, C9 |
| 6 | 470Ω | Resistor_SMD:R_0805_2012Metric | R7, R8, R9, R10, R11, R12 |
| 3 | 1uF/50V | Capacitor_SMD:C_0805_2012Metric | C2, C4, C10 |
| 3 | MBR0530 | Diode_SMD:D_SOD-123 | D1, D2, D3 |
| 1 | 100K | Resistor_SMD:R_0805_2012Metric | R5 |
| 1 | 100nF/50V | Capacitor_SMD:C_0805_2012Metric | C11 |
| 1 | 10K | Resistor_SMD:R_0805_2012Metric | R4 |
| 1 | 10uH | easyeda2kicad:IND-SMD_L4.5-W4.0 | L1 |
| 1 | 1MΩ | Resistor_SMD:R_0805_2012Metric | R2 |
| 1 | 2.2Ω | Resistor_SMD:R_0805_2012Metric | R1 |
| 1 | 3v3 In Test | TestPoint:TestPoint_Pad_1.5x1.5mm | TP1 |
| 1 | 3v3 Out Test | TestPoint:TestPoint_Pad_1.5x1.5mm | TP2 |
| 1 | 47K | Resistor_SMD:R_0805_2012Metric | R6 |
| 1 | AO3400A | Package_TO_SOT_SMD:SOT-23 | Q1 |
| 1 | Conn_01x04 | Connector_JST:JST_PH_S4B-PH-K_1x04_P2.00mm_Horizontal | J4 |
| 1 | Conn_01x14 | Connector_PinSocket_2.54mm:PinSocket_1x14_P2.54mm_Vertical | J3 |
| 1 | Conn_01x18 | Connector_PinSocket_2.54mm:PinSocket_1x18_P2.54mm_Vertical | J2 |
| 1 | Conn_01x24_Pin | easyeda2kicad:CONN-SMD_FH12A-24S-0.5SH-55 | J1 |
| 1 | Conn_CONFIG | Connector_JST:JST_PH_S2B-PH-K_1x02_P2.00mm_Horizontal | J6 |
| 1 | Conn_REFRESH | Connector_JST:JST_PH_S2B-PH-K_1x02_P2.00mm_Horizontal | J5 |
| 1 | Force Jumper | Jumper:SolderJumper-2_P1.3mm_Open_TrianglePad1.0x1.5mm | JP1 |
| 1 | GND test | TestPoint:TestPoint_Pad_1.5x1.5mm | TP3 |
| 1 | NC/47K | Resistor_SMD:R_0805_2012Metric | R3 |
| 1 | PWR Test | TestPoint:TestPoint_Pad_1.5x1.5mm | TP4 |
| 1 | Q_NPN | Package_TO_SOT_SMD:SOT-23 | Q3 |
| 1 | RX Test | TestPoint:TestPoint_Pad_1.5x1.5mm | TP6 |
| 1 | SI2301CDS-T1-E3 | Package_TO_SOT_SMD:SOT-23 | Q2 |
| 1 | TX Test | TestPoint:TestPoint_Pad_1.5x1.5mm | TP5 |
The 43 most common of 47 parts.
It measures 94 × 45 mm and has 2 copper layers, 1.6 mm thick.
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.
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.
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).

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

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


bkuhn4/e-ink-picture-frame
To make it easy for you to get started with GitLab, here's a list of recommended next steps.


solderable/storm-tracker-hardware
Open-source-ready Storm Tracker hardware design, documentation, BOM, and manufacturing package
