Advanced Arduino Builds: Custom Smart Home Devices to Make

Five advanced Arduino smart home projects for people who have already built the beginner sensors and want gear that off-the-shelf brands don't sell. Indoor air quality with PM2.5, mmWave presence detection, Bluetooth proxies, custom Zigbee nodes, and hardware lock controllers. Each one runs in my own home in 2026.

These projects assume you've finished the five beginner builds covered in the companion guide -- temperature logger, motion light, smart plug, contact sensor, soil moisture. If you haven't, do those first. The advanced projects below skip explanations of basic concepts like flashing ESPHome or wiring a breadboard.

The five devices you'll make in this guide:

  • Indoor air quality monitor with CO2, VOC, and PM2.5
  • mmWave radar presence detector
  • Bluetooth proxy for cheap BLE sensors
  • Custom Zigbee node for niche use cases
  • RFID-driven hardware lock controller

Project 1: Multi-Sensor Indoor Air Quality Monitor

This is the project that converts every visitor in my house into someone who wants one. The display reads CO2, total volatile organic compounds (VOC), PM2.5 particulate matter, temperature, and humidity on one small e-ink screen. When CO2 climbs over 1000 ppm in a closed room I open a window. The data goes back two years in InfluxDB.

Parts: ESP32 DevKit, Sensirion SCD41 (CO2), Sensirion SGP40 (VOC), Sensirion SPS30 (PM2.5), 2.9-inch e-ink display, 3D-printed enclosure. About 110 GBP total. Yes that's expensive. Commercial equivalents from Awair or IQAir start at 250 GBP and don't report locally.

All three Sensirion sensors share a single I2C bus. ESPHome's components for each sensor are mature, so the YAML config is around 80 lines that I won't paste here. The trick is the bus pullup resistors -- 4.7k between SDA/SCL and 3.3V are required if the bus length exceeds 30 cm.

The reason to build this versus buying is the data ownership. My monitor logs every 60 seconds to a local InfluxDB instance and visualises in Grafana. I can answer "when does my office CO2 cross 1000 ppm during work calls" with a Grafana query, which has changed how often I open the window. Commercial monitors either lock the data behind a subscription or refuse to expose it at all.

WHO guidance on indoor PM2.5 sits at 15 ug/m3 annual average and 25 ug/m3 daily; the WHO air quality guidelines explain the health rationale. My kitchen during pasta cooking hits 80 ug/m3 from steam alone, which surprised me until I started using the extractor fan.

Project 2: mmWave Radar Presence Detection

The biggest single improvement to my smart home automations was switching from PIR motion sensors to mmWave radar. PIR fires only on movement; mmWave detects whether anyone is in a room at all, including someone sitting still on a sofa.

Parts: ESP32, LD2410B mmWave sensor module, USB-C power. About 14 GBP. The LD2410 module is the same chip Aqara use in their FP1E presence sensor (60 GBP) but DIY-tunable.

ESPHome supports the LD2410 natively. The sensor outputs detection state plus distance in centimetres, sampled at sub-second intervals. The advantage over PIR is that someone reading a book on the sofa keeps the presence flag true; PIR would have dropped to off after 60 seconds and turned the lights down mid-sentence.

The downside is calibration. Mount the sensor too close to a metal radiator and you get false positives. Point it at a tumble dryer and the vibration confuses the chip. I run a 30-second debounce on every LD2410 input and limit detection range to a tuned per-room value (3.2m in the living room, 2.4m in the bedroom).

After six months of mmWave-driven automations I've removed every PIR sensor in the house except in the hallway where binary motion is all I need.

Project 3: Bluetooth Proxy for BLE Sensors

The cheapest reliable thermometer-hygrometers I've found are Govee H5075 units at about 8 GBP each. They use Bluetooth Low Energy and have a 10-metre range, which means one per floor isn't enough for a four-floor house. A Bluetooth proxy on an ESP32 receives the BLE advertisements and rebroadcasts them to Home Assistant over WiFi.

Parts: ESP32 DevKit, USB power, optional 3D-printed enclosure. About 8 GBP per proxy.

ESPHome's Bluetooth proxy component is a single YAML block plus the device address of each tracked BLE sensor. I have four proxies covering the flat -- one per room, all reporting all Govee thermometers in range. The result is uninterrupted temperature data across every room with no commercial sensor purchase beyond the original Govee units.

This is the project that finally turned cheap BLE sensors into reliable infrastructure. Govee H5075 thermometers cost a tenth of an Aqara temperature sensor and the Bluetooth proxy approach beats Zigbee on cost per coverage area once you have more than five rooms.

Project 4: Custom Zigbee Node with Zigbee2MQTT

This is the deepest project on the list and the one that took me the longest to finish properly. Building a custom Zigbee node means flashing Zigbee 3.0 firmware to an EFR32MG21 chip, writing a Zigbee2MQTT converter for the device's clusters, and pairing it to a Zigbee coordinator.

Parts: EFR32MG21 board (about 8 GBP), J-Link mini programmer (35 GBP, one-time), a coordinator like the Sonoff ZBDongle-E (28 GBP).

The use case is anywhere a commercial Zigbee sensor doesn't exist. My example is a Zigbee temperature sensor for a wine fridge -- no commercial product I trust enough at that humidity, but a custom EFR32 with a sealed DS18B20 probe and Zigbee 3.0 firmware has been running for 14 months reporting every five minutes on a single CR2450 battery.

The Zigbee2MQTT external converters documentation is the friend you need here. Without a converter the device pairs but reports raw cluster values that Home Assistant can't interpret. With a 40-line JS converter the device shows up as a clean temperature sensor with a battery percentage.

Project 5: Hardware Lock Controller

Important: this is a YMYL project. Anything that controls physical access to a building needs a fallback key, a tested fail-safe behaviour, and ideally a second person to review the wiring before deployment.

Parts: ESP32, MFRC522 RFID reader, micro servo or solenoid lock mechanism, a properly enclosed power supply. About 35 GBP excluding the lock mechanism.

The project is conceptually simple. RFID tag scanned -> ESP32 checks tag against a list -> if allowed, signal the servo or solenoid to release the latch. ESPHome handles the RFID component, the servo control, and the Home Assistant pairing. The complexity is in the audit log and the fail-safe behaviour.

My implementation logs every scan attempt to Home Assistant including unrecognised tags, fires a notification if three unknown tags scan within five minutes (likely a person trying random RFID cards), and falls back to a physical key if the ESP32 ever reboots while unlocking. The lock fail-safe behaviour matters because a power cut should not lock people inside.

I do not run this on my front door. It controls a network rack cabinet. The certifications and physical hardening required for a real door lock are outside the scope of any DIY build. Use a commercial deadbolt for the front door and DIY only for low-stakes access control.

Finishing: PCB Design and 3D-Printed Enclosures

Breadboards are for prototypes. Permanent installations need PCBs and enclosures. Two pieces of software cover both jobs:

KiCad is the free, open-source PCB design tool that has replaced Eagle in serious hobby use. The learning curve is steep for the first project and trivial for every project after. JLCPCB will fabricate five PCBs for around 4 GBP plus shipping in a week.

Fusion 360 (free for hobbyists) handles the 3D printing side. A simple enclosure that snaps onto a PCB takes about two hours to design and an hour to print on a Bambu Lab A1. The cost per enclosure is roughly 50p of PLA.

The progression most builders go through: prototype on breadboard -> migrate to perfboard -> design custom PCB -> design custom enclosure. Each step takes more time but the result looks and works like commercial gear, not a hacker project.

Putting It All Together

Six months of building advanced Arduino projects produces something interesting: a smart home that responds faster, costs less, and exposes more data than any commercial system in the same price range. My current setup runs across roughly 40 ESP32 and ESP8266 boards plus six custom Zigbee nodes, total hardware cost around 800 GBP over four years. Equivalent commercial gear (Aqara plus Hue plus Awair plus Yale) would have cost approximately 3500 GBP and given me a fraction of the data ownership.

The trade-off is time. Each advanced project takes 4-12 hours from start to finish, plus another 2-4 hours of fine-tuning over the following weeks. If your hourly rate is high enough that 10 hours of free time is worth more than the cash savings, buy commercial. If you enjoy the building and the independence is its own reward, advanced Arduino projects are some of the best smart home value available.

Start with the air quality monitor. It produces visible daily value within a week of deployment, teaches the I2C multi-sensor pattern that recurs in every future build, and reliably impresses anyone who sees the data dashboard.

Final Notes on Mistakes I Made Building These

A few hard-earned lessons from getting each project wrong at least once before getting it right. The first air-quality monitor I built used a shared 3.3V regulator that couldn't supply the SPS30 particulate sensor's peak current. Result: random reboots every few hours until I added a dedicated buck converter for the fan. Read every sensor's datasheet for peak current, not just nominal, before designing a power supply.

The first mmWave sensor I bought was a cheap clone from AliExpress that returned random presence values whenever a fluorescent tube was on within five metres. The genuine HiLink LD2410B at 6 GBP eliminated the problem entirely. Branded sensor chips from known manufacturers are worth the small markup over no-name clones.

The Bluetooth proxy project worked first time which surprised me. The only issue was placement -- a proxy behind a metal radiator covers half the range of the same hardware on a wooden shelf. Pre-test the BLE range with a phone app before committing to permanent placement.

The custom Zigbee project lost me an entire weekend the first time because I used a J-Link clone that subtly corrupted firmware writes. A genuine Segger J-Link mini at 35 GBP solved the issue immediately. Don't economise on programmers.

The lock controller passed early testing then failed two weeks later because the servo lacked the torque to release a 6mm deadbolt against the resistance of a slightly warped door frame. Servos need 50% more torque budget than the spec sheet implies once friction, temperature, and battery sag get involved. Buy bigger servos than you think you need for any mechanical project.