Wemos Lolin ESP32 OLED で、BME280 温湿度センサーを使う
前回の記事で、ESP32 OLED の画面に文字や図形を出力できるようになりました。
しかし、これではまだ単体で動作しているだけです。
せっかくの組み込みデバイスなので、センサーをつなげてみたい...
ということで、わかりやすい (?) 温湿度センサーをつなげてみることにしました。
温湿度センサー BME280
BME280 は Bosch 社が出している温湿度センサーです。
温度、湿度、気圧を 1 つのセンサーで計測することができます。
このセンサーを組み込みやすくするために、いろいろなところからモジュール化された製品が発売されています。
秋月電子やスイッチサイエンスが有名どころだと思いますが、ちょっと高いのでケチって以下のものにしました。
Amazon なので他のものと合わせ買いして、送料もケチります。
HiLetgo BME280 大気圧センサ 温湿度センサー ブレイクアウト Arduinoに対応 [並行輸入品]
- 出版社/メーカー: HiLetgo
- メディア:
- この商品を含むブログを見る
接続
BME280 のピン配置については以下のサイトが詳しく記載してくれています。
また、ESP32 OLED の I2C ピンは前回の記事のように以下の配置になっています。
- SCL: GPIO 4
- SDA: GPIO 5
よって以下のようにつなぎます。
BME280 | ESP32 |
---|---|
VCC | 3.3V |
GND | GND |
SCL | GPIO 4 |
SDA | GPIO 5 |
CSB | 未接続 |
SDO | GND |
ちょっと見にくいかもしれませんが、以下のような感じです。
MicroPython BME280 ドライバーの導入
ありがたいことに MicroPython 用の BME280 ドライバーを公開してくださっている方がいます。
bme280.py を、前回のように uPyCraft を使って ESP32 にダウンロードしましょう。
Python コード
あとは BME280 ドライバーの仕様にしたがって値を取得するだけです。
せっかくなので、取った値を OLED にも出力してみました。
import bme280 import ssd1306 i2c = machine.I2C(scl=machine.Pin(4), sda=machine.Pin(5)) bme = bme280.BME280(i2c=i2c) oled = ssd1306.SSD1306_I2C(width=128, height=64, i2c=i2c) def show(): oled.fill(0) oled.text(bme.values[0], 0, 0) oled.text(bme.values[1], 0, 10) oled.text(bme.values[2], 0, 20) oled.show() show()
取れた!!!!
一つ一つ、やってることは簡単なことなのですが、実際に取れると感動します。
なお画像には、関係ないボタンがうつってますが、これは次回以降使おうと思って設置したものです。
次は何をするか決めてませんが... 乞うご期待 (?)