はじめに
こんにちは、piyovateです🐣✨
前回の記事では『Raspberry Pi Pico WH』のセットアップを行い、LEDを点滅させるところまで成功しました!
今回は、購入した温湿度センサー『BME280』を半田付けして、ラズパイPico WHと接続し、実際に温度・湿度・気圧を取得する動作テストを行います。
📌 今回の目標
- BME280センサーの半田付け
- ラズパイPico WHとの配線(I2C接続)
- MicroPythonを使ってセンサーデータを取得
🔧 Step1:人生初!半田付けにチャレンジ
BME280センサーを使うためにはピンヘッダの半田付けが必要でした。
はじめての半田付けでドキドキしましたが、なんとかピンヘッダを基板に固定することができました!
少し斜めになったりもしましたが、接触は問題なさそう。次の配線へ進みます。
🔌 Step2:配線(ジャンパーワイヤ+ブレッドボード)
半田付け後、ジャンパーワイヤとブレッドボードを使って以下の配線を行いました。
BME280のピン | Pico WHのピン |
---|---|
Vio | 3.3V(36番ピン) |
GND | GND(38番ピン) |
SCK | GP1(2番ピン・SCL) |
SDI | GP0(1番ピン・SDA) |
この時、SDOピンは何も繋げていませんでした。
📥 MicroPython用のBME280ドライバを追加
BME280センサーのデータを簡単に取得するため、MicroPython用のドライバを導入しました。使用したのは以下のGitHubリポジトリのドライバです。
上記リポジトリからbme280_float.py
ファイルをダウンロードし、Raspberry Pi Pico WHのMicroPython環境にbme280.py
という名前で保存しました。
※外部リポジトリの利用は自己責任で行ってください。
これでBME280のデータ取得が簡単に行えるようになりました。
⚠️ 通信がなぜか不安定に...
実際に以下のコードを動かしてみました。
from machine import Pin, I2C
import bme280
import time
i2c = I2C(0, sda=Pin(0), scl=Pin(1))
sensor = bme280.BME280(i2c=i2c)
while True:
try:
temperature, pressure, humidity = sensor.values
print('温度:', temperature)
print('湿度:', humidity)
print('気圧:', pressure)
print('-------------------')
except OSError as e:
print("通信エラーが発生しました。再試行します...", e)
time.sleep(2)
すると...
OSError: [Errno 5] EIO
通信エラーが頻発。時々データが取得できるものの、かなり不安定でした💦
🔍 原因発見!I2Cアドレスが固定されていなかった!
調べてみたところ、センサーのI2Cアドレスが、通信のたびに0x76と0x77の間で変化していました。
原因は 「SDOピンが浮遊状態(未接続)」 であったためでした。
✅ 対策(SDOピンをGNDに接続して解決!)
問題を解決するために、BME280のSDOピンを以下のように接続しました。
BME280のピン | Pico WHのピン |
---|---|
SDO | GND(33番ピン) |
これで、センサーのI2Cアドレスが常に0x76
に固定され、通信が安定しました✨
🎉 最終的な結果(成功!)
以下のように安定してデータを取得できるようになりました。
温度: 24.50C
湿度: 25.13%
気圧: 1011.34hPa
-------------------
温度: 24.51C
湿度: 25.08%
気圧: 1011.35hPa
-------------------
温度: 24.51C
湿度: 25.10%
気圧: 1011.37hPa
-------------------
温度: 24.52C
湿度: 25.08%
気圧: 1011.35hPa
-------------------
湿度が25%…加湿器買いましょう!😂
🔜 次回の予定
次回は、今回取得した温度・湿度・気圧のデータをブラウザで確認できるよう、Raspberry Pi Pico WHで簡単なWebサーバーを立ち上げます!
センサーデータをAPIのように配信し、最終的には弊社のホームページでいつでも確認できるようにする予定です✨
次回もぜひお楽しみに🐣✨