Skip to main content

MR60BHA2 の使い方

note

この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

60GHz mmWave 呼吸および心拍検出センサーキット XIAO ESP32C6 (MR60BHA2) の使い方



最先端の XIAO 用 mmWave センサーモジュール をご紹介します。このモジュールは、転倒検出や心拍モニタリングのための高度な監視ソリューションを提供します。Wi-Fi と Bluetooth 接続を備えた強力な XIAO ESP32 マイクロコントローラーを搭載し、正確で信頼性の高い検出能力を実現します。リアルタイムでの転倒監視や高感度な心拍追跡が必要な場合でも、RGB LED のカスタマイズや周囲光センサーを含む最先端技術を備えています。Grove GPIO ポートを通じた簡単な拡張オプションにより、スマートホーム統合からヘルスケアモニタリングまで、幅広い用途に対応する汎用性の高いモジュールです。

特徴

  • Wi-Fi & Bluetooth 対応: 両モジュールは XIAO ESP32 によって駆動され、ESPHome ファームウェアが事前にフラッシュされており、迅速なセットアップとカスタマイズが可能です。
  • 心拍検出モジュール:
    • 高感度心拍モニタリング: 最大 1.5 メートルの距離から心拍を検出します。
    • 静的存在検出: 最大 6 メートル離れた静止した個人を監視します。
  • 環境センサー:
    • BH1750 光センサー: 1 から 65,535 lux の範囲で周囲光を測定します。
    • WS2812 RGB LED: 視覚的フィードバックや DIY プロジェクト向けのカスタマイズ可能な LED。
  • 拡張可能な接続性: 追加のセンサーやモジュールを接続するための Grove GPIO ポートを備えています。

仕様

一般的なパラメータ
mmWaveファームウェア呼吸および心拍検出
検出範囲人間の静的存在検出: 最大6メートル
呼吸および心拍検出: 1.5メートル
MCUSeeed Studio XIAO ESP32C6
LEDWS2812 RGB LED
ボタンリセット
光センサーBH1750 範囲: 1~65,535ルクス、最大100,000ルクスまで調整可能
接続性1 GPIOポート (D0, D10)
ピンヘッダー間隔2.54mm
電源供給5V/1A入力
消費電力0.5w: 待機モード
0.8w: アクティベーションモード
1.4w: Groveリレー状態で動作

アプリケーション

  • セキュリティシステム
  • ヘルスケアモニタリング
  • スマートホームオートメーション
  • 高齢者ケア

ハードウェア概要


はじめに

設置方法と検知範囲

方法1. 側面取り付け。レーダーの設置高さは測定対象者の胸の高さと一致することが推奨され、モジュール位置と胸位置の距離が1.5m以下である必要があります。

方法2. 傾斜取り付け。睡眠時の呼吸および心拍検出のニーズに応じて、傾斜取り付け方法を採用できます。レーダーはベッドの頭上1mの高さに設置し、ベッドの中央に向かって45°下向きに傾けます。レーダーと胸腔の距離は1.5m以内に制御され、レーダーの正面方向が主な検出位置に一致するようにして、呼吸および心拍データを検出できるようにします。

note

このモジュールは開放空間で使用してください。以下のような検出範囲内の状況を避けて、モジュールへの干渉を防いでください:

  • 複数のレーダーが近接して設置されている
  • 風によるカーテンや植物の揺れ
  • 水の流れや水膜
  • 大面積の金属や鏡の反射
  • ガラスや薄い木板を通した検出
  • 振動が発生しやすい設置場所
  • 低品質の電源の使用

ソフトウェア準備 (Arduino)

注意

デフォルトでは、MR60BHA2はXIAO ESP32C6と事前に組み立てられていますが、通信および統合のために他のさまざまなマイクロコントローラーと互換性があります。

ArduinoをXIAOシリーズで初めて使用する場合は、ボードに適したセットアップガイドに従ってください:

ボードのセットアップが完了したら、以下の手順を進めてください:

  1. Seeed mmWaveライブラリをダウンロード:

  2. Arduino IDEにライブラリをインストール:

    • Arduino IDEを開きます。
    • スケッチ > ライブラリを含める > .ZIPライブラリを追加...を選択します。
    • ダウンロードした.zipファイルを選択してライブラリをインストールします。
  3. XIAOボードを接続:

    • XIAOボードをUSB経由でコンピュータに接続します。
    • Arduino IDEでツール > ボードに移動し、XIAOボードモデルを選択します。
    • ツール > ポートで正しいポートを選択します。
  4. サンプルスケッチをロード:

    • ファイル > サンプル > Seeed Arduino mmWaveに移動します。
    • 心拍検出に関連するサンプルを選択します。
    • コードを確認し、必要に応じて調整を行います。
  5. スケッチをアップロード:

    • アップロードをクリックしてXIAOボードにコードを書き込みます。
    • Arduino IDEのシリアルモニターを開き、リアルタイムのセンサーデータを確認します。

使用方法

このセクションでは、呼吸モニタリング、RGB LED制御、光センサーなどの機能を含む、Seeed Arduino mmWaveライブラリを迅速に使用開始するためのコード例を提供します。

呼吸モジュール

この例では、MR60BHA2センサーを使用して呼吸と心拍をモニタリングする方法を示します。

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

// ボードタイプに応じてシリアル通信を設定
#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);
}
}
}

Arduinoシリアルモニターでの出力は以下のようになります:

返されるデータが0でない場合、検出範囲内に生物が存在することを示します。

人間検出

この例では、MR60BHA2センサーを使用して人間を検出する方法を示します。

caution

必ずMR60BHA2モジュールのファームウェアを最新バージョンにアップグレードしてください。
最新のファームウェアでは、人間の存在検出および人間関連の機能が追加されています。

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

// ボードがESP32の場合、HardwareSerialライブラリをインクルードし、mmWaveシリアル通信用のHardwareSerialオブジェクトを作成
#ifdef ESP32
# include <HardwareSerial.h>
HardwareSerial mmWaveSerial(0);
#else
// それ以外の場合、mmWaveSerialを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.getPeopleCountingTartgetInfo(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);
}
}

Arduinoシリアルモニターでの出力は以下のようになります:

note

呼吸と心拍は1.5メートル以内で検出可能であり、存在検出は1.5~6メートルの範囲で可能です。
1.5M範囲内に人がいる場合、モジュールは心拍と呼吸検出モードに入ります。
このモードでは、人間検出機能の感度が低下する可能性があります。

RGB LEDを点滅させる

この例では、NeoPixelライブラリを使用してRGB LEDを制御する方法を示します。

  • ステップ1. Adafruit_NeoPixelライブラリをダウンロード

スケッチ > ライブラリを含める > ライブラリを管理...に移動し、Adafruit_NeoPixelを検索して最新バージョンをインストールします。

  • ステップ2. 以下のコードを新しいスケッチにコピーします:
#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. 正しいボードとポート番号を選択してプログラムをアップロードします。

プログラムが正常にアップロードされると、mmWaveセンサーモジュールの右側にあるRGB LEDが点滅しているのが確認できます。

光センサー (BH1750)

この例では、BH1750センサーを使用して光強度の値を読み取る方法を示します。

  • Step 1. hp_BH1750ライブラリをダウンロードします。

Sketch > Include Library > Manage Libraries... に移動し、hp_BH1750を検索して最新バージョンをインストールします。

  • Step 2. 以下のコードを新しいスケッチにコピーします:
#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("BH1750センサーが見つかりません!");
while (true) {}
}

Serial.printf("変換時間: %dms\n", BH1750.getMtregTime());
BH1750.start();
}

void loop() {
if (BH1750.hasValue()) {
float lux = BH1750.getLux();
Serial.println(lux);

BH1750.start();
}
}
  • Step 3. 正しいボードとポート番号を選択してプログラムをアップロードします。

Arduinoシリアルモニター上で以下のような出力が表示されます:

呼吸モジュールAPI

この例では、SEEED_MR60BHA2クラスを使用してMR60BHA2センサーとインターフェースし、心拍および呼吸のモニタリングを行います。以下は各主要関数の説明です:

  • mmWave.begin(&mmWaveSerial):

    • 指定されたシリアルインターフェースを使用してセンサーを初期化します。これにより、XIAOボードとMR60BHA2センサー間の接続が設定されます。
  • mmWave.update(100):

    • センサーデータを更新します。パラメータ100はタイムアウト値(ミリ秒)で、新しいデータが提供されるまでの待機時間を指定します。この時間内に新しいデータが利用可能な場合、関数はtrueを返します。
  • mmWave.getHeartBreathPhases(float &total_phase, float &breath_phase, float &heart_phase):

    • 心拍および呼吸活動に関連する位相情報を取得します。
    • total_phaseは全体の位相シフトを表し、breath_phaseheart_phaseはそれぞれ呼吸および心拍活動に特化した位相を表します。
  • mmWave.getBreathRate(float &rate):

    • センサーによって検出された現在の呼吸速度を取得します。速度は参照変数rateに返されます。
  • mmWave.getHeartRate(float &rate):

    • センサーによって検出された現在の心拍速度を取得します。速度は参照変数rateに返されます。
  • mmWave.getDistance(float &distance):

    • センサーから検出されたオブジェクト(例:人体)までの距離を取得します。この関数は検出信号の範囲を理解するのに役立ちます。
  • mmWave.getPeopleCountingPointCloud(PeopleCounting& point_cloud):

    • 点群情報を取得します。この関数はメッセージタイプの受信を実現するだけであり、データがない場合は正常です。
    • PeopleCounting構造体には検出されたターゲットのベクトルが含まれます。各ターゲットには以下の属性が含まれます:
      • x_point : ターゲットのX座標(メートル単位)。
      • y_point : ターゲットのY座標(メートル単位)。
      • dop_index : ターゲットの速度を表すドップラーインデックス。
        • 実際の移動速度(cm/s)は次のように計算できます:dop_index * RANGE_STEPRANGE_STEPは速度分解能)。
      • cluster_index : シーン内の個々のターゲットを識別するためのターゲットのクラスタID。
  • mmWave.getPeopleCountingTartgetInfo(PeopleCounting& target_info):

    • 検出されたターゲット情報を取得します。
    • PeopleCounting構造体には検出されたターゲットのベクトルが含まれます。各ターゲットには以下の属性が含まれます:
      • x_point : ターゲットのX座標(メートル単位)。
      • y_point : ターゲットのY座標(メートル単位)。
      • dop_index : ターゲットの速度を表すドップラーインデックス。
        • 実際の移動速度(cm/s)は次のように計算できます:dop_index * RANGE_STEPRANGE_STEPは速度分解能)。
      • cluster_index : シーン内の個々のターゲットを識別するためのターゲットのクラスタID。
  • mmWave.isHumanDetected():

    • 人間が検出されたかどうかを返します。

モジュールのファームウェアアップグレード

caution

レーダーのファームウェアを変更することはリスクのある操作です。このセクションを注意深く読み、各ステップを慎重に実行してください。ステップを正しく実行しない場合、レーダーが使用不能になる可能性があります。

特別な注意:Fall Radar MR60FDA2を購入した場合、以下の方法で違法にファームウェアをフラッシュしないでください。デバイスが確実に壊れます!!!!

まず、XIAO ESP32C6とMR60BHA2モジュールを接続します。その後、以下のコードを使用してXIAOをプログラムします。

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

// ボードがESP32の場合、HardwareSerialライブラリをインクルードし、
// mmWaveシリアル通信用のHardwareSerialオブジェクトを作成します
#ifdef ESP32
# include <HardwareSerial.h>
HardwareSerial mmWaveSerial(0);
#else
// それ以外の場合、mmWaveSerialをSerial1として定義します
# define mmWaveSerial Serial1
#endif

void setup() {
// デバッグ用のシリアル通信を初期化します
Serial.begin(115200);
while (!Serial) {
; // Serialが初期化されるまで待機します
}

// mmWaveSerial通信を初期化します
mmWaveSerial.begin(115200);
}

void loop() {
// mmWaveSerialからデータが利用可能か確認します
while (mmWaveSerial.available() > 0) {
char receivedChar = mmWaveSerial.read();
Serial.write(receivedChar); // データをSerialに転送します
}

// Serialからデータが利用可能か確認します
while (Serial.available() > 0) {
char receivedChar = Serial.read();
mmWaveSerial.write(receivedChar); // データをmmWaveSerialに転送します
}
}
tip

上記のコードの機能は、モジュールのシリアルポートをXIAOのUSBシリアルポートに透過的に転送し、XIAOを介してモジュールのファームウェアをアップグレードすることです。
アップグレードプロセス中はXIAOをPCに接続してください。

モジュールから送信された元のデータが表示されます。

次に、OTAツールとファームウェアをダウンロードして解凍する必要があります。

note

ファームウェア1.6.5には以下の更新が含まれています:

  1. 人体が静止している場合に呼吸と心拍数が検出されない問題を修正しました。
旧バージョンをプレビューするにはここをクリック
note

ファームウェア1.6.4には以下の更新が含まれています:

  1. 小さな身体の動きによるデータ損失を修正し、呼吸と心拍数検出機能を最適化しました。
  2. 3D存在検出機能を強化:呼吸と心拍数は1.5メートル以内で検出可能、存在は1.5〜6メートルの範囲で検出可能。
  3. 人員検出機能を追加:6メートル以内で最大3人を検出可能。
  1. シリアルポートを確認して接続します(ボーレートを115200に設定)
  1. 「REQUEST UPDATE」をクリックしてアップグレードモードに入ります:
  1. 「C」または「43」が表示された場合、モジュールがアップグレードモードに入ったことを意味します。
  1. アップグレードするファームウェアを選択します。選択後、自動的にアップグレード状態に入ります。

アップグレードが完了すると、自動的に通常モードに移行します。移行しない場合は電源を切って再起動し、OTAツールを使用してシリアルポートデータを確認してください。

  1. アップグレードが完了したら、OTAツールを使用してバージョンと生データを読み取ることができます。
  1. アップグレードが完了した後、XIAO ESP32C6のファームウェアを再フラッシュする必要があります。
tip

上記のステップで誤った操作を行い異常が発生し、ファームウェアを再度書き込もうとしてもレーダーが正常に動作しない場合、ファームウェアが破損してレーダーが壊れた可能性があります。デバイスを復旧する唯一の方法は、こちらのファイルとドキュメントを参照することです。ただし、誤った操作によるデバイスの破損については、技術サポートや支援を提供しないことをご理解ください。

カスタマイズのご提案

あなたの独自のアプリケーションに合わせてキットをカスタマイズしたいですか?

mmWaveモジュールをカスタマイズする際の3Dポイントクラウドデータ生成や干渉ゾーン設定に関する詳細情報については、Seeedがコンセプトから製品化までの迅速な開発を可能にするワンストップのR&Dカスタマイズおよび製造サービスを提供しています。詳細については、[email protected]までお問い合わせください。

リソース

技術サポートと製品ディスカッション

弊社製品をお選びいただきありがとうございます!製品の使用体験がスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルをご用意しています。

Loading Comments...