初めてのRaspberry Pi Pico ④ Circuitpythonで気圧センサLPS25HB


 第2回では、BMP280をつないで、気圧や温度をMuに表示しました。ここでは気圧センサLPS25HBを使いまします。どちらのブレークアウト・ボードもAdafruit製です。動作環境はラズパイ4です。

LPS25HBボードのおもなスペック

  • 動作電圧 3.3V(デバイスは1.7~3.6 V)
  • 測定範囲 260~1260hPa
  • 確度 ±0.1hPa(25℃)、±1hPa(0~80℃)
  • インターフェース SPI、I2C。I2C用プルアップ抵抗は実装、5V用レベル変換回路実装

準備

 ダウンロード・フォルダにあったadafruit-circuitpython-raspberry_pi_pico-en_US-6.2.0-beta.1.uf2をデスクトップにドロップしておきます。
 BOOTSELボタンを押したまま、ラズパイとPicoをUSBケーブルをつなげます。つながったら、BOOTSELから手を放します。RPI-RP2ドライブがマウントされます。そのRPI-RP2ドライブへ、adafruit-circuitpython-raspberry_pi_pico-en_US-6.2.0-beta.1.uf2をドラッグします。コピーが数秒で終わると、デスクトップには、CIRCUITPYドライブがマウントされています。

 エディタMuを起動します。Circuitpythonモードで立ち上がります。

接続

 Adafruitの気圧センサLPS25HB(Adafruit LPS25 and LPS22 Barometric Pressure and Temperature Sensors)をBMP280の4ピン・コネクタにつなげます。ケーブルは純正ではないので、色はSTEMMA QTと異なっています。

STEMMA QTコネクタ 物理的ピン番号 GPIOピン番号
SCL 緑 12 GP9
SDA 黄 11 GP8
Vcc 赤 36 3.3V
GND 黒 13 GND

 Muで次のプログラムを動かします。i2cのScannerです。

 探してきたのは二つのアドレスです。119は16進で0x77なので、BMP280です。93は16進で0x5dで、LPS25HBのスレーブ・アドレスです。

WHO_AM_I

 データシートにWHO_AM_I(0x0f)を読み出し、0xbdが読めれば正常に通信できていると書かれているので実行します。

 10進の189は16進では0xbdなので、うまく読めていますね。

LPS25HBのドライバとプログラム

 ラズパイのlibフォルダにあるadafruit_lps2x.mpyをPicoのlibフォルダへコピーします。また、adafruit_resisterフォルダもコピーします。

 確認します。

 ラズパイのexamplesにあるlps2x_simpletest.pyをエディタで読み込みます。
(※)ラズパイのlib、examplesというのは、第2回でAdafruitからダウンロードしたzipファイルを解凍して出てきたフォルダをラズパイの\piへコピーしものです。どちらもPicoのEEPROMの容量が小さすぎてコピーできないので、必要なものだけをコピっています。

 第2回のBMP280のプログラムに、必要なものを追加します。

# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT

import time
import board
import busio
import adafruit_bmp280
import adafruit_lps2x

# Create library object using our Bus I2C port
i2c = busio.I2C(board.GP9, board.GP8)
bmp280 = adafruit_bmp280.Adafruit_BMP280_I2C(i2c)
lps = adafruit_lps2x.LPS25(i2c)

while True:
    print("\nTemperature: {:0.1f} C  {:0.1f} C".format(bmp280.temperature, lps.temperature))
    print("Pressure: {:0.1f} hPa {:0.1f} hPa".format(bmp280.pressure, lps.pressure))
    time.sleep(2)

 実行中の様子です。