Nano 33 BLE Senseを用いて、LPS22HB大気圧センサ―からデータを取得する方法を学びます。
このチュートリアルでは、大気圧の測定を通じておおよその海抜を計算するために、Arduino Nano 33 BLE Senseを利用します。大気圧は内蔵のLPS22HBセンサーにより取得可能です。
大気圧センサーの一般的なアプリケーションには、GPSや短期間の天候の変化の予測のほかに、大気圧による高度の検出があります。このチュートリアルでは、ユーザーのいる環境のおおよその海抜を求めるために、大気圧データの変換に焦点をあてます。
目的
このプロジェクトの目的は以下の通りです。
- LPS22HBとは何かを学びます。
- LPS22HBライブラリを使用します。
- Arduino Nano 33 BLE Senseからセンサーの生データを出力する方法を学びます。
- kPa単位を高度(メートル)に変換する方法を学びます。
- シリアルモニターを使ってデータを表示します。
- あなたのいる場所の高度を測定する気圧計を作成します。
必要なハードウェアとソフトウェア
- このプロジェクトでは、外部のセンサーや機器を利用しません。
- このチュートリアルでは、ボードのプログラムを記述するのに、Arduino Create Cloudエディタを利用します。
LPS22HBセンサー
LPS22HBは、超小型ピエゾ抵抗型の絶対気圧センサーで、大気圧をデジタル出力します。デバイスは、測定素子と、測定素子からアプリケーション間をI2CもしくはSPIインターフェイスで行うICとからなります。

LPS22HBセンサー
絶対大気圧を検出する測定素子は、浮遊シリコン膜(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)です。
以下のグラフは、大気圧と海抜の数学的な関係を示しています。

標高と大気圧のグラフ
プログラム作成
- 設定
Arduino Cloudエディタを開き、Librariesタブをクリックし、LPS22HBライブラリを探します。その後、> Examplesで、ReadPressureスケッチを開きます。開いた後は、Barometerという名前に変更します。

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

ボードを選択する
- おおよその高度を計算する
ここでは、大気圧センサーの結果を用いて、ボードのおおよその高度をメートル単位で表示するように、スケッチ例を変更します。
Arduino_LPS22HBライブラリをインクルードしたら、setup()はそのままです。ここでは、シリアル通信を標準の9600ボーで初期化し、センサーも初期化します。センサーの初期化に失敗したときは、エラーメッセージを表示します。
loop()では、BARO.readPressure()関数がセンサーから生データを取得し、float pressureに格納します。ここで、大気圧センサーデータを光度に変換するために、前述の数式を微調整し追加する必要があります。
float altitude = 44330 * ( 1 - pow(pressure/101.325, 1/5.255) );
この数式では、書式を変更し等式をコードに変換しています。
注意: pow()関数は、べき乗を計算する関数です。
最後に、Serial.println()関数を表示したいデータ(高度(メートル))に適用します。
|
|
- 完全なコード
コード作成セクションをスキップした場合のために、完全なコードを以下に示します。
|
|
テスト
スケッチの検証とアップロードに成功したら、左側のメニューからモニターを開きます。新しい値が表示されるのがわかります。コードをテストするには、ボードを固定位置に安定化させ、シリアルモニターに表示される値を観察します。アパートに住んでいれば、別の階に行って高度が変わることの実験を行うことができます。
値を表示しているスケッチのスクリーンショットを示します。

シリアルモニターに表示された大気圧
トラブルシュート
エラーが起きることもあります。コードが動作しないときはいくつかの共通の問題があり、解決できます。
- 括弧やセミコロンが抜けている。
- Arduinoボードが、間違ったポートに接続されている。
- ケーブル接続の予期しない切断。
おわりに
このチュートリアルでは、大気圧センサー作成と大気圧から高度を計算するために、LPS22HBセンサーが何か、Arduino Nano 33 BLE Sense内蔵センサーとLPS22HBライブラリの使い方を学びました。
オリジナルのページ
https://docs.arduino.cc/tutorials/nano-33-ble-sense/barometric-sensor/
最終更新日
August 1, 2026