Skip to content

Hardware

The whole HeatSync stack runs on a small ESP32 module that clips onto your heat pump’s indoor unit. Four wires off the indoor PCB terminal block — F1/F2 for the NASA bus, V1/V2 for 12 V power — into the Atomic RS485 Base. No mains adaptor.

PartWhyApprox. cost
M5Stack Atom S3 Lite (ESP32-S3)The MCU. WiFi + Bluetooth, 8 MB flash, status LED, native USB-C, fits in 24 mm cube.£10
M5Atomic RS485 BaseThe physical bus driver. Snaps onto the Atom; gives you A/B screw terminals for the F1/F2 signal pair plus a 12 V power input that accepts V1/V2 directly.£5
4-core cable (or two twin-cores), 2 mOne pair carries F1/F2 signal, the other carries V1/V2 power. Any low-voltage cable works — CAT5 is convenient (two of its pairs do the job), alarm cable fine.£2

No external USB-C power supply needed — see Power below.

BLE sensor support (Xiaomi LYWSD03MMC, Govee H5075) is on by default on the Atom S3 Lite build. Earlier 4 MB Atom Lite builds had to ship BLE off because NimBLE’s ~90 KB arena fragmented the heap below the ~70 KB peak mbedTLS needs for TLS — making weather / carbon-intensity / Octopus HTTPS calls unreliable. The Atom S3 Lite ports added a stream-parser for the carbon-intensity response so the body never has to fit alongside the handshake; with that change the heap budget tolerates BLE + HTTPS comfortably. See ADR-001 for the under-load measurements.

Samsung indoor units expose two terminal blocks you need to care about: F1 / F2 is the RS-485 NASA bus (signal), and V1 / V2 is the 12 V power rail. Four wires total off the indoor PCB into the Atomic RS485 Base — signal pair to A/B, power pair to the on-board 12 V input.

Heat pump indoor PCB F1 F2 V1 V2 Atomic RS485 Base A B +12 GND NASA bus (signal) 12 V power
Tap any terminal for what it carries. Connection lines animate to show pairing.

F1/F2 polarity: RS-485 is differential, so one orientation is correct and the other gives silence. Wire it up the convenient direction first. If bytesRx stays at 0 after boot (visible on the dashboard or /api/status), swap F1 and F2.

V1/V2 polarity: matters — V1 is the 12 V positive rail, V2 is ground. Match V1 → +12 and V2 → GND on the Atomic Base; if you swap them, the board won’t power on (no damage on a brief mis-wire, just no LED).

Daisy-chain notes: Samsung’s NASA bus is multi-drop. You can safely tap into the same F1/F2 as an existing controller (wired remote, SmartThings MIM gateway, etc.) by sharing the terminals — no termination resistor needed for a short stub. The V1/V2 rail has enough headroom for the Atom (~150 mA peak) on top of the wired remote.

Samsung’s heat pumps run two RS-485 buses, not one. F1/F2 is the operational bus between indoor and outdoor units — what HeatSync taps today. F3/F4 is a second bus between the wired remote and the indoor PCB, carrying user setpoints, installer FSV settings, and the room-temperature feedback to the wired remote’s display. On the MWR-WW10N at least, F3/F4 runs at the same 9600 8E1 line rate as F1/F2. Some FSV values (notably the heating-curve bounds and DHW hysteresis on at least one tested firmware) travel exclusively on F3/F4 and never appear on F1/F2 regardless of who asks. See the FSV explainer for the full architectural rationale.

Before connecting any new adapter to F3/F4, measure the bus voltage with a multimeter on DC mode. You should read 12-15 V DC across F3 and F4 on a residential EHS install. Some larger DVM-S systems use 24 V; even at 24 V the U094’s tolerance is fine, but it’s worth knowing what you’re plugging into.

Topology for Phase 0 (listen-only sniffing): tap the U094 in parallel with the existing F3 ↔ F4 run between the wired remote and the indoor PCB. Anywhere along that pair works; the back of the wired remote’s wall plate is usually easiest. Don’t add a third termination resistor — the remote and the indoor PCB each terminate the bus internally. Keep the stub from the splice to HeatSync’s U094 short (under 30 cm) to minimise reflections.

Topology for Phase 3+ (MITM transmit, future): the U094 sits in series between the wired remote and the indoor PCB, rewriting specific NASA frames in flight (see ADR-007). The same U094 covers both phases — you don’t re-buy hardware between Phase 0 and Phase 3.

The Atom is powered directly from the indoor unit’s V1 / V2 terminal — a regulated 12 V rail Samsung exposes alongside the F1/F2 signal pair. The Atomic Base’s onboard regulator drops it to 5 V for the Atom (~150 mA peak), well within what the indoor PCB can spare. No external USB-C supply needed — the four wires from the terminal block keep the device alive.

This is one of the practical wins of using both terminal pairs: the install is genuinely just the indoor terminal block — no second cable run to a mains adaptor, no orphan plug-pack hanging off the airing-cupboard wall.

The Atom’s onboard RGB LED is HeatSync’s primary at-a-glance status:

ColourState
White, 3× blinkBooting
Slow blue breathConnecting to WiFi
Steady amberWiFi config mode (captive portal)
Steady greenWiFi up, MQTT not configured
Slow cyan breathConnecting to MQTT broker
Steady cyanEverything healthy
Slow red breathHeat-pump fault (errorCode != 0)
Fast red blinkBus quiet > 60 s (cable or polarity issue)

Most installs sit the Atom next to the indoor unit (the brain of the heat pump, usually a wall-mount box with the wired remote on it). The Atomic RS485 Base is the small DIN-rail-compatible footprint; we use double-sided foam tape on a sheltered surface.

If your indoor unit is in a hot airing cupboard, the Atom is rated to 60 °C. Keep it on the cool side of any insulation.