寝台急行はまなす

札幌駅 22:00発 増結12両編成 青森行き

micropythonでOLED (SSD1306)

qiita.com

MicroPython Advent Calender 8日目です。
今日はESP32 + micropythonでOLEDに文字を表示してみました。

使ったもの

SPI接続方式のOLEDディスプレイです。Aliexpressで3$~で売られています。 私は知り合いの方からタダで譲ってもらいました。ありがとうございます。

このパーツの詳しい説明とArduinoでの使い方は下記ページがとても詳しく参考になります。

[SPI] 0.96 inch OLED ディスプレイ (ER-OLED0.96-3W / SSD1306)

SSD1306用ドライバの入手と転送

SSD1306用のドライバをgithubから拾ってきてampyツールで転送しておきます。

micropython/ssd1306.py at master · micropython/micropython · GitHub

> ampy -p COM4 put ssd1306.py

配線

ESP32とSSD1306を接続します。 以下のページと同じように配線しました。

ESP32 + MicroPythonでOLEDに表示させてみた: 楽しくやろう。

SSD1306 ESP32
VCC 3v3
GND GND
D0 IO14
D1 IO13
RES IO16
DC IO17
CS IO18

いざ動かし

ではREPLで動かしてみましょう

>>> from machine import Pin, SPI
>>> spi = SPI(2, baudrate=8000000, polarity=1, phase=0, sck=Pin(14), mosi=Pin(13), miso=Pin(12))
>>> from ssd1306 import SSD1306_SPI
>>> oled = SSD1306_SPI(128, 64, spi, dc=Pin(16), res=Pin(17), cs=Pin(18))
>>> oled.text('MicroPython', 0, 0)
>>> oled.show()
>>> oled.text('Advent Calender', 0, 10)
>>> oled.show()
>>> oled.text('8 days', 0, 20)
>>> oled.show()

1枚目の写真のように文字が表示されました。

NTPで取得した時間を表示したりなど応用ができそうですね。 日本語のフォントをSDカードから読みだして漢字やひらがなの表示なんか挑戦してみたいですね。