BlindBot

Rendered from electronics/ELECTRONICS.md + docs/power-solar.md + docs/BOM.csv in the repository at build time. Estimates are labelled as such in the source; nothing on this page is a measured result unless it says so.

Versions A, B and C

All three share the heads, the XIAO ESP32C6 and the two ULN2003A drivers; they differ in how the controller box is powered. Compare them in the 3D model (switch A/B/C there).

A: USB-CB: Battery + USB-CC: Battery + solar + USB-C
Box base STL bbox (mm, as printed)63.1 × 39.6 × 11.457.6 × 47.6 × 21.757.6 × 47.6 × 21.7
Box lid STL bbox (mm, as printed)63.0 × 39.5 × 7.357.6 × 47.6 × 8.057.6 × 47.6 × 8.0
Parts only in this version
  • Resistor 330R 0.125 W (1 / 1)
  • LED 3 mm cool white diffuse (1 / 1)
  • USB-C receptacle breakout (5 V sink) 22 x 22 mm (1 / 1)
  • Resistor 5k1 0.6 W (2 / 2)
  • PTC polyfuse 0.5 A hold (1 / 1)
  • Adafruit bq25185 USB/DC/solar charger + 5 V TPS61023 boost with EN (29.21 x 19.05 mm) (1 / 1)
  • LiPo 3.7 V 2000 mAh 50 x 40 x 8 mm with protection PCB + JST-PH (1 / 1)
  • MCP1700-3302E 3.3 V 250 mA LDO TO-92 (Iq 1.6 uA) (1 / 1)
  • NTC thermistor 10k B3950 (1 / 1)
  • Resistor 1M 0.25 W (2 / 2)
  • Resistor 100k 0.25 W (1 / 1)
  • Adafruit bq25185 USB/DC/solar charger + 5 V TPS61023 boost with EN (29.21 x 19.05 mm) (1 / 1)
  • LiPo 3.7 V 2000 mAh 50 x 40 x 8 mm with protection PCB + JST-PH (1 / 1)
  • MCP1700-3302E 3.3 V 250 mA LDO TO-92 (Iq 1.6 uA) (1 / 1)
  • NTC thermistor 10k B3950 (1 / 1)
  • Resistor 1M 0.25 W (2 / 2)
  • Resistor 100k 0.25 W (1 / 1)
  • Polycrystalline solar panel 12 V 1.5 W 115 x 85 x 3 mm (166 mA at 9 V; solder pads) (1 / 1)
  • Schottky 1N5817 (optional) (0 / 0)
  • JST-PH 2-pin extension lead 500 mm (1 / 1)
Pane packnonenonepanel only, 12 V 1.5 W panel between the panes

Common to all versions: Seeed Studio XIAO ESP32C6 (pre-soldered headers); ULN2003A 7-channel Darlington array DIP-16; Electrolytic capacitor 470 uF 16 V 8 x 9 mm; Tact switch 6 x 6 x 4.3 mm; Perfboard FR2 70 x 50 mm; JST-PH 5-pin housing; JST-PH 5-pin header straight (top entry); JST-PH crimp contacts AWG28-22; 6-wire flat modular cable white 6.8 x 2.4 mm; 3M double-sided acrylic foam tape 12 mm; Printed cable clip (hardware/cad/cable_clip.scad); 28BYJ-48 5 V unipolar geared stepper (stock 5-wire); NBR O-ring 8 x 2 mm (70 Shore A); USB-C 5 V 3 A power supply with captive cable (white); Matt white PETG (close to RAL 9010) or ASA; TPU 95A.

Controller box A opened, with component keep-outs
Version A box, lid ghosted, keep-outs shown (OpenSCAD render).
Controller box C opened, with the LiPo cell under the board
Version C box: cell under the perfboard (B uses the same box without the panel lead).

From the electronics doc

0. Cost-down default build (round 5, 2026-10-17): 2x ULN2003A, versions A / B / C#

This section is the default build from round 5 on. §1-§2 and §4-§5 describe the TMC2209 build, kept as the quiet option (StealthChop, current limit, bipolar-modded motors). §10 is the old LiFePO4/BQ25570 study. Values are typical or estimated unless a source is given. Verify every board pinout against your parts.

Version Power Controller box (hardware/cad/ebox.scad)
A 5 V USB-C wall supply, always plugged in power_variant="usb"
B 2000 mAh 1S LiPo, charged over USB-C power_variant="battery"
C as B + 12 V 1.5 W panel between the panes (pane_pack.scad) power_variant="solar"

Common to all three: Seeed XIAO ESP32C6, 2x ULN2003A (DIP-16, one per motor) soldered on the perfboard, stock 5-wire 28BYJ-48 (no bipolar trace cut), one 5-pin JST-PH header per head, 6-wire flat cable to the head.

Pin maps, wiring and power paths for each version →

Energy, from the power budget (estimates)

C1. Move energy and daily load (2000 mAh LiPo, Thread sleepy device 150 uA)#

v0.3 TMC2209 v0.4 ULN2003A
1/2-turn move 0.58 mWh (2.5 s) 2.42 mWh (10 s)
daily re-home 1.31 mWh 6.99 mWh
load, 2 blinds x 4 moves/day 21.4 mWh/day 47.6 mWh/day
load, 2 blinds x 8 moves/day 26.0 mWh/day 66.9 mWh/day
battery-only life, 2 x 4 moves about 247 days about 122 days
battery-only life, 2 x 8 moves about 209 days about 88 days
battery-only life, 1 blind x 4 moves about 287 days about 179 days

The ULN build roughly halves battery-only life (version B). The cause is the 4x longer move at 3 rpm at full coil current, and the daily re-home at 2 rpm (about 30 % of the daily load is sleep, the rest is motion). If the coils really are 200 ohm (the motor listing's value) the motor power is about 0.16 W and the 2 x 4 load is about 26.0 mWh/day -> about 209 days. Measure one coil before trusting either figure. Levers if B is too short: re-home weekly instead of daily (saves about 12 mWh/day for 2 blinds), fewer moves, or the quiet TMC2209 option.

C2. Solar balance, version C (panel inter-pane on the outer pane = placement B, 2 x 4 moves, 47.6 mWh/day)#

December mean harvest into the cell minus load, and the lowest charge over 2015-2023 (PVGIS hourly):

Facade Dec net, no shade minimum charge Dec net, half shaded minimum charge empty days/yr
South +153 mWh/day 89 % +50 81 % 0
East -11 77 % -32 51 % 0
West -20 59 % -36 41 % 0
North -40 45 % -46 13 % 0
  • v0.3 (P124 + TMC2209) for comparison: South +248 mWh/day / 97 %, North 86 % unshaded.
  • At 2 x 8 moves (66.9 mWh/day) half-shaded North runs empty about 28 days a year; East/West stay above 12 %.
  • Room-side panel placement (behind the slats) is much weaker: South 77 %, East 29 %, West 23 %, North empty about 25 days/yr at 2 x 4 moves. Keep the panel between the panes.
  • June surplus is large everywhere (about +0.8 to +1.7 Wh/day), so the cell refills over the summer; the risk is the December-January deficit on East/West/North windows.
  • Cold: the charger only charges above 0 C (NTC on TS after the 6106 rework, ELECTRONICS.md §0.4). The cell stays in the room-side box, so the 0 C gate does not block winter charging.

Plot: docs/power_budget.png (v0.4). The 0.75x panel factor is the weakest number here: log one week of charge current on a south window before relying on the December figures.

C3. Fit (from the CAD echoes)#

Part Outer size Notes
Controller box A (ebox.scad, usb) 63.1 x 39.6 x 16.7 mm was 61.6 x 37.6 x 23.6
Controller box B / C (battery / solar, cell under the board) 57.6 x 47.6 x 27.2 mm was 65.6 x 47.6 x 34.6
Box B / C, cell_layout="beside" 111.6 x 47.6 x 16.9 mm flattest, longer
Pane pack panel_only (12 V panel) 87.8 x 117.8 mm, 3.7 mm (4.1 at the hooks) was 68.8 x 115.8 x 3.3
Pane pack with_cell 134.4 x 117.8 mm, 4.2 mm cell inter-pane only if needed

Heights inside the box use two ASSUMED component heights (terminal block 8.5 mm, mated JST-PH + wire bend 10 mm): tb_h and jst_h in ebox.scad.

Full power budget →