ESP32のMicroPythonで温湿度をディスプレイモジュールに表示する方法
この記事では、ESP32とMicroPythonを使ってディスプレイモジュールに温湿度を表示する方法を解説します。
この記事で学べること
- ESP32とディスプレイモジュール、温湿度センサーの接続方法
- MicroPythonのコード例
ステップごとの解説
- 必要な部品を準備する
今回も前回、MicroPythonをインストールしたM5STACK社のM5StampS3を使います。
M5StampS3は、Amazon、スイッチサイエンス社、マルツエレック社などで購入することができます。 - M5StampS3にMicroPythonをインストールする
前回の記事を参考にMicroPythonをインストールします。 - 温湿度センサーを準備する
前回の記事を参考に温湿度センサー(BME680モジュール)を準備します。 - ディスプレイモジュールを準備する
前回の記事を参考にディスプレイモジュールを準備します。 - M5StampS3とBME680モジュールとの接続
BME680のSDAとM5StampS3のSDA(GPIO13)、BME680のSCLとM5StampS3のSCL(GPIO15)を接続します。

- M5StampS3とディスプレイモジュールとの接続
ディスプレイモジュールのSDAとM5StampS3のSDA(GPIO13)、ディスプレイモジュールのSCLとM5StampS3のSCL(GPIO15)を接続します。

- ディスプレイモジュールとBME680モジュールとM5StampS3をブレッドボード上で接続する
下表と写真を参考に接続します。
ジャンパーワイヤは、秋月電子やAmazonで入手できます。
|
部品 3298_2cba4e-42> |
ピン 3298_178de9-8c> |
ブレッドボードマトリックス番号 3298_09c0d7-79> |
|
M5StampS3 3298_946e52-c6> |
G1 3298_4431af-fd> |
22 – I 3298_4ad1ab-6a> |
| 3298_192c37-da> |
G3 3298_a1a5a2-b8> |
23 – I 3298_319ef7-b3> |
| 3298_98d419-0c> |
G5 3298_60c885-6d> |
24 – I 3298_be1a1c-06> |
| 3298_9bee82-c4> |
G7 3298_b26ea3-57> |
25 – I 3298_e0041c-ac> |
| 3298_c8ad36-08> |
G9 3298_ff5ec8-7e> |
26 – I 3298_1abea6-fa> |
| 3298_8262de-00> |
GND 3298_e2e55d-91> |
27 – I 3298_083d85-1e> |
| 3298_b9868a-59> |
5V 3298_685916-d9> |
28 – I 3298_2cbc0c-8e> |
| 3298_9a6eed-4c> |
G13 3298_c14784-33> |
29 – I 3298_e2eb34-fc> |
| 3298_e6a1f4-61> |
G15 3298_36d923-9a> |
30 – I 3298_fc5872-99> |
| 3298_0ee116-18> |
3V3 3298_c6f98d-4a> |
25 – E 3298_ddf91b-35> |
| 3298_9bfea8-55> |
G43 3298_3783f9-a4> |
26 – E 3298_1f2380-56> |
| 3298_3bc72d-44> |
G44 3298_3dc272-7e> |
27 – E 3298_5d5db4-e2> |
| 3298_638126-01> |
EN 3298_653a7e-3f> |
28 – E 3298_2d586b-48> |
| 3298_27497c-6d> |
G0 3298_a9d3fe-34> |
29 – E 3298_0dedf8-85> |
| 3298_c9f47c-cc> |
GND 3298_938ec3-6f> |
30 – E 3298_137196-20> |
|
ディスプレイモジュール 3298_3e5342-a1> |
GND 3298_3d7edd-2c> |
10 – H 3298_351067-1f> |
| 3298_7ee3ba-e4> |
VCC 3298_d6fc7d-ce> |
9 – H 3298_ae7ecc-65> |
| 3298_a75448-d8> |
SCL 3298_bca91e-77> |
8 – H 3298_353665-0e> |
| 3298_c0d1ab-1a> |
SDA 3298_fbab8f-ed> |
7 – H 3298_37ff7b-22> |
|
BME680モジュール 3298_d0fa51-36> |
VIN 3298_d91d13-de> |
9 – I 3298_cdd834-ca> |
| 3298_16cd4b-34> |
SCL 3298_9cff66-58> |
8 – I 3298_75a7c2-db> |
| 3298_621ed6-32> |
SDA 3298_1ea698-89> |
7 – I 3298_c0e69f-ee> |
| 3298_02768a-52> |
GND 3298_3a761d-f8> |
6 – I 3298_dd7a1b-67> |
|
ジャンパーワイヤ 3298_451d9d-a5> |
ブレッドボードマトリックス番号 3298_12ea6c-58> |
|
ジャンパーワイヤ1 3298_5a4f4c-7a> |
28 – L === 5V 3298_bae8b7-57> |
|
ジャンパーワイヤ2 3298_d81f6f-e3> |
27 – L === GND 3298_45de96-79> |
|
ジャンパーワイヤ3 3298_bec4f3-18> |
30 – J === 8 – J 3298_2a3f14-09> |
|
ジャンパーワイヤ4 3298_4afaca-3f> |
29 – K === 7 – K 3298_5efb68-81> |
|
ジャンパーワイヤ5 3298_9d802b-4d> |
9 – L === 5V 3298_a90b65-0a> |
|
ジャンパーワイヤ6 3298_f2c136-ab> |
10 – L === GND 3298_4e83e2-dc> |
|
ジャンパーワイヤ7 3298_466069-a7> |
6 – L === GND 3298_142129-db> |

- M5StampS3をPCに接続する
M5StampS3とPCをUSBケーブルで接続します。接続できているか確認します。
ls -l /dev/tty.usbmodem*
crw-rw-rw- 1 root wheel 0x9000006 8 24 16:37 /dev/tty.usbmodem11401
- VSCodeで以前、作ったプロジェクトを選択する
VSCodeを起動して、以前、作ったプロジェクトを選択します。

- エディタで新しいファイルを作成する
左側のエクスプローラにて右クリックして、「新しいファイル」を選択します。ファイル名を入力する欄が表示されるので、適当に名前を入力します。今回は、「temp_display.py」としました。

- 下記コードをエディターで記入する
「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()
- 「temp_display.py」を実行する
左のエクスプローラにて、「temp_display.py」を選択して、右クリックから、「Run current file on Pico」をクリックすると、ディスプレイモジュールに、温度、湿度、圧力(気圧)、ガスが表示されます。
温度:temperat、湿度:humidity、圧力(気圧):pressure、ガス:gas

- 一定間隔で温湿度を更新する
温湿度計のように表示させるために、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デバイスに簡単に組み込めます。
