Nano 33 BLE Senseの大気圧センサ―
i
このチュートリアルは、すでに製品ライフサイクルの終了(EOL)を迎えた製品を対象としています。

Nano 33 BLE Senseを用いて、LPS22HB大気圧センサ―からデータを取得する方法を学びます。


Author:Nefeli AlushiLast revision:2025/10/31

このチュートリアルでは、大気圧の測定を通じておおよその海抜を計算するために、Arduino Nano 33 BLE Senseを利用します。大気圧は内蔵のLPS22HBセンサーにより取得可能です。

大気圧センサーの一般的なアプリケーションには、GPSや短期間の天候の変化の予測のほかに、大気圧による高度の検出があります。このチュートリアルでは、ユーザーのいる環境のおおよその海抜を求めるために、大気圧データの変換に焦点をあてます。

目的

このプロジェクトの目的は以下の通りです。

  • LPS22HBとは何かを学びます。
  • LPS22HBライブラリを使用します。
  • Arduino Nano 33 BLE Senseからセンサーの生データを出力する方法を学びます。
  • kPa単位を高度(メートル)に変換する方法を学びます。
  • シリアルモニターを使ってデータを表示します。
  • あなたのいる場所の高度を測定する気圧計を作成します。

必要なハードウェアとソフトウェア

  • このプロジェクトでは、外部のセンサーや機器を利用しません。
  • このチュートリアルでは、ボードのプログラムを記述するのに、Arduino Create Cloudエディタを利用します。

LPS22HBセンサー

LPS22HBは、超小型ピエゾ抵抗型の絶対気圧センサーで、大気圧をデジタル出力します。デバイスは、測定素子と、測定素子からアプリケーション間をI2CもしくはSPIインターフェイスで行うICとからなります。

絶対大気圧を検出する測定素子は、浮遊シリコン膜(suspended silicon membrane)からなり、-40℃から+85℃までの温度で動作します。センサーの機能はこのチュートリアルの後半で説明します。

LPS22HBセンサーの詳細を知りたければ、こちらを参照してください。

ライブラリ

Arduino LPS22HBライブラリを使えば、複雑なプログラムを行うことなく、Nano 33 BLE Senseの大気圧センサーのデータを読むことができます。ライブラリは、BARO.begin()でセンサーの初期化を、BARO.end()で終期化を行います。

大気圧と高度

近年の気圧センサーは、以下の図に示すように、大気に接触する抵抗板を通じて形成されたダイアフラム(diaphragm)を装備しています。

大気圧により、どれだけダイアフラムが変形したかにより、大気圧を検出します。気圧が高いほどダイアフラムは大きく動き、より高い気圧を読み出します。

大気圧センサーの値をkPa(測定単位)で取得したら、その場所の高度を以下の数式を使い計算することができます。

H = 44330 * [1 - (P/p0)^(1/5.255) ]

ここで、“H"は高度、“P"はセンサーで測定した大気圧(kPa)、“p0"は海水面の参照気圧(101.325kPa)です。

以下のグラフは、大気圧と海抜の数学的な関係を示しています。

プログラム作成

  1. 設定

Arduino Cloudエディタを開き、Librariesタブをクリックし、LPS22HBライブラリを探します。その後、> Examplesで、ReadPressureスケッチを開きます。開いた後は、Barometerという名前に変更します。

  1. ボードを接続する

次に、Arduino Nano 33 BLE SenseをPCに接続し、Cloudエディタが認識することを確認します。すると、ポートとボードが以下の図で示すように現れます。現れない場合は、指示に従いエディタがボードを認識するためのプラグインをインストールしてください。

  1. おおよその高度を計算する

ここでは、大気圧センサーの結果を用いて、ボードのおおよその高度をメートル単位で表示するように、スケッチ例を変更します。

Arduino_LPS22HBライブラリをインクルードしたら、setup()はそのままです。ここでは、シリアル通信を標準の9600ボーで初期化し、センサーも初期化します。センサーの初期化に失敗したときは、エラーメッセージを表示します。

loop()では、BARO.readPressure()関数がセンサーから生データを取得し、float pressureに格納します。ここで、大気圧センサーデータを光度に変換するために、前述の数式を微調整し追加する必要があります。

float altitude = 44330 * ( 1 - pow(pressure/101.325, 1/5.255) );

この数式では、書式を変更し等式をコードに変換しています。

注意: pow()関数は、べき乗を計算する関数です。

最後に、Serial.println()関数を表示したいデータ(高度(メートル))に適用します。

1
2
3
Serial.print("Altitude according to kPa is = ");
Serial.print(altitude);
Serial.println(" m");
  1. 完全なコード

コード作成セクションをスキップした場合のために、完全なコードを以下に示します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/*
  LPS22HB - Read Pressure

  This example reads data from the on-board LPS22HB sensor of the Nano 33 BLE Sense, 
  converts the atmospheric pressure sensor values to altitude above sea level,
  and prints them to the Serial Monitor every second.

  The circuit:
  - Arduino Nano 33 BLE Sense

  This example code is in the public domain.
*/

#include <Arduino_LPS22HB.h>


void setup() {
  Serial.begin(9600);
  while (!Serial);

  if (!BARO.begin()) {
    Serial.println("Failed to initialize pressure sensor!");
    while (1);
  }
}

void loop() {
  // read the sensor value
  float pressure = BARO.readPressure();
  
 
  float altitude = 44330 * ( 1 - pow(pressure/101.325, 1/5.255) );
  

  // print the sensor value
  Serial.print("Altitude according to kPa is = ");
  Serial.print(altitude);
  Serial.println(" m");

  // print an empty line
  Serial.println();

  // wait 1 second to print again
  delay(1000);
}

テスト

スケッチの検証とアップロードに成功したら、左側のメニューからモニターを開きます。新しい値が表示されるのがわかります。コードをテストするには、ボードを固定位置に安定化させ、シリアルモニターに表示される値を観察します。アパートに住んでいれば、別の階に行って高度が変わることの実験を行うことができます。

値を表示しているスケッチのスクリーンショットを示します。

トラブルシュート

エラーが起きることもあります。コードが動作しないときはいくつかの共通の問題があり、解決できます。

  • 括弧やセミコロンが抜けている。
  • Arduinoボードが、間違ったポートに接続されている。
  • ケーブル接続の予期しない切断。

おわりに

このチュートリアルでは、大気圧センサー作成と大気圧から高度を計算するために、LPS22HBセンサーが何か、Arduino Nano 33 BLE Sense内蔵センサーとLPS22HBライブラリの使い方を学びました。

オリジナルのページ

https://docs.arduino.cc/tutorials/nano-33-ble-sense/barometric-sensor/

最終更新日

August 1, 2026

inserted by FC2 system