ESP32のMicroPythonで温湿度をディスプレイモジュールに表示する方法

この記事では、ESP32とMicroPythonを使ってディスプレイモジュールに温湿度を表示する方法を解説します。

この記事で学べること

  • ESP32とディスプレイモジュール、温湿度センサーの接続方法
  • MicroPythonのコード例

ステップごとの解説

  1. 必要な部品を準備する
    今回も前回、MicroPythonをインストールしたM5STACK社のM5StampS3を使います。
    M5StampS3は、Amazonスイッチサイエンス社マルツエレック社などで購入することができます。
  2. M5StampS3にMicroPythonをインストールする
    前回の記事を参考にMicroPythonをインストールします。
  3. 温湿度センサーを準備する
    前回の記事を参考に温湿度センサー(BME680モジュール)を準備します。
  4. ディスプレイモジュールを準備する
    前回の記事を参考にディスプレイモジュールを準備します。
  5. M5StampS3とBME680モジュールとの接続
    BME680のSDAとM5StampS3のSDA(GPIO13)、BME680のSCLとM5StampS3のSCL(GPIO15)を接続します。
  1. M5StampS3とディスプレイモジュールとの接続
    ディスプレイモジュールのSDAとM5StampS3のSDA(GPIO13)、ディスプレイモジュールのSCLとM5StampS3のSCL(GPIO15)を接続します。
  1. ディスプレイモジュールとBME680モジュールとM5StampS3をブレッドボード上で接続する
    下表と写真を参考に接続します。
    ジャンパーワイヤは、秋月電子やAmazonで入手できます。

部品

ピン

ブレッドボードマトリックス番号

M5StampS3

G1

22 – I

G3

23 – I

G5

24 – I

G7

25 – I

G9

26 – I

GND

27 – I

5V

28 – I

G13

29 – I

G15

30 – I

3V3

25 – E

G43

26 – E

G44

27 – E

EN

28 – E

G0

29 – E

GND

30 – E

ディスプレイモジュール

GND

10 – H

VCC

9 – H

SCL

8 – H

SDA

7 – H

BME680モジュール

VIN

9 – I

SCL

8 – I

SDA

7 – I

GND

6 – I

ジャンパーワイヤ

ブレッドボードマトリックス番号

ジャンパーワイヤ1

28 – L === 5V

ジャンパーワイヤ2

27 – L === GND

ジャンパーワイヤ3

30 – J === 8 – J

ジャンパーワイヤ4

29 – K === 7 – K

ジャンパーワイヤ5

9 – L === 5V

ジャンパーワイヤ6

10 – L === GND

ジャンパーワイヤ7

6 – L === GND

  1. M5StampS3をPCに接続する
    M5StampS3とPCをUSBケーブルで接続します。接続できているか確認します。
ls -l /dev/tty.usbmodem*
crw-rw-rw-  1 root  wheel  0x9000006  8 24 16:37 /dev/tty.usbmodem11401
  1. VSCodeで以前、作ったプロジェクトを選択する
    VSCodeを起動して、以前、作ったプロジェクトを選択します。
  1. エディタで新しいファイルを作成する
    左側のエクスプローラにて右クリックして、「新しいファイル」を選択します。ファイル名を入力する欄が表示されるので、適当に名前を入力します。今回は、「temp_display.py」としました。
  1. 下記コードをエディターで記入する
    「temp_display.py」を選択すると、エディター画面が開くので、下記コードを記入して保存します。
from machine import Pin, I2C
import ssd1306
import bme680

i2c = I2C(sda=Pin(13), scl=Pin(15))

# using default address 0x3C
display = ssd1306.SSD1306_I2C(128, 64, i2c)

# using default address 0x77
bme = bme680.BME680_I2C(i2c)

display.text('temperat:' + str("{:.2f}".format(bme.temperature)), 0, 0, 1)
display.text('humidity:' + str("{:.2f}".format(bme.humidity)), 0, 10, 1)
display.text('pressure:' + str("{:.2f}".format(bme.pressure)), 0, 20, 1)
display.text('gas     :' + str("{:.1f}".format(bme.gas)), 0, 30, 1)
display.show()
  1. 「temp_display.py」を実行する
    左のエクスプローラにて、「temp_display.py」を選択して、右クリックから、「Run current file on Pico」をクリックすると、ディスプレイモジュールに、温度、湿度、圧力(気圧)、ガスが表示されます。

    温度:temperat、湿度:humidity、圧力(気圧):pressure、ガス:gas
  1. 一定間隔で温湿度を更新する
    温湿度計のように表示させるために、while構文を使って10秒間隔で表示を更新させます。
    下記コードに変更して、実行させます。停止するには、Control + Cを押下します。
from machine import Pin, I2C
import ssd1306
import bme680
from time import sleep

i2c = I2C(sda=Pin(13), scl=Pin(15))

# using default address 0x3C
display = ssd1306.SSD1306_I2C(128, 64, i2c)

while True:
  # using default address 0x77
  bme = bme680.BME680_I2C(i2c)

  display.text('temperat:' + str("{:.2f}".format(bme.temperature)), 0, 0, 1)
  display.text('humidity:' + str("{:.2f}".format(bme.humidity)), 0, 10, 1)
  display.text('pressure:' + str("{:.2f}".format(bme.pressure)), 0, 20, 1)
  display.text('gas     :' + str("{:.1f}".format(bme.gas)), 0, 30, 1)
  display.show()

  sleep(10)  # 10秒タイマー

  display.fill(0) # スクリーン全体を colour=0 で埋める

まとめ

ESP32とMicroPythonを使えば、シンプルなコードで温度センサーを動かし、ディスプレイに表示させることができます。応用すればIoTデバイスに簡単に組み込めます。

類似投稿