Skip to the content
PCBKitNew board
4 layers45 × 50 mmDevotchi, the printed circuit board in 3D

Tamagotchi-style portable device for AI coding agents

Size
45 × 50 mm
Copper layers
4
Thickness
1.61 mm
Parts
66
Nets
75
Pads
265
Tracks, vias
437, 176
Pours
272
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
17 Mar 2026
Updated
26 Apr 2026

Overview

Devotchi is an open-source printed circuit board by hussamkoman, from the hussamkoman/devotchi repository on GitHub, published under the MIT licence. It is a 4-layer board of 45 × 50 mm with 66 parts on 75 nets, routed with 437 tracks and 176 vias.

It is built around the ESP32-S3-MINI-1-N4R2, DW01A and HS20HS072RX, with the ME6211C33M5G-N, TP4056-42-ESOP8 and AO3400A among its other parts. Its parts include 16 resistors, 13 capacitors, 5 ICs, 4 switches and 3 transistors. It belongs with the ESP32 boards of this library.

Main components

8

README

hardware/README.md

Hardware Design

PCB

3D render of Devotchi PCB

PCB front PCB back

Device Variants

Portable WiFi+BLE (current)

  • ESP32-S3-MINI-1 with integrated PCB antenna
  • HS20HS072RX 2.0" color TFT LCD (ST7789, 320x240, IPS)
  • LiPo battery, USB-C charging
  • 3 buttons (approve, reject, action)
  • Status LED, vibration motor
  • Connects to server via WiFi, or to phone via BLE

Portable Cellular (planned)

  • Same form factor as WiFi+BLE version
  • Additional cellular modem (MCU TBD — may use same ESP32-S3 + SIM module, or different MCU)
  • SIM/eSIM support (provider TBD)
  • Works standalone anywhere with cell coverage

Desktop (planned)

  • USB-powered (no battery needed)
  • Potentially larger display
  • Same ESP32-S3-MINI-1, connects via USB serial or WiFi

Parts

See purchase-list.md for the complete BOM with LCSC part numbers and sourcing info.

MCU: ESP32-S3-MINI-1-N4R2

SpecValue
Part numberESP32-S3-MINI-1-N4R2 (4MB flash, 2MB PSRAM)
CPUDual-core Xtensa LX7 @ 240 MHz
SRAM512 KB + 2MB PSRAM
WiFi802.11 b/g/n, 2.4 GHz
BluetoothBLE 5.0
AntennaIntegrated PCB antenna
Module dimensions15.4 x 20.5 x 2.4 mm
Operating voltage3.0 - 3.6V

Datasheets: Module | SoC

Why N4R2: PSRAM needed for display framebuffers — 320x240 RGB565 = 150KB per frame, double buffering needs 300KB. Without PSRAM, internal 512KB SRAM can't fit framebuffers + WiFi stack + application.

Display: HS20HS072RX 2.0" Color TFT LCD

SpecValue
ManufacturerHS (Shenzhen Hansheng)
Part numberHS20HS072RX
LCSCC5329582
Driver ICST7789T3
Size2.0 inches diagonal
Resolution320 x 240 pixels (QVGA)
Colors262K (RGB666)
Pixel pitch0.151 x 0.153 mm
Active area40.80 x 30.60 mm
Module size51.80 x 36.20 mm
InterfaceSPI (4-wire)
Operating voltageIOVCC 1.65-3.3V, VCI 2.4-3.3V
Backlight4 white LEDs in parallel, 80mA max
Backlight forward voltage3.0V typical (2.8-3.2V)
Sleep current~30 uA (SLPIN command)
Viewing angleALL directions (IPS)
Contrast ratio300:1 typical
Connector12-pin FPC, 0.5mm pitch
Connection typeCOG + FPC

Datasheet: HS20HS072RX datasheet

Source: LCSC/JLCPCB C5329582 — $3.70 (1+), $2.49 (100+), 1687 in stock.

Why this part:

  • Full RGB color — expressive Tamagotchi character (red angry, green happy, etc.)
  • 320x240 resolution — excellent detail for pixel art and text
  • IPS viewing angle — looks good from any direction (critical for handheld)
  • Runs entirely on 3.3V — no boost converter needed (unlike OLED panels needing 12V VCC)
  • ST7789 has first-class ESP-IDF support via built-in esp_lcd driver
  • $2.49 at volume with 1600+ stock — cheap and available
  • 12-pin FPC is simple to wire (vs 30-pin for OLED panels)
  • Backlight can be PWM-dimmed via MOSFET for power saving

FPC pinout:

PinSymbolDescription
1GNDPower ground
2CSChip select (active low)
3RS (DC)Data/command select
4SCLSPI clock
5SDASPI data (MOSI)
6RSTReset (active low)
7NCNo connect
8IOVCCI/O logic supply (3.3V)
9VCCPanel power supply (3.3V)
10ABacklight LED anode
11KBacklight LED cathode
12GNDPower ground

Backlight Dimming Circuit

Backlight driven from +BATT (3.7-4.2V) through 22Ω resistor + AO3400A N-ch MOSFET, PWM-controlled by ESP32.

Why +BATT instead of 3.3V: LEDs have Vf = 3.0V. Only 0.3V headroom from 3.3V — poor regulation. +BATT gives 0.7-1.2V headroom.

Circuit: +BATT → R (22Ω) → LED anode → LED cathode → MOSFET drain → GND, gate driven by DISP_BL GPIO.

Current at different battery voltages:

  • 4.2V (full): ~55mA | 3.7V (nominal): ~32mA | 3.4V (low): ~18mA

Firmware: PWM at 1kHz+. Sleep: SLPIN (0x10) + duty=0. Wake: duty>0 + SLPOUT (0x11), wait 120ms.

Firmware Graphics Library

Recommended: ESP-IDF native esp_lcd + LovyanGFX

  • esp_lcd provides the built-in ST7789 panel driver for SPI initialization
  • LovyanGFX provides sprite-based graphics, text rendering, and animations
  • LovyanGFX supports ESP-IDF natively (not Arduino-only)
  • Supports DMA transfers for background rendering
  • ST7789 sleep commands (SLPIN/SLPOUT) supported for power management
  • Alternative: LVGL if more complex UI widgets are needed later

Power Chain

USB-C → TP4056 (charger) → DW01A+FS8205A (protection) → ME6211 (3.3V LDO) → ESP32-S3 + display

Datasheets: TP4056 | DW01A | FS8205A | ME6211

Key design notes:

  • TP4056 charge current set by R205 (3kΩ → ~330mA charge rate)
  • DW01A+FS8205A: standard LiPo protection pair, back-to-back MOSFETs in battery ground path
  • ME6211 LDO: 100mV dropout — at low battery (<3.4V) output sags below 3.3V, acceptable for MVP
  • USB-C CC1/CC2 pull-downs: 5.1kΩ each for proper USB-C detection

Buttons

3 tactile switches with hardware debounce (10kΩ pull-up + 100nF cap per button). Active low, pressed = GND. Any button press wakes from deep sleep.

ButtonFunction
ApproveAccept approval/permission requests
RejectReject approval/permission requests
ActionContext-dependent: scroll, open menu, poke pet

Feedback

  • Debug LED (green 0603) — GPIO direct drive through 150Ω resistor. Dev/debug only.
  • Vibration motor (6mm coin, 3V) — AO3400A MOSFET driver + 1N5819W flyback diode. PWM-capable. Connected via solder pads.

Pin Assignment

Strapping pins to avoid: GPIO0 (boot mode), GPIO3 (JTAG source, floating), GPIO45 (VDD_SPI), GPIO46 (boot mode). These are sampled at reset and should not have external loads that could affect their default state during boot.

FunctionESP32-S3 GPIONotes
SPI Display
DISP_SCLKGPIO 12SPI clock
DISP_MOSIGPIO 11SPI data
DISP_CSGPIO 10Chip select
DISP_DCGPIO 9Data/command select
DISP_RSTGPIO 8Reset
DISP_BLGPIO 13PWM via MOSFET to backlight cathode
Buttons
BTN_APPROVEGPIO 4Pull-up, active low
BTN_REJECTGPIO 5Pull-up, active low
BTN_ACTIONGPIO 6Pull-up, active low
Feedback
LED_PWMGPIO 38PWM for brightness control
MOTOR_ENGPIO 37Via N-channel MOSFET
Power status
PWR_CHRGGPIO 18Low = charging
PWR_STDBYGPIO 17Low = charge complete
BAT_ADCGPIO 1Via voltage divider for battery level
Future (unused, reserved)
I2S BCLKGPIO 15For microphone (voice commands)
I2S WSGPIO 16For microphone
I2S DINGPIO 2For microphone (GPIO 17 used by PWR_STDBY)

Power Budget (estimated)

StateESP32-S3DisplayTotalBattery life (500mAh)
Active (WiFi on, display on, backlight 100%)~80 mA~60 mA~140 mA~3.6 hours
Idle (WiFi connected, backlight 25%)~20 mA~15 mA~35 mA~14 hours
Light sleep (WiFi off, backlight off, LCD sleep)~2 mA~0.03 mA~2 mA~250 hours
Deep sleep (everything off)~8 uA~30 uA~38 uA~1.5 years

Real-world usage will be a mix — display on for a few seconds when events arrive, then back to sleep. Expected practical battery life: 2-5 days with typical AI coding session activity.


Power Management Strategy

  1. Normal operation: WiFi connected, display off. ESP32 in light sleep between events.
  2. Event arrives (via WiFi): Wake up, turn on display, show status/approval, vibrate if needed.
  3. Approval request: Display stays on with countdown timer until user responds or timeout.
  4. No activity for N minutes: Enter deep sleep. Wake on any button press.
  5. Deep sleep: Everything off. Battery lasts weeks/months.
  6. Display auto-off: Display turns off after 30 seconds of no new events (configurable).

PCB Design Notes

  • Single PCB — power management and logic on one board
  • Power section (TP4056, ME6211, USB-C, battery connector) on one side, logic section (ESP32, display connector, buttons) on the other
  • Ground plane between sections
  • ESP32-S3-MINI-1 antenna keepout zone respected (no copper/ground under antenna area)
  • Display connects via 12-pin 0.5mm FPC cable (AFC01-S12FCA-00 connector)
  • USB-C connector: 16-pin mid-mount type with D+/D- connected to ESP32-S3 USB OTG pins for firmware updates and serial communication
  • Battery connector: JST-PH 2-pin SMD (standard for small LiPo, LCSC C7433648)
  • Test points: 3.3V, +BATT, GND, UART TX/RX

Enclosure

  • 3D printed (material TBD: PLA, ABS, or PETG)
  • Size determined after PCB layout and LiPo selection
  • Rough estimate: ~50 x 40 x 20mm (similar to original Tamagotchi)
  • Cutouts for: display window, 4 buttons, USB-C port, LED light pipe
  • Optional clip or lanyard hole for portability

Parts

66
QtyValueFootprintReferences
14TestPointTestPoint:TestPoint_Pad_D1.0mmTP101, TP104, TP105, TP201, TP202, TP203, TP204, TP205, TP206, TP207, TP208, TP501, TP502, TP504
5100nCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC102, C203, C501, C502, C504
510kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR101, R206, R501, R502, R504
51µCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC103, C204, C205, C301, C302
41kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR201, R202, R302, R402
2100kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR207, R208
210µCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC201, C202
25k1Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR203, R204
2AO3400Aeasyeda:SOT-23-3_L2.9-W1.3-P1.90-LS2.4-BRQ301, Q401
1150RResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR401
11N5819W S4_C42441798easyeda:SOD-123_L2.7-W1.6-LS3.7-RDD401
122RResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR301
122µCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC101
13kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR205
1AFC01-S12FCA-00easyeda:FPC-SMD_AFC01-S12FCA-00FPC301
1BTN_ACTIONButton_Switch_SMD:SW_Push_1P1T_XKB_TS-1187ASW501
1BTN_APPROVEButton_Switch_SMD:SW_Push_1P1T_XKB_TS-1187ASW502
1BTN_REJECTButton_Switch_SMD:SW_Push_1P1T_XKB_TS-1187ASW504
1Battery_connConnector_JST:JST_PH_S2B-PH-SM4-TB_1x02-1MP_P2.00mm_HorizontalJ202
1DW01APackage_TO_SOT_SMD:SOT-23-6U201
1ESP32-S3-MINI-1-N4R2RF_Module:ESP32-S2-MINI-1U101
1FC-1608G1-520easyeda:LED0603-RDD402
1FS8205A_C2830320easyeda:SOT-23-6_L2.9-W1.6-P0.95-LS2.8-BRQ201
1HS20HS072RXeasyeda:OLED-SMD_HS20HS072RXU301
1LOGOlibs:ghost_logoG***
1LOGOlibs:ghost_logo2G***
1ME6211C33M5Package_TO_SOT_SMD:SOT-23-5U203
1MotorConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical_SMD_Pin1RightJ401
1MountingHole_PadMountingHole:MountingHole_2.2mm_M2_DIN965_PadH101
1RxTestPoint:TestPoint_Pad_D1.0mmTP103
1TP4056-42-ESOP8Package_SO:SOIC-8-1EP_3.9x4.9mm_P1.27mm_EP2.41x3.3mm_ThermalViasU202
1TxTestPoint:TestPoint_Pad_D1.0mmTP102
1USB_C_Receptacle_USB2.0_16PConnector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12J201
1reset_btnButton_Switch_SMD:SW_Push_1P1T_XKB_TS-1187ASW101

Questions

How big is the Devotchi PCB?

It measures 45 × 50 mm and has 4 copper layers, 1.61 mm thick.

What parts does the Devotchi use?

66 parts, built around the ESP32-S3-MINI-1-N4R2, DW01A, HS20HS072RX and ME6211C33M5G-N. 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 Devotchi KiCad files?

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

Can I use the Devotchi 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 layers104 × 66 mmVallox rs485-controller, the printed circuit board in 3D

    Vallox rs485-controller

    Miroeilola/vallox-rs485-controller

    Replacement control panel for legacy Vallox SE ventilation units. Vallox DIGIT RS-485 protocol, bus-powered, ESP32, Home Assistant.

    65 parts
  • 2 layers30 × 65 mmDevboard, the printed circuit board in 3D

    Devboard

    dark-Phoenix2077/voidboard

    custom esp32 devboard with extensive power management and a built-in IMU

    44 parts
  • 2 layers48.1 × 90 mmEsp32-wavplayer final, the printed circuit board in 3D

    Esp32-wavplayer final

    eightdotz/esp32-wavplayer

    An ESP32 based MP3 Player that supports WAV

    117 parts
  • 2 layers93.5 × 75.5 mmNindo, the printed circuit board in 3D

    Nindo

    saptak70/Nindo-Handheld-gameboy-and-mp3-player--using-esp32

    A custom handheld device built from scratch — PCB, firmware, and enclosure. Plays NES/DOOM, streams audio to BT headphones.

    65 parts
  • 2 layersRoboterarm Fernbedienung, the printed circuit board in 3D

    Roboterarm Fernbedienung

    Witosworld/Roboterarm_Fernbedienung

    Robotarm controller with an IMU via ESP now.

    58 parts
  • 2 layersPanic button tiny, the printed circuit board in 3D

    Panic button tiny

    HenraL/panic_button

    This is an attempt at creating a box that aims to allow you to broacast your location to someone close like the other deivces (air tag, tile, etc) but as it is not a brand and uses the internet instead of ble and an…

    16 partsMIT
  • 2 layers35 × 100 mmWalkieTalkie, the printed circuit board in 3D

    WalkieTalkie

    GuzziFlipFlops/ESP32-Walkie-Talkie

    An open source ESPNOW based walkie talkie with a 600 meter tested distance, with an OLED and multiple buttons to interact with

    66 parts7MIT
  • 2 layers70 × 70 mmRecorder, the printed circuit board in 3D

    Recorder

    Yang-xy-svg/ESP_OpenMic

    This project is subject to the licence in the LICENCE file, and even if that says it is an open source project, you cannot sell boards or cases bearing the Andrews & Arnold Ltd name, the A&A logo, the registered…

    71 partsGPL-3.0