micropythonでOLED (SSD1306)
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カードから読みだして漢字やひらがなの表示なんか挑戦してみたいですね。