子育てしながらエンジニアしたい

現在 7 歳 女の子の子育て中エンジニアによる、技術系 + 日常系ブログ。

Wemos Lolin ESP32 OLED で、BME280 温湿度センサーを使う

前回の記事で、ESP32 OLED の画面に文字や図形を出力できるようになりました。

edosha.hatenablog.jp

しかし、これではまだ単体で動作しているだけです。
せっかくの組み込みデバイスなので、センサーをつなげてみたい...
ということで、わかりやすい (?) 温湿度センサーをつなげてみることにしました。

温湿度センサー BME280

BME280 は Bosch 社が出している温湿度センサーです。
温度、湿度、気圧を 1 つのセンサーで計測することができます。

www.bosch-sensortec.com

このセンサーを組み込みやすくするために、いろいろなところからモジュール化された製品が発売されています。
秋月電子スイッチサイエンスが有名どころだと思いますが、ちょっと高いのでケチって以下のものにしました。
Amazon なので他のものと合わせ買いして、送料もケチります。

接続

BME280 のピン配置については以下のサイトが詳しく記載してくれています。

ht-deko.com

また、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

ちょっと見にくいかもしれませんが、以下のような感じです。

f:id:edosha:20180112143806j:plain

MicroPython BME280 ドライバーの導入

ありがたいことに MicroPython 用の BME280 ドライバーを公開してくださっている方がいます。

github.com

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()

f:id:edosha:20180112145343j:plain

取れた!!!!
一つ一つ、やってることは簡単なことなのですが、実際に取れると感動します。

なお画像には、関係ないボタンがうつってますが、これは次回以降使おうと思って設置したものです。
次は何をするか決めてませんが... 乞うご期待 (?)