Evaluating a 60GHz mmWave Radar System
Given the important connection between the peripheral and central nervous systems, heart and respiratory rates have become valuable measures to incorporate into physiological research (Gaidica & Dantzer, 2021). However, conventional measurement techniques require a physical interface between device and organism. A new class of “mmWave” biotic radar technologies is making it possible to derive such measurements without any physical interface with up to 85% accuracy. Furthermore, they are natively capable of monitoring small changes in movement, making them ideal fall detection sensors. Here, I use the Seeed Studio 60GHz mmWave Sensor (Breathing and Heartbeat Module) based on the MR60BHA1 60GHz radar module to determine its accuracy and applicability to broader applications in non-human domains.
Software (MATLAB GUI)
Seeed Studio recently released a mmWave Wiki and Arduino Library, but ultimately the sensor still lacks a proper user interface. I rewrote most of the library into a MATLAB app. Unfortunately, the functionality of the current device does not match what is contained in the datasheet, so the Arduino library is actually a more accurate way to decode the sensor’s output; the current datasheet appears to be aspirational.
Hardware
I am using a basic serial-to-USB module from Amazon which appears in the MATLAB GUI port selection dropdown. The mmWave hookup is as simple as RX⇄TX and TX⇄RX between modules. In order to keep the sensor protected and contained, I designed a housing using Fusion 360 and printed it on my Prusa.
Performance
I decided not to break out the complete physiology kit to do a proper correlation between signals; given that heart rate is transferred using a single byte (values 0-255), I don’t expect this to replace an EKG. In the first figure (above), the mmWave reported values 10-20 BPM higher than my Garmin Fenix connected to a Polar H10 heart rate strap. My respiratory rate (measured manually with a timer) was consistent, but I would need more data to give a proper analysis. In sum, it’s hard to know if this sensor is just spitting out random values around 70 BPM, so I proceeded with a few more tests.
After Exercise
I went on the treadmill and got my heart rate up to 138 BPM and then sat in front of the mmWave sensor (making sure it said “User within range”). The readings were way off, in fact, I never got the sensor to read higher than 80 BPM despite my HR sitting above 100 BPM for at least a few minutes. I tried the same with push-ups, but very little modulation of the sensor values occurred. I tested it in multiple environments and found the values to not be very correlated with my heart rate monitor at all. I also placed the sensor in front of my dog for a few minutes, but the HR was reading similar values (all ~70BPM), which could be accurate, but I would have expected it to be slightly higher.
Presence, Movement, and Fall Detection
Where this sensor does shine is in its ability to detect movement. As compared to other types of motion detectors, it is clearly above par and the fall detection does a good job of triggering when movement is very abrupt. But with cheap wide-angle camera modules with built-in AI emerging, I would bet that is where the future lies for fall detection or critical care monitoring, given privacy concerns can be overcome.
Conclusion
I wanted an accurate external heart rate sensor, and indeed, Seeed Studio promised that but completely underdelivered. Note, I also tried this sensor with an Arduino and the provided software library with similar results. I’m currently not satisfied with the accuracy of the documentation—which makes developing nearly impossible—or the device itself. For example, I don’t really know what the waveform data is supposed to represent (e.g., do they have units?).
I would be interested to know if anyone has had similar experiences or debugged this device to read out heart rates higher than 100 BPM.
Recent Comments
Archives
- April 2023
- January 2023
- November 2022
- May 2022
- March 2022
- January 2022
- December 2021
- April 2021
- December 2020
- October 2020
- August 2020
- July 2020
- March 2020
- February 2020
- January 2020
- December 2019
- November 2019
- October 2019
- January 2019
- December 2018
- November 2018
- August 2018
- July 2018
- April 2018
- March 2018
- November 2017
- October 2017
- February 2017
- October 2016
- August 2016
- July 2016
- November 2015
- October 2013
- February 2013
- January 2013
- August 2012
- July 2012
- June 2012
- May 2012
- April 2012
- February 2012
- December 2011