1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
# Heart-Shaped LED/OLED Device — Parts List
preliminary BOM, generated by claude from given requirements
## Design approach
- MCU: ATmega32U4 (native USB) — no separate USB-UART bridge needed, program directly over USB-C once bootloader is burned.
- Power: 3.3V system, LDO off a 1S LiPo, charged via MCP73831 from USB-C VBUS. No boost converter needed.
- Display: I2C SSD1306 OLED module (128x32 or 128x64) — smaller/higher-contrast than a 16x2 LCD, 2 data pins.
- LEDs: SK6812MINI-E or SK6805-EC15 addressable RGB, single data line around the heart perimeter, powered from raw battery rail (not the 3.3V logic rail).
## Power / USB-C / charging
| Qty | Part | KiCad symbol / footprint | Notes |
|---|---|---|---|
| 1 | USB-C receptacle (USB 2.0, 16-pin) | `Connector:USB_C_Receptacle_USB2.0_16P` / `Connector_USB:USB_C_Receptacle_GCT_USB4085` | Only VBUS, GND, D+/D-, CC1/CC2 needed |
| 2 | 5.1kΩ resistor | `Device:R` | CC1 & CC2 to GND — advertises 5V/default-current sink |
| 1 | MCP73831T-2ACI/OT | `Battery_Management:MCP73831-2-OT` (SOT-23-5) | Single-cell LiPo linear charger |
| 1 | Rprog resistor | `Device:R` | Sets charge current (2kΩ≈500mA, 4kΩ≈250mA) — match to cell mAh, ≤1C |
| 1 | Charge status LED + resistor (optional) | `Device:LED`, `Device:R` | On MCP73831 STAT pin |
| 1 | AP2112K-3.3 LDO | `Regulator_Linear:AP2112K-3.3` (SOT-23-5) | Battery → 3.3V logic rail |
| 2 | 1µF ceramic cap | `Device:C` | LDO in/out |
| 1 | JST-PH 2-pin battery connector | `Connector_JST:JST_PH_S2B-PH-K_1x02_P2.00mm_Vertical` | Match to cell purchased |
| 1 | Slide/power switch (optional) | `Switch:SW_SPDT` | Battery-side on/off only |
| 1 | 1S LiPo cell, 3.7V, with built-in protection PCB | — | Size to fit housing; buy a cell with protection built in |
## MCU
| Qty | Part | KiCad symbol / footprint | Notes |
|---|---|---|---|
| 1 | ATmega32U4-AU or -MU | `MCU_Microchip_ATmega:ATmega32U4-AU` (TQFP-44) or `-MU` (QFN-44) | Native USB |
| 1 | 8MHz crystal | `Device:Crystal` | 3.3V/8MHz config (like Pro Micro 3.3V) |
| 2 | 22pF cap | `Device:C` | Crystal load caps |
| 2 | 22Ω resistor | `Device:R` | Series on USB D+/D-, near MCU |
| 1 | 1µF cap | `Device:C` | UCap pin (internal USB regulator) |
| 1 | 10kΩ resistor | `Device:R` | Reset pull-up |
| 1 | Tactile switch | `Device:SW_Push` | Reset button |
| 1 | 100nF cap (optional) | `Device:C` | Reset debounce |
| 6-8 | 100nF cap | `Device:C` | Decoupling, one per VCC/AVCC pin |
| 1 | 4.7µF cap | `Device:C` | Bulk decoupling |
| 1 | 6-pin ISP header (2x3, 0.1") | `Connector_Generic:Conn_02x03_Odd_Even` | One-time bootloader burn via external ISP programmer |
## Display
| Qty | Part | Footprint | Notes |
|---|---|---|---|
| 1 | SSD1306 I2C OLED, 128x32 or 128x64, 0.91"/0.96" | Custom 4-pin 0.1" header footprint matching purchased breakout (not in official KiCad libs) | 128x32 fits ~2 lines of short text; 128x64 for bigger font |
| 2 | 4.7kΩ resistor | `Device:R` | I2C pull-ups, only if module doesn't already have them |
## LED perimeter ring
| Qty | Part | Footprint | Notes |
|---|---|---|---|
| ~20-30 | SK6812MINI-E (3.5x3.5mm) or SK6805-EC15 (1.5x1.5mm) | Custom pad pattern from datasheet (not in official KiCad libs) | Chain DOUT→DIN around perimeter; power from raw battery rail, data from 3.3V MCU pin |
| 1 | 330-470Ω resistor | `Device:R` | Series on data line into first LED |
| 1 | 100-220µF cap | `Device:CP` | Across LED power rail at chain start |
## Notes
- Keep LED power domain (raw battery, ~3.0-4.2V) separate from 3.3V logic rail — only the data line crosses.
- OLED module and addressable LEDs need hand-made footprints (simple pad patterns) once exact parts are chosen.
- ~20-30 LEDs at 8-10mm spacing works well for a ~2.5-3" wide heart outline.
|