Presence (+Light) Sensor Case - ESP32-C3 SuperMini
Print Profile(2)


Description
Meet the ultimate guardian of light and presence: a compact, screw-free 3D-printed case housing a presence sensor that’s basically a tiny overachiever. Powered by an LD2450 and a BH1750, it keeps a vigilant eye on motion and light intensity like a miniature security guard who never sleeps.
At its core, the ESP32-C3 Supermini handles all the smarts—like a tiny wizard running ESPhome spells—without breaking a sweat. The whole setup is snug, sleek, and doesn’t need screws (because who has time for tiny hardware battles?). Just plug it in, let it live its best life, and enjoy a sensor that’s as compact as it is clever.
Warning: may cause sudden urges to automate everything in sight.
Features:
- Tiny but Mighty: Leverages the ESP32-C Supermini – soldering skills required!
- Presence Detection via 24Ghz Radar (not only distance, but also position and speed)
- Light intensity measurement
- ESPHome Powered: Can be integrated into homeassistant.
- Compact Design: 55mm x 38.8mm x 11mm
Parts list:
- ESP32-C Supermini (can be found on Aliexpress for example)
- LD2450 (and optional wires with connector - all can be found on Aliexpress for example)
- BH1750 ((can be found on Aliexpress for example))
- 4 small pieces of wire and 2 small pieces of heat-shrink tubing
- Double sided Tape (something like Tesa Nanotape worked for me)
- Ball joint mount e.g. this
Equipment:
- soldering iron
Soldering:
| ESP32 | LD-2450 | BH1750 |
| G | GND (yellow) | GND |
| 5V | 5V (black) | VCC |
| PIN 0 | SCL | |
| PIN 1 | SDA | |
| PIN 20 (RX) | TX (white) | |
| PIN 21 (TX) | RX (red) |
My ESPHome config:
esphome:
name: wohnzimmer-presence
friendly_name: wohnzimmer_presenceesp32:
variant: ESP32C3
board: esp32-c3-devkitm-1
framework:
type: esp-idf# Enable logging
logger:# Enable Home Assistant API
api:
encryption:
key: "whoopsdeletedit^^"ota:
- platform: esphome
password: "whoopsdeletedit^^"wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Wohnzimmer-Presence"
password: "whoopsdeletedit^^"captive_portal:
uart:
id: uart_bus
tx_pin: GPIO21
rx_pin: GPIO20
baud_rate: 256000i2c:
id: i2c_bus
sda: GPIO01
scl: GPIO00
scan: trueinterval:
- interval: 2s
then:
- switch.toggle: led
- logger.log: "LED toggling"ld2450:
id: ld2450_radar
uart_id: uart_busswitch:
- platform: gpio
pin:
number: 8
mode: output
id: led
- platform: ld2450
ld2450_id: ld2450_radar
bluetooth:
name: "Bluetooth"
multi_target:
name: "Multi Target Tracking"number:
- platform: ld2450
ld2450_id: ld2450_radar
presence_timeout:
name: "Timeout"
zone_1:
x1:
name: Zone-1 X1
y1:
name: Zone-1 Y1
x2:
name: Zone-1 X2
y2:
name: Zone-1 Y2
zone_2:
x1:
name: Zone-2 X1
y1:
name: Zone-2 Y1
x2:
name: Zone-2 X2
y2:
name: Zone-2 Y2
zone_3:
x1:
name: Zone-3 X1
y1:
name: Zone-3 Y1
x2:
name: Zone-3 X2
y2:
name: Zone-3 Y2sensor:
- platform: bh1750
name: "BH1750 Illuminance"
address: 0x23
update_interval: 10s
- platform: ld2450
ld2450_id: ld2450_radar
target_count:
name: Presence Target Count
- platform: ld2450
ld2450_id: ld2450_radar
still_target_count:
name: Still Target Count
- platform: ld2450
ld2450_id: ld2450_radar
moving_target_count:
name: Moving Target Count
- platform: ld2450
ld2450_id: ld2450_radar
target_1:
x:
name: Target-1 X
y:
name: Target-1 Y
speed:
name: Target-1 Speed
angle:
name: Target-1 Angle
distance:
name: Target-1 Distance
resolution:
name: Target-1 Resolution
target_2:
x:
name: Target-2 X
y:
name: Target-2 Y
speed:
name: Target-2 Speed
angle:
name: Target-2 Angle
distance:
name: Target-2 Distance
resolution:
name: Target-2 Resolution
target_3:
x:
name: Target-3 X
y:
name: Target-3 Y
speed:
name: Target-3 Speed
angle:
name: Target-3 Angle
distance:
name: Target-3 Distance
resolution:
name: Target-3 Resolution
zone_1:
target_count:
name: Zone-1 All Target Count
still_target_count:
name: Zone-1 Still Target Count
moving_target_count:
name: Zone-1 Moving Target Count
zone_2:
target_count:
name: Zone-2 All Target Count
still_target_count:
name: Zone-2 Still Target Count
moving_target_count:
name: Zone-2 Moving Target Count
zone_3:
target_count:
name: Zone-3 All Target Count
still_target_count:
name: Zone-3 Still Target Count
moving_target_count:
name: Zone-3 Moving Target Count












Comment & Rating (7)