Det ultimate smarte nærværslyset
Slutt å vifte med armene i mørket. Tradisjonelle PIR-sensorer er supre til å oppdage en gående person, men de svikter når du sitter i sofaen og leser eller jobber ved skrivebordet ditt.
Slutt å vifte med armene i mørket. Tradisjonelle PIR-sensorer er supre til å oppdage en gående person, men de svikter når du sitter i sofaen og leser eller jobber ved skrivebordet ditt. Dette prosjektet bruker 24 GHz mmWave-radar for å oppdage «mikrobevegelser» som pust, slik at smartlysene dine holder seg på så lenge du er i rommet.
Maskinvarematrise
Hjernen
Tilstedeværelsessensoren
Lyssensor (Valgfritt)
Koblingsskjema
- VCC (Sensor) → 5V (ESP32)
- GND (Sensor) → GND (ESP32)
- TX (Sensor) → GPIO 21 (ESP32)
- RX (Sensor) → GPIO 20 (ESP32)

Kode
Vi anbefaler å bruke ESPHome til dette prosjektet, siden det har innebygd støtte for LD2410.
# Simple Presence Detection Config
uart:
id: uart_bus
tx_pin: GPIO20
rx_pin: GPIO21
baud_rate: 256000
ld2410:
binary_sensor:
- platform: ld2410
has_target:
name: "Presence Detected"
has_moving_target:
name: "Moving Target"
has_still_target:
name: "Still Target"#include <ld2410.h>
// Use Hardware Serial 1 for the sensor (ESP32)
// Connect Sensor TX to ESP32 RX (GPIO 21)
// Connect Sensor RX to ESP32 TX (GPIO 20)
#define MONITOR_SERIAL Serial
#define RADAR_SERIAL Serial1
#define RADAR_RX_PIN 21
#define RADAR_TX_PIN 20
ld2410 radar;
void setup() {
MONITOR_SERIAL.begin(115200);
// Initialize radar serial
RADAR_SERIAL.begin(256000, SERIAL_8N1, RADAR_RX_PIN, RADAR_TX_PIN);
MONITOR_SERIAL.println(F("\nFibel.no: Nærværssensor starter..."));
if (radar.begin(RADAR_SERIAL)) {
MONITOR_SERIAL.println(F("LD2410 funnet og klar!"));
} else {
MONITOR_SERIAL.println(F("Kunne ikke finne LD2410. Sjekk kabling."));
}
}
void loop() {
radar.read(); // Continuous reading
if (radar.isConnected()) {
if (radar.presenceDetected()) {
MONITOR_SERIAL.print(F("Tilstedeværelse oppdaget! "));
if (radar.stationaryTargetDetected()) {
MONITOR_SERIAL.print(F("Stasjonært mål funnet på "));
MONITOR_SERIAL.print(radar.stationaryTargetDistance());
MONITOR_SERIAL.println(F(" cm"));
}
} else {
MONITOR_SERIAL.println(F("Ingen i rommet."));
}
}
delay(200); // Small delay for readability in Serial Monitor
}from machine import UART, Pin
import time
# Initialize UART on the ESP32-C3
# TX=20, RX=21, Baud=256000
uart = UART(1, baudrate=256000, tx=20, rx=21)
print("Fibel.no: Nærværssensor (MicroPython) starter...")
def parse_ld2410(data):
# Basic frame check for LD2410 (simplified)
# Header: F4 F3 F2 F1 | Tail: F8 F7 F6 F5
if len(data) >= 23 and data[0] == 0xF4:
# Byte 13 contains target status
# 0x00: No target, 0x01: Moving, 0x02: Stationary, 0x03: Both
status = data[13]
if status > 0:
return True
return False
while True:
if uart.any():
raw_data = uart.read()
if parse_ld2410(raw_data):
print("Tilstedeværelse oppdaget!")
else:
print("Rommet er tomt.")
time.sleep(0.5)Hvorfor dette settet?
Ved å velge LD2410C får du en sensor som fungerer gjennom plastinnkapslinger, noe som gjør den perfekt for et «skjult» smarthjemoppsett. Koble den til Home Assistant for å utløse dine eksisterende smartpærer eller en LED-stripe.
