fixtSE
FixtSEFixtSE
en Englishes Espanol
Blog
Membresia
Tienda
Scribe
Acerca de
en Englishes Espanol
Blog
Membresia
Tienda
Scribe
Acerca de

Youtube
Instagram
RSS
Github
Membresia
Privacidad
Fixt•
Actualizado: Oct 23, 2025—8 min read

Sensor de presencia mmWave DIY con ESPHome para principiantes

Escrito por: Fixt

Si estas suscrito al canal
inicia sesion con tu cuenta de Google para acceder a la experiencia de tutorial inteligente.

Tabla de contenidos
Requisitos previosEspecificaciones del sensor HLK-LD2450Carcasa DIY para sensor fixtSERemixesClip para la parte superiorMMwave Multi Sensor fixtSE LD2450Cómo cablearloFirmware ESPHomeArchivos YAMLCómo crear zonasHLKRadarToolCómo usarlo en tu dashboardGráfico PlotlyCómo automatizar con él

Destacados

Relacionados

Etiquetas

Home-Assistant
ESPHome
Dashboard
Tutorial
Detección-de-presencia
Sensor

Si te gusta mi trabajo, considera apoyarme en Ko-fi.

← Volver al blog

Etiquetas

Home-Assistant
ESPHome
Dashboard
Tutorial
Detección-de-presencia
Sensor
← Volver al blog

Destacados

Relacionados

Etiquetas

Home-Assistant
ESPHome
Dashboard
Tutorial
Detección-de-presencia
Sensor
Sensor mmWave
Parte trasera
Carcasa del ESP32
Interior

Requisitos previos
#

Usar los enlaces de afiliado de abajo ayuda a apoyar el canal y todo el contenido que creo 🎉🙌
  • Placa de desarrollo ESP32 de 30 pines
    • Amazon: (paquete de 3)
    • Aliexpress: (USB C)
  • Sensor de radar mmWave HLK-LD2450
    • Amazon: (Kit HLK-LD2450)
    • Aliexpress: (Kit HLK-LD2450)
      • Opción 1
      • Opción 2
Opcional
  • Cable Dupont
    • Amazon: (Cable Dupont hembra a hembra)
    • Aliexpress: (Cable Dupont hembra a hembra)
  • Cable USB C
    • Amazon: (Cable USB C JSAUX [2-Pack 6.6ft])
    • Aliexpress: (Cable USB C)
  • Cargador 5v
    • Amazon: (Paquete de 2)
    • Aliexpress: (Cargador 5v)

Especificaciones del sensor HLK-LD2450
#

Parte trasera
  • Frecuencia: 24 GHz (banda ISM)
  • Tipo de sensor: Radar de ondas milimétricas
  • Rango de detección: Hasta 6 metros (aproximadamente 8 metros en términos prácticos)
  • Tamaño del módulo: Ultrapequeño, mide 15mm x 44mm
  • Ángulo de detección: ±60°
  • Ángulo de inclinación: ±35°
Además, el sensor HLK-LD2450 admite las siguientes funciones:
  • Localización y seguimiento precisos de objetivos en movimiento: Distancia, ángulo y velocidad.
  • Zonas configurables: Te permite definir hasta 3 zonas configurables para monitoreo.
  • Múltiples opciones de conexión: Puedes conectarlo usando interfaces de pines y conectores.
  • Firmware con algoritmo inteligente: Utiliza formas de onda FMCW y tecnología avanzada de procesamiento de señales.

Carcasa DIY para sensor fixtSE
#

Seguiré agregando más sensores a esta carcasa, así que también podrás usarla para otros proyectos. 🛠️
Puedes conseguirla en:

O pedirla desde:

Ahorra $5 en tu primer pedido usando nuestro enlace: https://pcbway.com/g/lHR6if

Remixes
#

Clip para la parte superior
#

Clip
checkleylane hizo un clip para sujetar la parte superior de la carcasa original
Puedes conseguirlo en:

MMwave Multi Sensor fixtSE LD2450
#

Carcasa rediseñada
F-Square hizo una nueva carcasa para este proyecto, con muchas mejoras:
  • Reorganizó los sensores dentro de la carcasa (ahora la carcasa puede mirar hacia arriba, en lugar de hacia abajo).
  • Agregó tornillos M3, para que el cuerpo pueda mantenerse en su lugar fácilmente.
Puedes conseguirla en:

Cómo cablearlo
#

Cableado
Placa ESP32HLK-LD2450
VIN5v
TX2RX
RX2TX
GNDGND

Firmware ESPHome
#

Firmware actualizado a ESPHome 2024.12.4
Se agregó soporte OTA

Archivos YAML
#

Cómo crear zonas
#

HLKRadarTool
#

Cómo usarlo en tu dashboard
#

Gráfico Plotly
#

Por dbuezas
Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.
Solo reemplaza mmwave_sensor con el nombre de tu sensor. Ej: mmwave_sensor_aac3 o mmwave_sensor_no_aac3 según el firmware que hayas flasheado.
FirmwareNombre del sensor
Con Bluetooth Proxymmwave_sensor
Sin Bluetooth Proxymmwave_sensor_no

Tarjeta personalizada

type: custom:plotly-graph
title: mmWave Radar Sensor
refresh_interval: 1
hours_to_show: current_day
layout:
  height: 230
  margin:
    l: 50
    r: 20
    t: 20
    b: 40
  showlegend: true
  xaxis:
    dtick: 100
    gridcolor: RGBA(200,200,200,0.15)
    zerolinecolor: RGBA(200,200,200,0.15)
    type: number
    fixedrange: true
    range:
      - 400
      - -400




















































































































































Cómo automatizar con él
#

💡𐂷 Luz con sensor
Por Blacky
Documentación aquí
Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.
yaxis
:
dtick: 100
gridcolor: RGBA(200,200,200,0.15)
zerolinecolor: RGBA(200,200,200,0.15)
scaleanchor: x
scaleratio: 1
fixedrange: true
range:
- 600
- 0
entities:
- entity: ''
name: Target1
marker:
size: 12
line:
shape: spline
width: 5
x:
- $ex hass.states["sensor.mmwave_sensor_target_1_x"].state /-10
'y':
- $ex hass.states["sensor.mmwave_sensor_target_1_y"].state /10
- entity: ''
name: Target2
marker:
size: 12
line:
shape: spline
width: 5
x:
- $ex hass.states["sensor.mmwave_sensor_target_2_x"].state /-10
'y':
- $ex hass.states["sensor.mmwave_sensor_target_2_y"].state /10
- entity: ''
name: Target3
marker:
size: 12
line:
shape: spline
width: 5
x:
- $ex hass.states["sensor.mmwave_sensor_target_3_x"].state /-10
'y':
- $ex hass.states["sensor.mmwave_sensor_target_3_y"].state /10
- entity: ''
name: Zone1
mode: lines
fill: toself
fillcolor: RGBA(20,200,0,0.1)
line:
color: RGBA(20,200,0,0.2)
shape: line
width: 2
x:
- $ex hass.states["number.mmwave_sensor_zone_1_x1"].state /-10
- $ex hass.states["number.mmwave_sensor_zone_1_x1"].state /-10
- $ex hass.states["number.mmwave_sensor_zone_1_x2"].state /-10
- $ex hass.states["number.mmwave_sensor_zone_1_x2"].state /-10
- $ex hass.states["number.mmwave_sensor_zone_1_x1"].state /-10
'y':
- $ex hass.states["number.mmwave_sensor_zone_1_y1"].state /10
- $ex hass.states["number.mmwave_sensor_zone_1_y2"].state /10
- $ex hass.states["number.mmwave_sensor_zone_1_y2"].state /10
- $ex hass.states["number.mmwave_sensor_zone_1_y1"].state /10
- $ex hass.states["number.mmwave_sensor_zone_1_y1"].state /10
- entity: ''
name: Zone2
mode: lines
fill: toself
fillcolor: RGBA(200,0,255,0.1)
line:
color: RGBA(200,0,255,0.2)
shape: line
width: 2
x:
- $ex hass.states["number.mmwave_sensor_zone_2_x1"].state /-10
- $ex hass.states["number.mmwave_sensor_zone_2_x1"].state /-10
- $ex hass.states["number.mmwave_sensor_zone_2_x2"].state /-10
- $ex hass.states["number.mmwave_sensor_zone_2_x2"].state /-10
- $ex hass.states["number.mmwave_sensor_zone_2_x1"].state /-10
'y':
- $ex hass.states["number.mmwave_sensor_zone_2_y1"].state /10
- $ex hass.states["number.mmwave_sensor_zone_2_y2"].state /10
- $ex hass.states["number.mmwave_sensor_zone_2_y2"].state /10
- $ex hass.states["number.mmwave_sensor_zone_2_y1"].state /10
- $ex hass.states["number.mmwave_sensor_zone_2_y1"].state /10
- entity: ''
name: Zone3
mode: lines
fill: toself
fillcolor: RGBA(200,120,55,0.1)
line:
color: RGBA(200,120,55,0.2)
shape: line
width: 2
x:
- $ex hass.states["number.mmwave_sensor_zone_3_x1"].state /-10
- $ex hass.states["number.mmwave_sensor_zone_3_x1"].state /-10
- $ex hass.states["number.mmwave_sensor_zone_3_x2"].state /-10
- $ex hass.states["number.mmwave_sensor_zone_3_x2"].state /-10
- $ex hass.states["number.mmwave_sensor_zone_3_x1"].state /-10
'y':
- $ex hass.states["number.mmwave_sensor_zone_3_y1"].state /10
- $ex hass.states["number.mmwave_sensor_zone_3_y2"].state /10
- $ex hass.states["number.mmwave_sensor_zone_3_y2"].state /10
- $ex hass.states["number.mmwave_sensor_zone_3_y1"].state /10
- $ex hass.states["number.mmwave_sensor_zone_3_y1"].state /10
- entity: ''
name: Coverage
mode: lines
fill: tonexty
fillcolor: rgba(168, 216, 234, 0.15)
line:
shape: line
width: 1
dash: dot
x:
- 0
- $ex 600 * Math.sin((2 * Math.PI)/360 * 60)
- 450
- 400
- 300
- 200
- 100
- 0
- -100
- -200
- -300
- -400
- -450
- $ex -600 * Math.sin((2 * Math.PI)/360 * 60)
- 0
'y':
- 0
- $ex 600 * Math.cos((2 * Math.PI)/360 * 60)
- $ex Math.sqrt( 600**2 - 450**2 )
- $ex Math.sqrt( 600**2 - 400**2 )
- $ex Math.sqrt( 600**2 - 300**2 )
- $ex Math.sqrt( 600**2 - 200**2 )
- $ex Math.sqrt( 600**2 - 100**2 )
- 600
- $ex Math.sqrt( 600**2 - 100**2 )
- $ex Math.sqrt( 600**2 - 200**2 )
- $ex Math.sqrt( 600**2 - 300**2 )
- $ex Math.sqrt( 600**2 - 400**2 )
- $ex Math.sqrt( 600**2 - 450**2 )
- $ex 600 * Math.cos((2 * Math.PI)/360 * 60)
- 0
raw_plotly_config: true
YouTube Subscriber Access
FIRMWARE

YouTube Subscriber Benefit

This firmware is free for all our YouTube subscribers!

Log in with your Google account to access it on our website.

Subscribe to our channel

💡 Validation Tip

If you have trouble with this feature, make sure your subscription list is public in your YouTube settings, under "Privacy".

Shop Content
YAML
TinkererFree
Member Banner

Available in our Store! Or, join the Tinkerer or Automation Hero tier to access our latest Shop Content for FREE!

  • Your support is invaluable in allowing us to continue creating the tutorials you like 😁🏠🎉
  • Click on the Patreon button below to become a member, and then log in with your Patreon Account on our website.