Hardware
Reference build
Section titled “Reference build”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.
| Part | Why | Approx. 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 Base | The 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 m | One 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.
Wiring
Section titled “Wiring”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.
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.
A note on F1/F2 vs F3/F4
Section titled “A note on F1/F2 vs F3/F4”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.
LED indicator
Section titled “LED indicator”The Atom’s onboard RGB LED is HeatSync’s primary at-a-glance status:
| Colour | State |
|---|---|
| White, 3× blink | Booting |
| Slow blue breath | Connecting to WiFi |
| Steady amber | WiFi config mode (captive portal) |
| Steady green | WiFi up, MQTT not configured |
| Slow cyan breath | Connecting to MQTT broker |
| Steady cyan | Everything healthy |
| Slow red breath | Heat-pump fault (errorCode != 0) |
| Fast red blink | Bus quiet > 60 s (cable or polarity issue) |
Mounting
Section titled “Mounting”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.