🧪 新しいチュートリアルを公開中 — ロボットアームからセンサーまで
コンテンツへスキップ
この製品を購入公式ストア公式サイト

ラズベリーパイ使用チュートリアル ​

プロジェクト概要 ​

JUXI_HeartRate_SPO2 は MAX30102 チップをベースにした心拍・血中酸素センサーモジュールで、内蔵アルゴリズムが心拍数と血中酸素飽和度の値を直接出力できます。

主な機能:

  • 血中酸素飽和度(SPO2)の測定
  • 心拍数の測定(回/分)
  • 基板温度の測定
  • UART と I2C の 2 種類の通信方式に対応

ハードウェアの準備 ​

必要なもの説明
ラズベリーパイ(2/3/4/Zero いずれも可)ラズベリーパイ 3B+ または 4B を推奨
JUXI_HeartRate_SPO2 センサー心拍・血中酸素センサーモジュール
ジャンパーワイヤ 数本メス-メス ジャンパーワイヤ 4 本
電源アダプターラズベリーパイ専用電源

ハードウェア接続 ​

方法 1:I2C 通信(推奨) ​

I2C 通信は配線が簡単なため、推奨します。

図

センサーピンラズベリーパイ物理ピンBCM 番号説明
VCC1 または 17-3.3V 電源(5V 接続も可)
GND6 または 9 または 14-グラウンド
SDA3GPIO2I2C データ線
SCL5GPIO3I2C クロック線

重要: センサーのスイッチを IIC の位置に切り替えてください!

方法 2:UART シリアル通信 ​

UART 通信はクロス接続が必要です。

図

センサーピンラズベリーパイ物理ピンBCM 番号説明
VCC2 または 4-5V 電源(3.3V 接続も可)
GND6 または 9 または 14-グラウンド
RX8GPIO14センサーの RX をラズベリーパイの TX に接続
TX10GPIO15センサーの TX をラズベリーパイの RX に接続

重要: センサーのスイッチを UART の位置に切り替えてください!

図


環境設定 ​

1. I2C の有効化(I2C モードで必要) ​

bash
sudo raspi-config

Interface Options → I2C を選択し、Yes を選んで有効化します

ラズベリーパイを再起動します:

bash
sudo reboot

2. シリアルの有効化(UART モードで必要) ​

bash
sudo raspi-config

Interface Options → Serial を選択します

  • 最初の質問:"Would you like a login shell to be accessible over serial?" → No を選択
  • 2 番目の質問:"Would you like the serial port hardware to be enabled?" → Yes を選択

ラズベリーパイを再起動します:

bash
sudo reboot

3. 依存ライブラリのインストール ​

bash
# 更新软件源
sudo apt-get update

# 安装 I2C 工具和 smbus2 库(I2C 模式必须使用 smbus2)
sudo apt-get install -y i2c-tools python3-smbus2

# 安装 pyserial(串口支持)
sudo pip3 install pyserial

注意: I2C モードでは smbus2 のインストールが必須で、旧版の python-smbus は使用できません。 ライブラリ内部では smbus2.i2c_msg を使用して独立した 2 段階の I2C トランザクション(先にレジスタアドレスを書き込んで STOP を送信し、 その後新しい読み取りトランザクションを開始して複数バイトを連続読み取り)を実装し、センサーチップの I2C タイミング要件に合わせています。

4. I2C 接続の確認(I2C モード) ​

配線完了後、以下のコマンドで I2C デバイスを検出します:

bash
i2cdetect -y 1

アドレス 0x57 が表示されれば、センサーの接続に成功しています。


サンプルコードの使用 ​

JUXI_HeartRate_SPO2.zip

ファイル構成 ​

bash
python/raspberry/
├── JUXI_HeartRate_SPO2.py      # 主库文件
└── examples/
    ├── i2c_example.py          # I2C 模式示例
    └── uart_example.py         # UART 模式示例

I2C モードのサンプルを実行 ​

bash
cd python/raspberry/examples
bash
sudo python3 i2c_example.py

UART モードのサンプルを実行 ​

bash
cd python/raspberry/examples
bash
sudo python3 uart_example.py

注意: ハードウェアシリアルを使用するには sudo 権限が必要です。

実行結果 ​

すべて正常であれば、以下のような出力が表示されます:

bash
==================================================
JUXI 心率血氧传感器 - I2C 模式
==================================================

正在初始化 I2C 总线 1,地址 0x57...
传感器初始化成功!

开始数据采集...
传感器 LED 已亮起!

请将手指放在传感器上...

血氧饱和度: 98 %
心率: 72 次/分钟
板载温度: 25.5 ℃
...

Ctrl+C を押してプログラムを停止します。


API リファレンス ​

クラス:JUXI_HeartRate_SPO2_i2c ​

I2C 通信方式のセンサークラスです。

コンストラクタ

JUXI_HeartRate_SPO2_i2c(bus_number=1, i2c_address=0x57)

パラメータ:

  • bus_number: I2C バス番号。ラズベリーパイでは通常 1
  • i2c_address: センサーの I2C アドレス。デフォルトは 0x57

メソッド

メソッド説明戻り値
begin()センサーを初期化し、接続を検出bool(成功時は True)
sensor_start_collect()データ収集を開始(センサー LED 点灯)なし
sensor_end_collect()データ収集を停止(センサー LED 消灯)なし
get_heartbeat_SPO2()心拍数と血中酸素データを読み取りなし(結果はオブジェクトの属性に格納)
get_temperature_c()基板温度を読み取りfloat(摂氏)
close()I2C 接続を閉じるなし

属性

属性説明
SPO2血中酸素飽和度(%)、無効値は -1
heartbeat心拍数(回/分)、無効値は -1

クラス:JUXI_HeartRate_SPO2_uart ​

UART シリアル通信方式のセンサークラスです。

コンストラクタ

JUXI_HeartRate_SPO2_uart(port='/dev/serial0', baudrate=9600)

パラメータ:

  • port: シリアルデバイスのパス。ラズベリーパイのデフォルトは /dev/serial0
  • baudrate: ボーレート。デフォルトは 9600

メソッド

JUXI_HeartRate_SPO2_i2c と同じです。


よくある質問 ​

Q1: センサーの初期化に失敗したらどうすればよいですか? ​

A: 以下の手順で確認してください:

  1. 配線の確認
  • I2C モード:SDA が GPIO2、SCL が GPIO3 に接続されていることを確認
  • UART モード:RX-TX がクロス接続されていることを確認
  1. センサーのスイッチの確認
  • I2C モード:スイッチは IIC の位置
  • UART モード:スイッチは UART の位置
  1. 電源の確認
  • VCC が 3.3V または 5V に接続されていることを確認
  • GND が接続されていることを確認
  1. システム設定の確認
  • I2C モード:I2C が有効になっていることを確認
  • UART モード:シリアルが有効になっていることを確認
  1. 検出コマンドの使用
bash
# I2C 模式
i2cdetect -y 1

# UART 模式
ls /dev/serial*

Q2: データがずっと -1 と表示される場合は? ​

A:

  1. 指がセンサーの上に正しく置かれ、2 つの LED を完全に覆っていることを確認します
  2. 数秒待ってデータを安定させます(通常 10~30 秒必要です)
  3. sensor_start_collect() を呼び出して収集を開始したか確認します
  4. センサーのインジケーター LED が点灯しているか確認します

Q3: データが正確でない場合は? ​

A:

  1. 指がセンサーの光学領域を完全に覆っていることを確認します
  2. 指を静止させ、動かさないようにします
  3. 30 秒以上待ってデータを安定させます
  4. 複数回測定して平均値を取ります
  5. センサーに強い光が直接当たらないようにします

Q4: I2C と UART は同時に使用できますか? ​

A: いいえ、同時に使用できる通信方式は 1 種類のみです。

Q5: sudo で実行する必要がありますか? ​

A:

  • I2C モード:権限の問題を避けるため sudo の使用を推奨します
  • UART モード:必須です。sudo がないとシリアルポートにアクセスできません

注意事項 ​

測定のコツ ​

  1. 指を正しく置く
  • 指をそっとセンサーの上に置き、2 つの LED を覆います
  • 血流に影響するため、強く押さないでください
  • 指を安定させ、動かさないでください
  1. データが安定するまで待つ
  • 測定開始直後は数値が不安定になることがあります
  • 10~30 秒待ってデータが安定してから読み取ることをおすすめします
  • センサーは 4 秒ごとにデータを更新します
  1. 環境要件
  • センサーに強い光が直接当たらないようにしてください
  • 適切な環境温度を保ってください
  • 測定時は静かにしてください

データの見方 ​

SPO2 範囲説明
95% - 100%正常
90% - 94%軽度低酸素
< 90%低酸素、受診を推奨
心拍数範囲説明
60 - 100 回/分成人の正常範囲
< 60 回/分徐脈
> 100 回/分頻脈

安全上の注意 ​

  • 本センサーは参考用であり、専門医療機器の代替にはなりません
  • 健康上の問題がある場合は、速やかに医師の診察を受けてください
  • 測定結果は参考用であり、診断の根拠にはなりません