Comenzando con el Kit de Sensor de Detección de Respiración y Latidos de 60GHz mmWave con XIAO ESP32C6 (MR60BHA2)

Presentamos nuestros avanzados Módulos de Sensor mmWave para XIAO, diseñados para proporcionar soluciones de monitoreo de vanguardia tanto para detección de caídas como para monitoreo de latidos cardíacos. Impulsados por el robusto microcontrolador XIAO ESP32 con conectividad Wi-Fi y Bluetooth integrada, estos módulos ofrecen capacidades de detección precisas y confiables. Ya sea que necesites monitorear caídas en tiempo real o rastrear latidos cardíacos con precisión sensible, nuestros módulos están equipados con tecnología de última generación, incluyendo LEDs RGB personalizables y detección de luz ambiente. Con opciones de expansión fáciles a través de puertos Grove GPIO, estos módulos versátiles son perfectos para una amplia gama de aplicaciones, desde integración de hogar inteligente hasta monitoreo de salud.
Características
- Wi-Fi y Bluetooth Habilitados: Ambos módulos están impulsados por XIAO ESP32 con firmware ESPHome pre-cargado, asegurando configuración rápida y personalización.
- Módulo de Detección de Latidos:
- Monitoreo Sensible de Latidos: Detecta latidos cardíacos desde hasta 1.5 metros.
- Detección de Presencia Estática: Monitorea individuos estacionarios hasta 6 metros de distancia.
- Detección Ambiental:
- Sensor de Luz BH1750: Mide la luz ambiente de 1 a 65,535 lux.
- LED RGB WS2812: LED personalizable para retroalimentación visual y proyectos DIY.
- Conectividad Expandible: Incluye puertos Grove GPIO para agregar sensores y módulos adicionales.
Especificaciones
Parámetros Generales | |
---|---|
Firmware mmWave | Detección de Respiración y Latidos |
Rango de Detección | Detección de Presencia Estática Humana: hasta 6 Metros Detección de Respiración y Latidos: 1.5 Metros |
MCU | Seeed Studio XIAO ESP32C6 |
LED | LED RGB WS2812 |
Botón | Reinicio |
Sensor de Luz | BH1750 Rango: 1 a 65,535 lux con mediciones ajustables hasta 100,000 lux |
Conectividad | 1 Puerto GPIO (D0, D10) |
Espaciado de Pines | 2.54mm |
Fuente de Alimentación | Entrada 5V/1A |
Consumo de energía | 0.5w: Modo Standby 0.8w: Modo Activación 1.4w: trabajo con estado Grove Relay |
Aplicación
- Sistemas de Seguridad
- Monitoreo de Salud
- Automatización de Hogar Inteligente
- Cuidado de Ancianos
Descripción del Hardware

Comenzando
Método de instalación y rango de detección
Método 1. Montaje lateral, se recomienda que la altura de instalación del radar sea consistente con la altura del pecho de la persona que se está midiendo, y la posición del módulo y la posición del pecho ≤ 1.5m


Método 2. Instalación inclinada. Para necesidades de detección de respiración y frecuencia cardíaca durante el sueño, se puede adoptar un método de instalación inclinada. Se requiere que el radar se instale a una altura de 1m directamente sobre la cabecera de la cama, inclinado hacia abajo a 45° hacia el medio de la cama, y la distancia entre el radar y la cavidad torácica se controle para que esté dentro de 1.5m. La dirección normal del radar se alinea con la posición de detección principal para asegurar que el radar pueda detectar datos respiratorios y de latidos cardíacos.

Por favor usa este módulo en un espacio abierto, y mantente fuera de los siguientes escenarios dentro del rango de detección para prevenir interferencia con el módulo:
- Múltiples radares instalados demasiado cerca entre sí
- El viento mueve cortinas y balancea plantas
- Flujo de agua y película de agua
- Grandes áreas de reflexiones metálicas y de espejos
- Detección a través de vidrio y tableros de madera delgados
- Ubicación de instalación propensa a vibraciones
- Uso de fuentes de alimentación de baja calidad
Preparación del Software (Arduino)
Por defecto, el MR60BHA2 viene pre-ensamblado con el XIAO ESP32C6, pero es compatible con varios otros microcontroladores para comunicación e integración.
Si esta es tu primera vez usando Arduino con la serie XIAO, sigue la guía de configuración apropiada para tu placa:
- XIAO ESP32S3: Consulta la Guía de Inicio de XIAO ESP32S3.
- XIAO ESP32C3: Sigue la guía Comenzando con Seeed Studio XIAO ESP32C3.
- XIAO ESP32C6: Sigue la guía Comenzando con Seeed Studio XIAO ESP32C6.
Una vez que tu placa esté configurada, procede con los siguientes pasos:
-
Descarga la Librería Seeed mmWave:
- Descarga la librería Seeed mmWave desde GitHub.
- Instala la Librería en Arduino IDE:
- Abre el Arduino IDE.
- Navega a Sketch > Incluir Librería > Añadir Librería .ZIP....
- Selecciona el archivo
.zip
descargado para instalar la librería.
- Conecta tu Placa XIAO:
- Conecta tu placa XIAO a tu computadora vía USB.
- En el Arduino IDE, ve a Herramientas > Placa y selecciona tu modelo de placa XIAO.
- Elige el puerto correcto bajo Herramientas > Puerto.
- Carga un Sketch de Ejemplo:
- Ve a Archivo > Ejemplos > Seeed Arduino mmWave.
- Selecciona el ejemplo relevante para Detección de Latidos.
- Revisa el código y haz cualquier ajuste necesario.
- Sube el Sketch:
- Haz clic en Subir para cargar el código a tu placa XIAO.
- Abre el Monitor Serie en el Arduino IDE para ver los datos del sensor en tiempo real.
Uso
Esta sección proporciona fragmentos de código de ejemplo para ayudarte a comenzar rápidamente usando la Librería Seeed Arduino mmWave con varias funcionalidades, incluyendo monitoreo de respiración, control de LED RGB y detección de luz.
Módulo de Respiración
Este ejemplo demuestra cómo usar el sensor MR60BHA2 para monitorear respiración y latidos cardíacos.
#include <Arduino.h>
#include "Seeed_Arduino_mmWave.h"
// Set up serial communication depending on the board type
#ifdef ESP32
# include <HardwareSerial.h>
HardwareSerial mmWaveSerial(0);
#else
# define mmWaveSerial Serial1
#endif
SEEED_MR60BHA2 mmWave;
void setup() {
Serial.begin(115200);
mmWave.begin(&mmWaveSerial);
}
void loop() {
if (mmWave.update(100)) {
float total_phase, breath_phase, heart_phase;
if (mmWave.getHeartBreathPhases(total_phase, breath_phase, heart_phase)) {
Serial.printf("total_phase: %.2f\t", total_phase);
Serial.printf("breath_phase: %.2f\t", breath_phase);
Serial.printf("heart_phase: %.2f\n", heart_phase);
}
float breath_rate;
if (mmWave.getBreathRate(breath_rate)) {
Serial.printf("breath_rate: %.2f\n", breath_rate);
}
float heart_rate;
if (mmWave.getHeartRate(heart_rate)) {
Serial.printf("heart_rate: %.2f\n", heart_rate);
}
float distance;
if (mmWave.getDistance(distance)) {
Serial.printf("distance: %.2f\n", distance);
}
}
}
La salida será la siguiente en el Monitor Serie de Arduino:

Si los datos devueltos no son 0
, indica la existencia de un ser vivo dentro del rango de detección.
Detección Humana
Este ejemplo demuestra cómo usar el sensor MR60BHA2 para la detección humana.
Por favor, asegúrate de haber actualizado el firmware del módulo MR60BHA2 a la última versión.
El firmware más reciente añade detección de presencia humana y funciones relacionadas con objetos humanos.
#include <Arduino.h>
#include "Seeed_Arduino_mmWave.h"
// If the board is an ESP32, include the HardwareSerial library and create a
// HardwareSerial object for the mmWave serial communication
#ifdef ESP32
# include <HardwareSerial.h>
HardwareSerial mmWaveSerial(0);
#else
// Otherwise, define mmWaveSerial as Serial1
# define mmWaveSerial Serial1
#endif
SEEED_MR60BHA2 mmWave;
void setup() {
Serial.begin(115200);
mmWave.begin(&mmWaveSerial);
}
void loop() {
if (mmWave.update(100)) {
if (mmWave.isHumanDetected()) {
Serial.printf("-----Human Detected-----\n");
}
PeopleCounting target_info;
if (mmWave.getPeopleCountingTargetInfo(target_info)) {
Serial.printf("-----Got Target Info-----\n");
Serial.printf("Number of targets: %zu\n", target_info.targets.size());
for (size_t i = 0; i < target_info.targets.size(); i++) {
const auto& target = target_info.targets[i];
Serial.printf("Target %zu:\n", i + 1);
Serial.printf(" x_point: %.2f\n", target.x_point);
Serial.printf(" y_point: %.2f\n", target.y_point);
Serial.printf(" dop_index: %d\n", target.dop_index);
Serial.printf(" cluster_index: %d\n", target.cluster_index);
Serial.printf(" move_speed: %.2f cm/s\n", target.dop_index * RANGE_STEP);
}
}
// delay(500);
}
}
La salida será la siguiente en el Monitor Serie de Arduino:

La respiración y la frecuencia cardíaca se pueden detectar dentro de 1.5 metros, y la presencia se puede detectar dentro de un rango de 1.5 a 6 metros.
Cuando hay personas dentro del rango de 1.5M, el módulo entrará en el modo de detección de latidos y respiración.
En este modo, la sensibilidad de la función de detección humana puede disminuir.
Parpadear LED RGB
Este ejemplo demuestra cómo controlar un LED RGB usando la biblioteca NeoPixel.
- Paso 1. Descargar la biblioteca
Adafruit_NeoPixel
Navega a Sketch > Include Liarbry > Manage Libraries..., y busca Adafruit_NeoPixel, instala la última versión.
- Paso 2. Copia el siguiente código a un nuevo sketch:
#include <Adafruit_NeoPixel.h>
#include <Arduino.h>
const int pixelPin = D1;
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(1, pixelPin, NEO_GRB + NEO_KHZ800);
void setup() {
Serial.begin(115200);
pixels.begin();
pixels.clear();
pixels.show();
}
void loop() {
for (int i = 0; i < 10; i++) {
pixels.setPixelColor(0, pixels.Color(255, 0, 0));
pixels.show();
delay(100);
pixels.setPixelColor(0, pixels.Color(0, 0, 0));
pixels.show();
delay(100);
}
for (int i = 255; i >= 0; i--) {
pixels.setPixelColor(0, pixels.Color(i, 0, 0));
pixels.show();
delay(10);
}
}
- Paso 3. Selecciona la placa correcta y el número de puerto para cargar el programa.
Una vez que el programa se haya cargado exitosamente, verás el LED RGB en el lado derecho de los Módulos de Sensor mmWave parpadeando.

Sensor de Luz (BH1750)
Este ejemplo muestra cómo leer valores de intensidad de luz usando el sensor BH1750.
- Paso 1. Descargar la biblioteca
hp_BH1750
Navega a Sketch > Include Liarbry > Manage Libraries..., y busca hp_BH1750, instala la última versión.
- Paso 2. Copia el siguiente código a un nuevo sketch:
#include <Arduino.h>
#include <hp_BH1750.h>
hp_BH1750 BH1750;
void setup() {
Serial.begin(9600);
bool avail = BH1750.begin(BH1750_TO_GROUND);
if (!avail) {
Serial.println("No BH1750 sensor found!");
while (true) {}
}
Serial.printf("conversion time: %dms\n", BH1750.getMtregTime());
BH1750.start();
}
void loop() {
if (BH1750.hasValue()) {
float lux = BH1750.getLux();
Serial.println(lux);
BH1750.start();
}
}
- Paso 3. Selecciona la placa correcta y el número de puerto para cargar el programa.
La salida será la siguiente en el Monitor Serie de Arduino:

API del Módulo de Respiración
Este ejemplo usa la clase SEEED_MR60BHA2
para interactuar con el sensor MR60BHA2 para monitoreo cardíaco y respiratorio. Aquí está lo que hace cada función clave:
-
mmWave.begin(&mmWaveSerial)
:- Inicializa el sensor para comunicación usando la interfaz serie especificada. Establece la conexión entre la placa XIAO y el sensor MR60BHA2.
-
mmWave.update(100)
:- Actualiza los datos del sensor. El parámetro
100
es un valor de tiempo de espera en milisegundos, especificando cuánto tiempo esperar a que el sensor proporcione nuevos datos. Si hay nuevos datos disponibles dentro de este marco de tiempo, la función devuelvetrue
.
- Actualiza los datos del sensor. El parámetro
-
mmWave.getHeartBreathPhases(float &total_phase, float &breath_phase, float &heart_phase)
:- Recupera la información de fase relacionada con las actividades cardíacas y respiratorias.
total_phase
representa el cambio de fase general, mientras quebreath_phase
yheart_phase
son específicos para las actividades de respiración y latidos del corazón, respectivamente.
-
mmWave.getBreathRate(float &rate)
:- Obtiene la frecuencia respiratoria actual detectada por el sensor. La frecuencia se devuelve en la variable de referencia
rate
.
- Obtiene la frecuencia respiratoria actual detectada por el sensor. La frecuencia se devuelve en la variable de referencia
-
mmWave.getHeartRate(float &rate)
:- Recupera la frecuencia cardíaca actual detectada por el sensor. La frecuencia se devuelve en la variable de referencia
rate
.
- Recupera la frecuencia cardíaca actual detectada por el sensor. La frecuencia se devuelve en la variable de referencia
-
mmWave.getDistance(float &distance)
:- Obtiene la distancia desde el sensor hasta el objeto detectado (por ejemplo, cuerpo humano). Esta función es útil para entender el rango de la señal detectada.
-
mmWave.getPeopleCountingPointCloud(PeopleCounting& point_cloud)
:- Recupera información sobre nubes de puntos. Solo realiza la recepción del tipo de mensaje, es normal que no haya datos.
- La estructura
PeopleCounting
contiene un vector de objetivos detectados. Cada objetivo incluye los siguientes atributos:x_point
: Coordenada X del objetivo (en metros).y_point
: Coordenada Y del objetivo (en metros).dop_index
: Índice Doppler, representando la velocidad del objetivo.- La velocidad de movimiento real (en cm/s) se puede calcular como:
dop_index * RANGE_STEP
, dondeRANGE_STEP
es la resolución de velocidad.
- La velocidad de movimiento real (en cm/s) se puede calcular como:
cluster_index
: ID del clúster del objetivo, usado para identificar objetivos individuales en la escena.
-
mmWave.getPeopleCountingTartgetInfo(PeopleCounting& target_info)
:- Recupera información sobre objetivos detectados.
- La estructura
PeopleCounting
contiene un vector de objetivos detectados. Cada objetivo incluye los siguientes atributos:x_point
: Coordenada X del objetivo (en metros).y_point
: Coordenada Y del objetivo (en metros).dop_index
: Índice Doppler, representando la velocidad del objetivo.- La velocidad de movimiento real (en cm/s) se puede calcular como:
dop_index * RANGE_STEP
, dondeRANGE_STEP
es la resolución de velocidad.
- La velocidad de movimiento real (en cm/s) se puede calcular como:
cluster_index
: ID del clúster del objetivo, usado para identificar objetivos individuales en la escena.
-
mmWave.isHumanDetected()
:- Devuelve si se detecta un humano.
Actualización de firmware del módulo
Modificar el firmware del radar es una operación riesgosa, así que asegúrate de leer esta sección cuidadosamente antes de seguir cada paso con cuidado. Ten en cuenta que si un paso no se realiza correctamente, el Radar puede quedar inutilizado o inservible.
Nota especial, si compraste el Fall Radar MR60FDA2, por favor no flashees el firmware ilegalmente de la siguiente manera, ¡¡¡¡seguramente dañará tu dispositivo!!!!
Primero, conecta los módulos XIAO ESP32C6 y MR60BHA2 juntos. Luego usa el siguiente código para programar XIAO.
#include <Arduino.h>
#include "Seeed_Arduino_mmWave.h"
// If the board is an ESP32, include the HardwareSerial library and create a
// HardwareSerial object for the mmWave serial communication
#ifdef ESP32
# include <HardwareSerial.h>
HardwareSerial mmWaveSerial(0);
#else
// Otherwise, define mmWaveSerial as Serial1
# define mmWaveSerial Serial1
#endif
void setup() {
// Initialize the serial communication for debugging
Serial.begin(115200);
while (!Serial) {
; // Wait for Serial to initialize
}
// Initialize the mmWaveSerial communication
mmWaveSerial.begin(115200);
}
void loop() {
// Check if there is data available from mmWaveSerial
while (mmWaveSerial.available() > 0) {
char receivedChar = mmWaveSerial.read();
Serial.write(receivedChar); // Forward data to Serial
}
// Check if there is data available from Serial
while (Serial.available() > 0) {
char receivedChar = Serial.read();
mmWaveSerial.write(receivedChar); // Forward data to mmWaveSerial
}
}
La función del código anterior es transmitir de forma transparente el puerto serie del módulo al puerto serie USB de XIAO, para así actualizar el firmware del módulo a través de XIAO.
Por favor conecta XIAO a tu PC durante el proceso de actualización.

Verás los datos originales enviados por el módulo.
Luego necesitas descargar y descomprimir la herramienta OTA y el firmware aquí.
El firmware 1.6.5 tiene la siguiente actualización:
- Se corrigió el problema de que la respiración y la frecuencia cardíaca a veces no se detectaban cuando el cuerpo humano estaba en reposo.
- Herramienta de actualización de firmware MR60BHA2: MR60BHA2_OTA.zip
- Firmware MR60BHA2 v1.6.10: MR60BHA2_eeprom_1.6.10.bin
Haz clic aquí para previsualizar la versión anterior
- Firmware MR60BHA2 v1.6.4: MR60BHA2_eeprom_1.6.4.bin
- Firmware MR60BHA2 v1.6.5: MR60BHA2_eeprom_1.6.5.bin
El firmware 1.6.4 tiene la siguiente actualización:
- Se optimizó la función de detección de respiración y frecuencia cardíaca, corrigiendo el error donde pequeños movimientos corporales causaban pérdida de datos.
- Se mejoró la función de detección de presencia 3D: la respiración y frecuencia cardíaca se pueden detectar dentro de 1.5 metros, y la presencia se puede detectar en un rango de 1.5 a 6 metros.
- Se agregó una función de detección de personal, capaz de detectar hasta tres individuos dentro de un rango de 6 metros.
- Verifica y conecta al puerto serie (establece la velocidad de baudios a 115200)

- Haz clic en "REQUEST UPDATE" para entrar al modo de actualización:



- Si se imprime "C" o "43", significa que el módulo ha entrado al modo de actualización.

- Selecciona el firmware a actualizar. Después de la selección, entrará automáticamente al estado de actualización.
Después de que se complete la actualización, saltará automáticamente al modo normal. Si no salta, apaga y reinicia, y luego usa la herramienta OTA para ver los datos del puerto serie.


- Después de que se complete la actualización, puedes usar la herramienta OTA para leer la versión y los datos sin procesar.

- Necesitas volver a flashear el firmware de XIAO ESP32C6 después de que se complete la actualización.
Si en los pasos anteriores has operado incorrectamente causando que ocurra una anomalía y no has podido intentar grabar el firmware nuevamente y el radar no está funcionando correctamente, entonces el radar puede haber sufrido un daño debido a firmware corrupto. La única manera de intentar recuperar el dispositivo es referirse a los archivos y documentación aquí. Sin embargo, por favor entiende que no proporcionamos soporte técnico y asistencia para el dispositivo dañado debido a operación incorrecta.
Abierto para Personalización
¿Quieres personalizar el kit para que se ajuste a tus aplicaciones únicas?
Para más información sobre la generación de datos de nube de puntos 3D y configuración de zona de interferencia al personalizar módulos mmWave. Seeed proporciona servicios de personalización de I+D y fabricación integral para desarrollo rápido desde concepto hasta producción. Contáctanos en [email protected] para obtener más información.
El firmware y los algoritmos del radar no son de código abierto, y parámetros complejos del radar como la nube de puntos 3D, la distancia de detección, el alcance, etc., requieren servicios personalizados, lo que puede implicar tarifas de personalización adicionales y MOQ.
Recursos
- STL: Carcasa 3D mmWave
- Repositorio GitHub: Accede al código base completo y documentación en la página GitHub de la Librería mmWave de Seeed.
- Documentación ESPHome: Para mayor personalización e integración, consulta la documentación de ESPHome.
- Herramienta de actualización de firmware MR60BHA2: MR60BHA2_OTA.zip
- Firmware MR60BHA2 v1.6.5: MR60BHA2_eeprom_1.6.5.bin
- Software GUI MR60BHA2: Seeed_Studio_mmWave_Sensor_MR60BHA2_GUI.zip
- Esquemático del Sensor mmWave SCH V1.0: mmWave_Sensor_SCH_V1.0.pdf
- Especificación Técnica del Módulo MR60BHA2: MR60BHA2_Breathing_and_Heartbeat_Module.pdf
- Manual de Interfaz Tiny Frame MR60BHA2: Seeed_Studio_Tiny_Frame_Interface_Breathing_and_Heartbeat.pdf
- Método de Recuperación de Firmware del Radar vía Jlink: Radar_Firmware_Recovery_Method-Jlink.zip
Soporte Técnico y Discusión del Producto
¡Gracias por elegir nuestros productos! Estamos aquí para brindarte diferentes tipos de soporte para asegurar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para atender diferentes preferencias y necesidades.