Beginner-friendly builds you can do with parts from the shop. Each guide lists exactly what you need — click [shop] to grab it. Don't want to wire it yourself? Add our preconfiguration service and we'll flash & test it before it ships.
Plug the ESP32 into your computer with a data USB cable. (Charge-only cables are the #1 cause of "nothing happens" — if unsure, try another cable.)
If the board isn't detected, install the USB-serial driver. Most boards use CP2102 (Silicon Labs) or CH340 — search that chip name + your OS, install, reboot.
The no-install path: open web.esphome.io in Chrome/Edge, click Connect, pick the serial port, then Install to flash ESPHome. (Great if you're heading toward Home Assistant.)
Prefer Arduino? Install the Arduino IDE → Preferences → add the ESP32 boards URL → Boards Manager → install "esp32" → select ESP32 Dev Module and your port → upload the Blink example.
Confirm it worked: the onboard LED blinks, or ESPHome shows logs streaming. You're live.
Troubleshooting
Port doesn't appear: wrong cable or missing driver — see step 2.
Upload fails / "connecting…….": hold the BOOT button while it starts uploading, release when it begins.
Garbled serial output: set the serial monitor baud rate to 115200.
Download and install Raspberry Pi Imager from raspberrypi.com.
Insert the microSD. In Imager: choose your device, then Raspberry Pi OS Lite (64-bit) for a headless server (no desktop).
Click the gear / Edit Settings button — this is the key step. Set: hostname (e.g. pi.local), enable SSH, set a username + password, and enter your Wi-Fi SSID, password, and country.
Write the image, then pop the card into the Pi and power it on. Wait ~90 seconds for first boot.
From your computer's terminal, connect over SSH:
ssh # use the username + hostname you set
ssh pi@pi.local
Once in, update everything:
sudo apt update && sudo apt full-upgrade -y
Troubleshooting
pi.local not found: find the Pi's IP in your router's device list and ssh user@192.168.x.x instead.
Won't join Wi-Fi: you must set the Wi-Fi country in Imager; also note Pi Zero/3 don't do 5GHz networks.
Lightning-bolt / low-voltage warning: use a proper PD supply, not a phone charger.
DHT22 DATA → GPIO4. (Most DHT22 breakout boards include the needed pull-up resistor. If yours is a bare sensor, add a 10kΩ resistor between DATA and 3V3.)
Firmware (ESPHome)
Flash the ESP32 with ESPHome (see guide 01), then use this config:
difficulty: intermediatetime: ~30 minneeds a good 5V supply
Turn the tiny ESP32-CAM into a live-streaming Wi-Fi camera you can view in any browser. The catch: it has no USB port, so you flash it through a USB-serial adapter (or an ESP32-CAM-MB carrier board).
A PIR sensor only sees motion — walk in, sit still, and the lights turn off. A mmWave radar (like the LD2410) detects that you're still present even when motionless. This build combines both for rock-solid room presence in Home Assistant.
Flash it, let Home Assistant auto-discover it, then use the Presence (radar) entity to keep lights on while you're sitting still — no more being plunged into darkness.
Troubleshooting
No radar data: double-check TX/RX aren't swapped and the baud rate is 256000.
Triggers from the next room: tune the LD2410's distance "gates"/sensitivity in its config or the official app.
PIR keeps re-triggering: adjust the time + sensitivity trimmer pots on the PIR module itself.