Skip to main content

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 mmWaveDetección de Respiración y Latidos
Rango de DetecciónDetección de Presencia Estática Humana: hasta 6 Metros
Detección de Respiración y Latidos: 1.5 Metros
MCUSeeed Studio XIAO ESP32C6
LEDLED RGB WS2812
BotónReinicio
Sensor de LuzBH1750 Rango: 1 a 65,535 lux con mediciones ajustables hasta 100,000 lux
Conectividad1 Puerto GPIO (D0, D10)
Espaciado de Pines2.54mm
Fuente de AlimentaciónEntrada 5V/1A
Consumo de energía0.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.

note

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)

Atención

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:

Una vez que tu placa esté configurada, procede con los siguientes pasos:

  1. Descarga la Librería Seeed mmWave:

  1. 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.
  2. 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.
  3. 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.
  4. 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.

caution

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:

note

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 devuelve true.
  • 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 que breath_phase y heart_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.
  • mmWave.getHeartRate(float &rate):

    • Recupera la frecuencia cardíaca actual detectada por el sensor. La frecuencia se devuelve en la variable de referencia rate.
  • 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, donde RANGE_STEP es la resolución de velocidad.
      • 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, donde RANGE_STEP es la resolución de velocidad.
      • 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

caution

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
}
}
tip

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í.

note

El firmware 1.6.5 tiene la siguiente actualización:

  1. 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.
Haz clic aquí para previsualizar la versión anterior
note

El firmware 1.6.4 tiene la siguiente actualización:

  1. 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.
  2. 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.
  3. Se agregó una función de detección de personal, capaz de detectar hasta tres individuos dentro de un rango de 6 metros.
  1. Verifica y conecta al puerto serie (establece la velocidad de baudios a 115200)
  1. Haz clic en "REQUEST UPDATE" para entrar al modo de actualización:
  1. Si se imprime "C" o "43", significa que el módulo ha entrado al modo de actualización.
  1. 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.

  1. Después de que se complete la actualización, puedes usar la herramienta OTA para leer la versión y los datos sin procesar.
  1. Necesitas volver a flashear el firmware de XIAO ESP32C6 después de que se complete la actualización.
tip

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.

Descripción del Servicio Personalizado

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

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.

Loading Comments...