Skip to the content
2 layers57 × 78 mmHaboxesp, the printed circuit board in 3D

Application for a custom Home Assistant box.

Size
57 × 78 mm
Copper layers
2
Thickness
1.6 mm
Parts
64
Nets
63
Pads
234
Tracks, vias
444, 123
Pours
10
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
19 Jan 2026
Updated
3 Aug 2026

Overview

Haboxesp is an open-source printed circuit board by LeKaZeD, from the LeKaZeD/ha-box repository on GitHub, published under the Apache-2.0 licence. It is a 2-layer board of 57 × 78 mm with 64 parts on 63 nets, routed with 444 tracks and 123 vias.

It is built around the 74LVC1G66GW, RT9193-33GB and MBR0530, with the M2.5, AO3400A and SI1308EDL among its other parts. Its parts include 20 capacitors, 15 resistors, 4 diodes, 4 connectors and 3 ICs.

Main components

6

README

README.md

HA Box

License Supports aarch64 Architecture

HA Box is an open-source, modular home automation hub built around a Raspberry Pi 5 and Home Assistant OS. It integrates the main smart home protocols (Zigbee, Thread, 433 MHz) into a single 3D-printed enclosure, with a custom ESP32 interface board providing a local E-Paper display, touch, environmental sensing, and physical controls.


Project overview

HA Box is composed of four independent layers that work together:

text
+---------------------------------------------------------------+
|  3D-printed enclosure  (modular, FDM-printable, upgradeable)  |
|                                                               |
|  +---------------------------+   +-------------------------+  |
|  |  Raspberry Pi 5 stack     |   |  haboxesp PCB + ESP32   |  |
|  |  - Pi 5                   |   |  - E-Paper display      |  |
|  |  - M.2 SSD hat            |   |  - Touch (FT6336U)      |  |
|  |  - HDMI/USB-C extension   |   |  - BME280 sensor        |  |
|  |  - Sonoff Dongle Plus E   |   |  - Temp sensor TMP102   |  |
|  |    (Zigbee + Thread)      |   |  - Fan (PWM)            |  |
|  |  - CC1101 module (planned)|   |  - Buzzer               |  |
|  |    (433 MHz, SPI)         |   |  - Power button + J2    |  |
|  |                           |   |                         |  |
|  |  [ Home Assistant OS ]    |   |                         |  |
|  |  [ HA Box App (py) ]   <--+---+--> UART                 |  |
|  +---------------------------+   +-------------------------+  |
+---------------------------------------------------------------+
LayerDescriptionLocation
HardwarePi 5 stack, haboxesp PCB, Sonoff dongle, connectorshardware/
3D enclosureModular, printable enclosure for all componentshardware/3D plan/
ESP32 firmwareDrives display, sensors, touch, fan, buzzerha-box-esp/
HA AppPython app: UART bridge to HA API and Supervisorha-box/
HA integrationCustom component: groups all HA Box entities in the device registryha-integration/

Hardware

Raspberry Pi 5 stack

ComponentDescriptionProtocol
Raspberry Pi 5Main compute unit, runs Home Assistant OS—
M.2 SSD hatNVMe storage via PCIePCIe
HDMI + USB-C extensionRear panel port routing—
Sonoff Zigbee 3.0 USB Dongle Plus EZigbee and Thread coordinatorUSB
CC1101 module433 MHz radio (planned)SPI

haboxesp PCB + ESP32

The haboxesp is a custom PCB designed for this project. It hosts an ESP32 module and provides connectors for all user-facing peripherals. The ESP32 communicates with the Pi exclusively over UART.

ComponentModelInterface
E-Paper displayGDEY037T03-FT21 (3.7", 240×416)SPI
Touch controllerFT6336U (integrated in display)I2C
Environmental sensorBME280 (temperature, humidity, pressure)I2C
Case temperatureAdditional sensorI2C / analog
Fan5V PWMPWM
BuzzerHaptic feedbackGPIO
Power buttonWake + shutdown triggerGPIO
J2 connectorRaspberry Pi J2 header (power control)—

PCB design files (KiCad) and manufacturing exports are in hardware/haboxesp/.

3D-printed enclosure

The enclosure is designed in Fusion 360, modular and FDM-printable. Each part can be reprinted independently to accommodate hardware upgrades.

Printable parts (STL): Box, Top, Backplate, Support, Pied, Button.

FrontInside

Fusion 360 source and STEP files: hardware/3D plan/Fusion/.


ESP32 firmware

The ESP32 firmware (ha-box-esp-fw/) is a C++ application that:

  • drives the E-Paper display (SPI) and front-light
  • reads touch input (I2C, FT6336U)
  • reads temperature/humidity/pressure (I2C, BME280)
  • controls the fan (PWM, temperature-based)
  • manages the power button (wake from deep sleep, shutdown request)
  • controls the buzzer for haptic feedback
  • communicates with the Pi App over UART using a line-based ASCII protocol

See ha-box-esp-fw/ESPHOMEASSISTANT/ARCHITECTURE.md and docs/ESP32_RASP_COM.md for the firmware architecture and UART protocol.


HA App

The HA Box App (ha-box/) is a Home Assistant OS Supervisor App written in Python. It runs inside a Docker container on the Pi and acts as a bridge between the ESP32 (UART) and Home Assistant (HTTP API + Supervisor API).

It does not access display, sensors, or actuators directly. All peripherals are on the ESP32 side; the App communicates over UART0 and controls two Pi GPIOs (IO0 + EN) for OTA firmware updates.

Raspberry Pi configuration (UART)

Edit /mnt/boot/config.txt physically (keyboard + screen on the Pi, or SD card / NVMe mounted on a computer). See docs/HARDWARE.md for Pi 4 vs Pi 5 differences and SPI (CC1101) setup. Reboot after: ha host reboot.

Installation

  1. Add this repository to your Home Assistant Apps:

    Add repository

    Or manually: Settings → App → App Store → ⋮ → Repositories → add the URL.

  2. Install HA Box.

  3. Install the HA Box custom integration: copy ha-integration/custom_components/ha_box/ to your HA config/custom_components/ folder, then restart Home Assistant. This creates the HA Box device in the device registry.

  4. Configure options according to your hardware (see below).

  5. Start the App.

Configuration

Configure options in the App UI or directly in YAML. Restart the App to apply changes.

yaml
general:
  log_level: "info"                         # debug | info | warning | error | critical
  lang: "auto"                              # auto | fr | en

weather:
  weather_entity: "weather.forecast_home"   # HA weather entity
  update_interval: 300                      # seconds (10–3600)

bme280:
  enabled: true
  address: "auto"                           # auto | 0x76 | 0x77
  update_interval: 30                       # seconds

fan:
  enabled: false
  min_temp: 28                              # °C — fan starts
  max_temp: 60                              # °C — fan at full speed

ota:
  io0_gpio: 23                              # Pi BCM GPIO → ESP32 IO0
  en_gpio: 24                               # Pi BCM GPIO → ESP32 EN

daynight:
  update_interval: 60                       # seconds between sun.sun polls (10–3600)

Language is auto-detected from the Home Assistant Core configuration (/api/config → language), with fallback to the container environment (LANG) and then English.

Fan and OTA options are sent to the ESP32 on every App startup and persisted in NVS — restart the App to apply changes.


Current status (v0.2.0)

FeatureInterfaceStatus
E-Paper display (Home, Loading, Settings pages)SPI (ESP32)Implemented
Touch navigationI2C (ESP32)Implemented
BME280 (temp, humidity, pressure) → HA entitiesUART (ESP32 → Pi)Implemented
TMP102 case temperature → HA entityUART (ESP32 → Pi)Implemented
Fan control (PWM, temperature-based, configurable)PWM (ESP32)Implemented
Power button (wake, soft shutdown, hard J2 stop)UART + J2 (ESP32 ↔ Pi)Implemented
Weather + clock displayUART (Pi → ESP32)Implemented
HA status icons (Core, Supervisor, Net, Zigbee, Thread, Matter, External)UART (Pi → ESP32)Implemented
OTA firmware update (auto version check + flash over UART0)UART0 + GPIOImplemented
Boot failure recovery (blind OTA flash on ROM boot errors)UART0 + GPIOImplemented
Day/Night mode sync (sun.sun + manual override, HA event + binary sensor)UART (Pi ↔ ESP32)Implemented
HA Box integration (device registry, grouped entities)HA custom componentIn progress
CC1101 433 MHzSPI (Pi)Planned

Future: Compute Module board

The long-term vision is a custom carrier board built around a Raspberry Pi Compute Module, integrating the Pi, ESP32, radio modules, and all connectors on a single PCB. This would replace the current assembly of off-the-shelf boards and the haboxesp PCB with a more compact, reliable, and user-friendly product.

Early design work is in hardware/cm5/.


Repository structure

text
ha-box/
├── hardware/
│   ├── haboxesp/          KiCad PCB project (haboxesp V0.1)
│   ├── 3D plan/           Fusion 360 enclosure + STL parts
│   └── cm5/               Compute Module carrier board (early stage)
├── ha-box-esp/         ESP32 firmware (C++)
├── ha-box/                HA App (Python)
│   ├── rootfs/            App runtime files
│   ├── config.yaml        App manifest
│   └── translations/      UI translations (en, fr)
├── ha-integration/        HA custom integration (device registry, grouped entities)
│   └── custom_components/
│       └── ha_box/
├── docs/                  Technical documentation
└── README.md

Documentation

DocumentDescription
docs/ARCHITECTURE.mdApp technical architecture
docs/HARDWARE.mdHardware specifications (haboxesp PCB + ESP32)
docs/ESP32_RASP_COM.mdUART protocol (Pi ↔ ESP32)
docs/FEATURES_STATUS.mdFeature status and timing reference
docs/TECH_STACK.mdLibraries and technical stack
docs/I18N.mdMultilingual support
ROADMAP.mdCurrent status and future plans
CONTRIBUTING.mdContribution guide
ha-box/SECURITY.mdSecurity policy
TESTING.mdDevelopment and testing guide

Contributing

Contributions are welcome. See CONTRIBUTING.md to get started.


License

Apache License 2.0. See LICENSE.


Project started January 17, 2026

Parts

64
QtyValueFootprintReferences
84.7uF/25VCapacitor_SMD:C_0603_1608MetricC2, C4, C7, C8, C9, C12, C14, C15
710kResistor_SMD:R_0603_1608MetricR4, R8, R10, R11, R13, R14, R18
51uF/50VCapacitor_SMD:C_0603_1608MetricC1, C6, C10, C11, C13
4100nFCapacitor_SMD:C_0603_1608MetricC16, C17, C19, C20
4Conn_01x02_PinConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ1, J2, J5, J6
3MBR0530Diode_SMD:D_SOD-123D1, D2, D3
20RResistor_SMD:R_0603_1608MetricR12, R15
2220Resistor_SMD:R_0603_1608MetricR6, R16
2Conn_01x06_PinConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ_NFC1, J4
2Conn_01x19_SocketConnector_PinSocket_2.54mm:PinSocket_1x19_P2.54mm_VerticalJesp1, Jesp2
2M2.5MountingHole:MountingHole_2.7mm_M2.5_Pad_ViaMH1, MH2
10.47Resistor_SMD:R_0603_1608MetricR3
1100kResistor_SMD:R_0603_1608MetricR1
1100uFCapacitor_SMD:CP_Elec_6.3x5.4C18
110uFCapacitor_SMD:C_0603_1608MetricC3
11MResistor_SMD:R_0603_1608MetricR2
122nF/50VCapacitor_SMD:C_0603_1608MetricC5
147 uH 500mA(Max)Inductor_SMD:L_1812_4532MetricL1
15Resistor_SMD:R_0603_1608MetricR7
174LVC1G66Package_TO_SOT_SMD:SOT-353_SC-70-5U2
1AO3400APackage_TO_SOT_SMD:SOT-23Q2
1BuzzerBuzzer_Beeper:Buzzer_12x9.5RM7.6BZ1
1Conn_01x04_PinConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ_BME1
1FPC24-EP (0.5mm)Connector_FFC-FPC:Hirose_FH12-24S-0.5SH_1x24-1MP_P0.50mm_HorizontalJ_EP1
1FPC6-FLConnector_FFC-FPC:Hirose_FH12-6S-0.5SH_1x06-1MP_P0.50mm_HorizontalJ_FL1
1FPC6-TPConnector_FFC-FPC:Hirose_FH12-6S-0.5SH_1x06-1MP_P0.50mm_HorizontalJ_TP1
1Fan_SYS_4pinConnector:FanPinHeader_1x04_P2.54mm_VerticalM1
1GNDTestPoint:TestPoint_Pad_D2.0mmGND1
1LEDLED_SMD:LED_0603_1608MetricD4
1PREVGHTestPoint:TestPoint_Pad_D2.0mmPREVGH1
1PREVGLTestPoint:TestPoint_Pad_D2.0mmPREVGL1
1RT9193-33GBRT9193-33GB:SOT-23-5_RITU1
1Si1308EDLPackage_TO_SOT_SMD:SOT-323_SC-70Q1
1TMP102xxDRLPackage_TO_SOT_SMD:SOT-563U3

Similar boards

  • 2 layers97.4 × 36.8 mm28P FPC SPI Debug, the printed circuit board in 3D

    28P FPC SPI Debug

    jabr0ni/epaper-hat

    PCB breakout board for e-paper module

    40 parts1
  • 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 layers84 × 98 mmFalloutbadge, the printed circuit board in 3D

    Falloutbadge

    sophiayduan/badges

    hackathon pcb badges

    93 parts3Unlicense
  • 2 layers60 × 150 mmPhone, the printed circuit board in 3D

    Phone

    TheEinfachFelix/CampPhone

    Warum habe ich mich dagegen entschieden, das Sim Modul selber zu implementieren? Ich habe kein Chip gefunden, der günstiger als das fertige Modul war, und ein Datenblatt in Englischer Sprache hat.

    137 parts
  • 4 layers41.6 × 36 mmEpaper smart watch, the printed circuit board in 3D

    Epaper smart watch

    AeroX2/aerox2.github.io

    One repository and npm installation builds the workshop at jamesridey.dev and the professional site at cv.jamesridey.dev.

    102 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 layers52 × 73 mmConference Badge, the printed circuit board in 3D

    Conference Badge

    Dheemanth0207/Electronic-Conference-Badge

    This project investigates the design and development of a smart, energy-efficient electronic conference badge intended to replace traditional printed name tags used at events and meetings.

    51 parts

Questions

How big is the Haboxesp PCB?

It measures 57 × 78 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Haboxesp use?

64 parts, built around the 74LVC1G66GW, RT9193-33GB, MBR0530 and M2.5. 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 Haboxesp KiCad files?

From the LeKaZeD/ha-box repository on GitHub, at the commit this page was made from: the board is hardware/haboxesp/haboxesp.kicad_pcb and its schematic hardware/cm5/RP-008099-DD-1-CM5 IO Board/CM5IO.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Haboxesp design in my own project?

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