AirMate IR build kit
Everything from our early AirMate IR design study: what it can do, the parts and where to buy them, the wiring, the real enclosure CAD, the firmware, the presence model and the app. Nothing here is a finished product yet; this is the prototype package we are building from.

Capabilities
What AirMate IR does
Knows if the room is really empty
24 GHz radar (Hi-Link LD2410C) sees moving and still people, including someone sitting or lying still, across 9 distance gates up to about 5 m and ±60°.
Controls your existing AC
Four 940 nm IR LEDs speak your AC’s remote protocol (built-in brand codes, or learned from your remote). Typical range ≈ 6–13 m straight ahead (calculated).
Measures the room
Sensirion SHT45: ±0.1 °C and ±1 %RH typical. Used for comfort, the heat-safety rule and the AC’s own thermostat.
Turns off only when it is sure
Off after the room has been empty for your delay; never off while anyone might be there; heat safety turns cooling back on.
Works with what you have
Home Assistant from day one (ESPHome), Matter planned for production. No cloud needed; no subscription.
Simple to install
USB-C 5 V. Sits on a desk stand or hangs on a wall facing the room and the AC.
What it can’t do
- Central ducted AC with a wall thermostat (no IR receiver)
- ACs with only mechanical knobs, or RF/Wi-Fi-only remotes
- ACs out of line of sight (another room, behind furniture)
How it works
One small board, four jobs
Sense → decide on the device → act → show it in your app. Everything runs locally; the radar’s own Bluetooth is switched off at first boot.
- 01
Sense
Radar gate energies (moving + still) and SHT45 temperature/humidity, every second.
- 02
Decide
ESP32 runs the presence rules and a small classifier: present, unsure (= present) or empty.
- 03
Act
After the empty delay, send your AC’s IR “off” (or restore your settings when someone returns).
- 04
Show
Home Assistant / Matter entities and the AirMate app: presence, comfort rules and run time.
Hardware
Prototype parts and where to buy
One breadboard set. We are buying three (two on the ESP32-C6, one on the ESP32-C3 for comparison). Prices checked 23 Oct 2026, before shipping and tax.
| Part | Qty | Unit | Buy from |
|---|---|---|---|
| ESP32-C6-DevKitC-1-N8 (8 MB) | 1 | $8.74S | DigiKey |
| ESP32-C3-DevKitM-1-N4X (comparison) | 1 | ~$9S | DigiKey |
| Hi-Link HLK-LD2410C 24 GHz radar | 2 | $4.19U | Tayda |
| Adafruit SHT45 breakout (5665) | 1 | $12.50V | Adafruit |
| STEMMA QT to header cable (4209) | 1 | $0.95V | Adafruit |
| Vishay TSOP38238 IR receiver | 2 | $1.95V | Adafruit |
| Vishay TSOP38438 IR receiver (A/B test) | 1 | $1.34V | LCSC |
| Vishay TSAL4400 3 mm IR LED, 940 nm | 6 | $0.46V | LCSC |
| Vishay TSAL6400 5 mm IR LED (range test) | 4 | $0.45V | LCSC |
| PN2222 NPN transistors, 10-pack | 1 | $1.95V | Adafruit |
| AO3400A MOSFET (PCB driver) | 5 | $0.09V | LCSC |
| 220 Ω resistors, 25-pack | 1 | $0.75V | Adafruit |
| 100 µF 16 V capacitors, 10-pack | 1 | $1.95V | Adafruit |
| Breadboard, 830 points | 2 | $5.95V | Adafruit |
| Jumper wires M/M, F/M, F/F | 3 | $1.95V | Adafruit |
| Male header strip 1 × 40 (radar pins) | 1 | $0.16V | LCSC |
| USB-C breakout (5 V rail) | 1 | $2.95V | Adafruit |
| Per set | ≈ $75 | ||
| Shared (buy once) | Price | Buy from |
|---|---|---|
| Resistor kit, 500 pcs | $9.95 | SparkFun |
| USB power meter (USB-A + C) | $24.95 | Adafruit |
| 3.3 V USB-to-serial cable (radar tool) | $9.95 | Adafruit |
≈ $271
for three complete prototype sets plus shared tools.
India: Robu and DigiKey India stock the dev kits; Probots lists the radar (₹495, check stock). UAE: order from DigiKey, Mouser or LCSC.
Put all LCSC lines in one order: shipping costs more than the parts.
V = price read on the store’s page or feed; S = official store, price via search (page blocked); U = marketplace price. Next stage: PCB v1 with an ESP32-C6-WROOM-1-N8 module, assembled at JLCPCB (≈ $15/board for 20, ≈ $11 for 100, estimated from public pricing). Full BOM with LCSC numbers below.
Wiring
Pin map
Strapping, USB and flash pins are avoided. The firmware uses exactly this map.
| Signal | ESP32-C6 | ESP32-C3 |
|---|---|---|
| IR transmit (RMT) → transistor → 4 IR LEDs | GPIO18 | GPIO4 |
| IR receive (TSOP38238 OUT) | GPIO19 | GPIO5 |
| Radar TX → ESP RX (UART, 256000 baud) | GPIO20 | GPIO6 |
| ESP TX → radar RX | GPIO21 | GPIO7 |
| I²C SDA / SCL (SHT45) | GPIO22 / GPIO23 | GPIO10 / GPIO3 |
| Status LED (on-board WS2812) | GPIO8 | GPIO8 |
| Button (never-auto-off / reset) | GPIO3 | GPIO1 |
| Radar OUT (optional) | GPIO2 | GPIO0 |
| Power: radar 5 V, sensors 3.3 V | 5V / 3V3 / GND | 5V / 3V3 / GND |
- IR driver: PN2222 on the breadboard (AO3400A MOSFET on the PCB); two LEDs per string with ≈ 23 Ω (two 47 Ω in parallel) for ≈ 100 mA pulses.
- Radar faces the room with only thin plastic in front (≈ 0.9 mm or ≈ 3.7 mm; never metal). SHT45 sits by the vents, away from the ESP32.
- Keep the ESP32 antenna at the board edge with copper kept clear; test Wi-Fi inside the closed case.
Enclosure
The real CAD
Compact 48 × 48 × 20 mm unit, one per AC, in two printed parts, with a 3 mm IR window insert, keyhole wall mount and desk stand. Generated from code, so every change is one parameter away.
Loading CAD…
Real CAD · drag to rotate · scroll to zoomReal CAD · swipe sideways
Downloads
Files to build it
Print the enclosure, flash the firmware and order parts with these files. Firmware and BOM are prototypes and not yet tested on hardware.
- Enclosure: front shellfront-shell.stlSTL · print face-down, white PETG, 0.2 mm, 5 walls
- Enclosure: back coverback-cover.stlSTL · keyhole wall slots, reset pinhole
- Desk standstand.stlSTL · 12° tilt, cable channel
- IR window insertir-window.dxfDXF · laser-cut 3 mm IR-transmitting black acrylic
- Prototype firmware (ESPHome)airmate-ir.yamlYAML · untested; flash with ESPHome
- Firmware secrets templatesecrets.example.yamlYAML · fill in your own values
- PCB v1 bill of materialsbom-v1.csvCSV · LCSC part numbers for JLCPCB
Software
Prototype firmware
ESPHome on the ESP32-C6: LD2410C radar with engineering-mode gate energies, SHT45, IR transmit and receive (learn your remote), an IR climate entity for your brand, and the presence state machine with away delay, night mode, never-auto-off and heat safety. Adopts straight into Home Assistant.
Written against the official ESPHome docs; not compiled yet.
Presence model
A small classifier on 33 features from the radar’s 9 gates (moving and still energy, rolling stats), time of day and temperature change. Trained on data from 10+ real rooms (empty, sleeping, reading, desk work, fans, curtains, pets), cross-validated by room, and tuned so it almost never calls a room empty when someone is there. Exported as weights for the device.
Training script ready; disabled until real room data is collected.
App and integrations
Home Assistant from day one; Matter (Room Air Conditioner, Thermostat for Google Home) in production firmware. The AirMate app adds setup, live presence, comfort rules and run-time insights.
Try the interactive appNext
From parts to 100 beta units
- Week 1Order the 3 prototype kits ($271 total) and print the enclosure.
- Weeks 2–4Breadboard build; flash the ESPHome firmware; control five real AC brands; log radar data.
- Week 3Choose the module (ESP32-C6 recommended) after measuring Matter + OTA flash use.
- Weeks 3–8Collect presence data in 10+ rooms; train the classifier; tune thresholds.
- Week 6Freeze PCB v1 (40 × 40 mm, 2 layers, compact unit) and order 20 assembled boards (≈ $15 each).
- Weeks 9–1020-unit alpha in team homes; then 100 beta units for the founding list.
Known risks we are testing first
- A very still sleeper the radar can’t see: night mode, “unsure = present” and never-auto-off guard against it.
- The radar faces the AC, so moving louvres and airflow need masking per gate.
- Long IR frames on the ESP32-C6 receiver, and confirming each command reached the AC.
- Wi-Fi range inside a small case, and the right thickness in front of the radar.
- Certification (FCC/CE, India radar approval) and the IR library licence for signed production firmware.
Follow the build