Skip to main content

Getting started with 60GHz mmWave Fall Detection Sensor Kit with XIAO ESP32C6 (MR60FDA2)


Introducing our advanced mmWave Sensor Modules for XIAO, designed to provide cutting-edge monitoring solutions for both fall detection and heartbeat monitoring. Powered by the robust XIAO ESP32 microcontroller with built-in Wi-Fi and Bluetooth connectivity, these modules offer precise and reliable detection capabilities. Whether you need to monitor falls in real-time or track heartbeats with sensitive accuracy, our modules are equipped with state-of-the-art technology, including customizable RGB LEDs and ambient light sensing. With easy expansion options through Grove GPIO ports, these versatile modules are perfect for a wide range of applications, from smart home integration to healthcare monitoring.

Features

  • Wi-Fi & Bluetooth Enabled: Both modules are powered by XIAO ESP32 with pre-flashed ESPHome firmware, ensuring quick setup and customization.
  • Fall Detection Module:
    • Precise Fall Detection: Covers a 3x3x3 meter area with a 100° x 40° detection angle.
    • Static Presence Detection: Monitors stationary individuals up to 6 meters away.
  • Environmental Sensing:
    • BH1750 Light Sensor: Measures ambient light from 1 to 65,535 lux.
    • WS2812 RGB LED: Customizable LED for visual feedback and DIY projects.
  • Expandable Connectivity: Includes Grove GPIO ports for adding additional sensors and modules.

Specification

General Parameters
mmWave FirmwareFall Detection Monitoring
Detection RangeHuman Static Presence Detection: up to 6 Meters
Fall Detection:
- 3x3x3 meter range
- Horizontal Field of View (FoV) of 120°
- Vertical FoV of 100°
MCUSeeed Studio XIAO ESP32C6
LEDWS2812 RGB LED
ButtonRest
Light SensorBH1750 Range: 1 to 65,535 lux with adjustable measurements up to 100,000 lux
Connectivity1 GPIO Port (D0, D10)
Pin Header Spacing2.54mm
Power Supply5V/1A Input
Power consumption0.5w: Standby Mode
0.8w: Activation Mode
1.4w: work with Grove Relay status

Application

  • Security Systems
  • Haelthcare Monitoring
  • Smart Home Automation
  • Elderly Care

Hardware Overview


Getting Started

Installation method and sensing range

Top-mounted hanging height 2.2-3.0m, maximum sensing radius 2m, the side with the mmWave sensor needs to align with the direction of detection.

note

Please use this module in an open space, and stay out of the following scenarios within the detecting range to prevent interference with the module:

  • Multiple radars installed too close together
  • Wind moves curtains and sways plants
  • Water flow and water film
  • Large areas of metal and mirror reflections
  • Detection through glass and thin wooden boards
  • Installation location prone to vibrations
  • Use of low-quality power supplies

Software Preparation (Arduino)

If this is your first time using Arduino with the XIAO series, follow the appropriate setup guide for your board:

Once your board is set up, proceed with the following steps:

  1. Download the Seeed mmWave Library:
  1. Install the Library in Arduino IDE:

    • Open the Arduino IDE.
    • Navigate to Sketch > Include Library > Add .ZIP Library....
    • Select the downloaded .zip file to install the library.
  2. Connect Your XIAO Board:

    • Plug your XIAO board into your computer via USB.
    • In the Arduino IDE, go to Tools > Board and select your XIAO board model.
    • Choose the correct port under Tools > Port.
  3. Load an Example Sketch:

    • Go to File > Examples > Seeed Arduino mmWave.
    • Select the relevant example for either Fall Detection.
    • Review the code and make any necessary adjustments.
  4. Upload the Sketch:

    • Click Upload to flash the code to your XIAO board.
    • Open the Serial Monitor in the Arduino IDE to view real-time sensor data.

Usage

This section provides example code snippets to help you quickly start using the Seeed Arduino mmWave Library with various functionalities, including fall detection, RGB LED control, and light sensing.

Fall Module

This example shows how to use the MR60FDA2 sensor for fall detection.

#include <Arduino.h>
#include "Seeed_Arduino_mmWave.h"

#ifdef ESP32
# include <HardwareSerial.h>
HardwareSerial mmWaveSerial(0);
#else
# define mmWaveSerial Serial1
#endif

SEEED_MR60FDA2 mmWave;

void setup() {
Serial.begin(115200);
mmWave.begin(&mmWaveSerial);

delay(1000);

uint32_t sensitivity = 15;
float height = 3.0, threshold = 1.0;
float rect_XL, rect_XR, rect_ZF, rect_ZB;

if (mmWave.setInstallationHeight(height)) {
Serial.printf("setInstallationHeight success: %.2f\n", height);
} else {
Serial.println("setInstallationHeight failed");
}

if (mmWave.setThreshold(threshold)) {
Serial.printf("setThreshold success: %.2f\n", threshold);
} else {
Serial.println("setThreshold failed");
}

if (mmWave.setSensitivity(sensitivity)) {
Serial.printf("setSensitivity success %d\n", sensitivity);
} else {
Serial.println("setSensitivity failed");
}

if (mmWave.getRadarParameters(height, threshold, sensitivity, rect_XL,
rect_XR, rect_ZF, rect_ZB)) {
Serial.printf("height: %.2f\tthreshold: %.2f\tsensitivity: %d\n", height,
threshold, sensitivity);
Serial.printf(
"rect_XL: %.2f\trect_XR: %.2f\trect_ZF: %.2f\trect_ZB: %.2f\n", rect_XL,
rect_XR, rect_ZF, rect_ZB);
} else {
Serial.println("getRadarParameters failed");
}
}

void loop() {
if (mmWave.update(100)) {
bool is_human = mmWave.getHuman();
if (is_human) {
Serial.printf("People Exist: %s\n", is_human ? "true" : "false");
}

bool is_fall = mmWave.getFall();
if (is_fall) {
Serial.printf("isFall: %s\n", is_fall ? "true" : "false");
}
}
}

The output will be as follows on Arduino Serial Monitor:

This example demonstrates how to control an RGB LED using the NeoPixel library.

  • Step 1. Download the Adafruit_NeoPixel library

Navigate to Sketch > Include Liarbry > Manage Libraries..., and search Adafruit_NeoPixel, install the lastest version.

  • Step 2. Copy following code to a new 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);
}
}
  • Step 3. Select the correct board and port number to upload the program.

Once the program is successfully uploaded, you will see RGB LED on the right side of the mmWave Sensor Modules is blinking.

Light Sensor (BH1750)

This example shows how to read light intensity values using the BH1750 sensor.

  • Step 1. Download the hp_BH1750 library

Navigate to Sketch > Include Liarbry > Manage Libraries..., and search hp_BH1750, install the lastest version.

  • Step 2. Copy following code to a new 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();
}
}
  • Step 3. Select the correct board and port number to upload the program.

The output will be as follows on Arduino Serial Monitor:

Fall Module API

This example uses the SEEED_MR60FDA2 class to interface with the MR60FDA2 sensor for fall detection. Here’s what each key function does:

  • mmWave.begin(&mmWaveSerial):

    • Initializes the sensor for communication, setting up the serial connection between the XIAO board and the MR60FDA2 sensor.
  • mmWave.setInstallationHeight(float height):

    • Sets the installation height of the radar, which is crucial for accurate fall detection. The height parameter specifies the height (in meters) at which the sensor is installed, initialization setting parameters is 2.2 m, with a valid range typically between 1 and 5 meters.
  • mmWave.setThreshold(float threshold):

    • Sets the fall detection threshold. The default fall threshold of the radar is 0.6 m. This value determines the sensitivity of the radar in terms of detecting falls based on the height and distance from the sensor.
  • mmWave.setSensitivity(uint32_t sensitivity):

    • Adjusts the sensitivity of the radar for fall detection. The sensitivity initial value is 3, which represents an average of 3 frames of data. And typically value ranges from 3 to 10, with higher values making the sensor more responsive to potential falls.
  • mmWave.getRadarParameters(float &height, float &threshold, uint32_t &sensitivity):

    • Retrieves the current configuration parameters of the radar, including installation height, fall detection threshold, and sensitivity settings. These parameters are returned via the reference variables.
  • mmWave.getHuman():

    • Checks if a human presence is detected by the radar. Returns true if a human is detected, and false otherwise.
  • mmWave.getFall():

    • Determines whether a fall has been detected. This function returns true if a fall is detected and false if not.

Open for Customization

Want to tailor-make the kit to fit your unique applications?

For more information about 3D point cloud data generation and interference zone configuration when customizing mmWave modules. Seeed provides one-stop R&D customization and manufacturing services for fast development from concept to production. Contact us at [email protected] to learn more.

Resources

Tech Support & Product Discussion

Thank you for choosing our products! We are here to provide you with different support to ensure that your experience with our products is as smooth as possible. We offer several communication channels to cater to different preferences and needs.

Loading Comments...