アマゾンやアリエクで安価に入手できる LED ドットマトリクス基板を 「株価をスクロール表示するボードに仕立てる」 という思いつきからラズパイと組み合わせて光らせてみた備忘録です。 証券取引所とかでグルグル流れてるアレを想像してくれればいいです。でもしょぼいです。8x8ドットなので…

使用する基板は、8×8 のドットマトリクス LED が 4 個横一列に並んでいます。ただ購入しても基板とケーブルだけで仕様詳細は自力で見つけるしかないので、まずはハードを眺めるところからスタート。基板をひっくり返してみると MAX7219 が載っているのが分かりました。ということは、MAX7219 用のライブラリさえ導入すればソフトウェア面はだいぶ楽ができそうです。
1. ライブラリ選定と環境準備
調べてみると Python 用にちょうど良いライブラリがありました。
luma.led_matrix
https://github.com/rm-hull/luma.led_matrix
ライブラリ作者によるドキュメントにはラズパイ側の設定方法や LED 基板との結線方法も載っているので、まずはこれに従ってハードウェア環境を整えます。
https://luma-led-matrix.readthedocs.io/en/latest/install.html
2. フォント問題 ― 日本語をどうするか
英字アルファベットだけなら上記ライブラリ付属のフォントで十分ですが、表示させる銘柄名は日本語文字で出したいところ。そこで 8×8 ドット対応の 美咲フォント が使えないか検討することに。
https://littlelimit.net/misaki.htm
美咲フォント自体はいろんな形式で配布されているのですが、luma.led_matrix で扱えるビットマップフォント(BMF)形式での配布はありません。 そこで配布されているBDF形式のフォントファイルを BMF に変換してから読み込ませることにします。この変換は一度だけでいいので以後はこのBMFファイルを使いまわせそうです。
3. いよいよ株価を流してみる
株価データは Yahoo! Finance から株価を取得するライブラリ yfinance を利用します。既に多くの方が利用されているライブラリなので、先人の功績に乗っかるだけでできそうです。
ただ、取得データが 15 分遅れなので本気の株式運用には厳しそうですが、その雰囲気を味わうには十分です。
なお、美咲フォントで半角数字を表示すると字高が低くて読みづらいので、株価の数字だけは luma.led_matrix 付属の太くインパクトのある CP437_FONT フォントに切り替えています。こうやって文字種ごとにフォントを変えるだけで視認性がぐっと上がるのでおすすめです。
また yfinance で取得する株価は小数点第二位まで付いてくるので、東証銘柄については呼値単位ルールに合わせて株価で小数点表示を切り替えてます。
(参考 https://www.jpx.co.jp/equities/trading/domestic/07.html )
LED表示される銘柄名はスクリプト内で記述していますので好きな呼称にできます。
未指定の銘柄の場合は yfinance で取り出した shortName が表示されます。

LED がチカチカ動くたびに “相場を眺めている感” が増していくので、自宅デスクがちょっとしたトレーディングフロア気分に。使用したLED基板のハードの入手性も良く、ラズパイ上はPython だけで完結するので、ラズパイを使った小ネタとしてはなかなか面白い題材でした。
作成したスクリプトは以下に置いておきます
https://github.com/tarmn3/LEDMatrix_TickerBoard