Raspberry Pi 400にセンサーつないで温度・湿度・気圧を測定

Raspberry Pi 400にセンサーつないで温度・湿度・気圧を測定
Page content

本記事は次の記事の続編です。

1. センサー接続に初挑戦

私は特に用途を決めずに、キーボード一体型のRaspberry Pi 400を購入しましたが、それとは関係なしにいま手元には、「部屋の温度・湿度・気圧を自宅サーバ (Raspberry Pi 4) で計測したいな……」と考えて調達した、BME280というセンサーも届いている。

ちょうどいい。センサーの動作確認も兼ねて、Raspberry Pi 400での温度・湿度・気圧の取得に挑戦してみよう。ちなみにラズパイに電子部品をつなぐのは今回が初めてです。

2. 材料

BME280搭載 温湿度・気圧センサモジュール ピンヘッダ実装済

BME280搭載 温湿度・気圧センサモジュール ピンヘッダ実装済

ブランド: スイッチサイエンス(Switch Science)

サンハヤト テストワイヤー メス-メス(5色、10本入り) TTW-202

サンハヤト テストワイヤー メス-メス(5色、10本入り) TTW-202

ブランド: サンハヤト

今回はとりあえず配線のみ試せればいいやと考えて、ブレッドボードは仕入れていません。

3. 接続手順

Raspberry Pi 400には「Raspberry Pi OS」を導入してある想定です。

  1. ラズパイのI2C通信の機能を有効にする
    • GUI: ラズベリー印の [メニュー] > [設定] > [Raspberry Pi の設定] > [インターフェース] を開き、[I2C] を有効に切り替える → そのあと指示通りにOS再起動を行う
    • CUI: sudo raspi-config でGUIと同様に行えるらしい
  2. 安全のためラズパイの電源をOFFにして、次の2つのページを参考にラズパイとセンサー間の配線を行う
# 引用元: https://qiita.com/yukataoka/items/8f9046587c978e91f689
SDI (BME280)  -> SDA P03 (Raspberry Pi)
SCK (BME280)  -> SCL P05 (Raspberry Pi)
GND (BME280)  -> GND  P06 (Raspberry Pi)
SDO (BME280)  -> GND  P09 (Raspberry Pi)
Vio (BME280)  -> 3.3v P01 (Raspberry Pi)
CSB (BME280)  -> 3.3v P17 (Raspberry Pi)
  1. 配線済みの状態で、ラズパイの電源をONにする
  2. 次のコマンドを実行して、「76」が表示されることを確認する。これは「I2Cアドレスは0x76」であることを意味するらしい
$ sudo apt install i2c-tools
$ sudo i2cdetect -y 1
	0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- 76 --                         
  1. 次のコマンドを実行して、python2環境にsmbus2モジュールを導入
pip --version # python 2系のpipであることを確認
sudo pip install smbus2
  1. 次のコマンドを実行して、スイッチサイエンス社提供のBME280用サンプルコードbme280_sample.pyを取得
$ git clone https://github.com/SWITCHSCIENCE/samplecodes
$ cd samplecodes/BME280/Python27
$ ls -al
合計 16
drwxr-xr-x 2 pi pi 4096 11月 17 23:42 .
drwxr-xr-x 4 pi pi 4096 11月 17 23:42 ..
-rwxr-xr-x 1 pi pi 3873 11月 17 23:42 bme280_sample.py
-rwxr-xr-x 1 pi pi   14 11月 17 23:42 requirements.txt
  1. 次のコマンドを実行して、温度・気圧・湿度が取得できることを確認する
$ python bme280_sample.py 
temp : 25.93  ℃
pressure : 1026.02 hPa
hum :  51.49 %

このように、センサーからの各種の値がラズパイで取得できれば、あとはサンプルのPythonスクリプトを参考に、煮たり焼いたり、お好みで加工すればいいですね。私はThingSpeakで、これら3つの測定値のグラフを描画することを次の目標にします。

P.S. 上の写真では、ラズパイで取得した値との比較対象として、iPadで「phyphox」というアプリを開き、気圧のグラフを表示しています。