13890 1.3inch OLED display HAT

はじめに

赤外線カメラを作って,フィルタで遊んでたりしてた.ファインダーが無いとか色々不便なことはあれど,これはこれで楽しい.

が,RasPiの起動が完了したのか,撮影処理中なのか程度はわかるようにしたい.

今回は 1.3inch OLED display HAT(13890)を使って簡易的にステータスを表示できるようにする.

1.3inch OLED display HAT(13890)

setup

waveshare の1.3インチOLEDディスプレイHATを買ってみた.

https://amzn.to/4fdhClr

ドキュメントはこちら.

1.3inch OLED HAT - Waveshare Wiki

ドキュメントによるとデフォルトのインタフェースは SPI で,ジャンパーで I2C に変更できるらしい.が,指示通りにジャンパーを変更しても I2C にできなかった...(できた人教えて...)

諦めてドキュメントの指示通りに SPI を有効化.

sudo raspi-config
Choose Interfacing Options -> SPI -> Yes to enable the SPI interface.

Python Programming

OLED へ描画する大雑把な流れは次の通り.

  1. OLED ディスプレイ初期化
  2. PIL で描画するイメージを用意
  3. OLED に出力
import SH1106
from PIL import Image, ImageDraw, ImageFont

# Initialize OLED Display
disp = SH1106.SH1106()
disp.Init()
disp.clear()

# Create a blank image for drawing
image     = Image.new('1', (disp.width, disp.height), 'WHITE')
draw      = ImageDraw.Draw(image)
font      = ImageFont.truetype('Consolas.ttf', 10)

# clear
draw.rectangle((0, 0, disp.width, disp.height), fill=1)

draw.text((0, 30), "HELLO", font=font)
disp.ShowImage(disp.getbuffer(image))

disp.RPI.module_exit()

ついでにビデオも撮影できるようにしたり,なんやかんやあってこんな感じ.

リアルタイムにカメラ画像を表示するのはちょっと厳しいけど,簡易的なプレビュー機能も作ってみた.

128×64 でもギリギリ特徴は捉えられていてよさげ.

おわりに

PiSugar の API を使ってバッテリー残量を表示できるようにしてみたが,PiSugar の物理ボタンを押すと API のレスポンスの先頭に single って文字列がついたり,single しか返って来なかったりする謎のバグに遭遇した.物理ボタンはシャットダウン専用ってことにして目を瞑ることにする.

まだちょこちょこ手直しした方が良さそうな部分もあるけど,結構マシになったんじゃなかろうか.問題はバッテリーの保ち.

GitHub - HeavyMoon/ZeroCam
Contribute to HeavyMoon/ZeroCam development by creating an account on GitHub.

READMEはあとで整理する(たぶん

コメント

タイトルとURLをコピーしました