証券所のティッカーみたいな細長い電光掲示板を作る話—MAX7219モジュールとRaspberry Pi Pico (rp2040)とMicrPython

わけあって、証券所のティッカーみたいな、細長い電光掲示板が必要になりました。

既製品も色々ありますが、今回の用途にはややリッチすぎるので、自作することにしました。

とはいえ、大量のLEDを制御するのは色々面倒が多いので、簡単に扱えるモジュールかなにかを使いたいところです。

MAX7219モジュール

細長いLEDマトリックスを手軽に扱えるモジュール、絶対あるはずだよなーと思って探してみると、ありました、これはまさに探していたもの!

LEDディスプレイドライバIC「MAX7219」を使ったモジュールで、カスケード接続で簡単に長く繋いでいくことができます。

MAX7219のデータシートはこちら

https://datasheets.maximintegrated.com/en/ds/MAX7219-MAX7221.pdfdatasheets.maximintegrated.com

コントローラーは、手元にストックしていたRaspberry Pi Picoでサクッと動かしてみます。

MAX7219をRaspberry Pi Pico & Micropythonで動かす

とりあえず「Max7219 Raspberry pi pico」で検索したところ、ピッタリのライブラリ&チュートリアルが見つかったので、やったことはほぼこのチュートリアルの通りです。言語はMicroPythonでした。

microcontrollerslab.com

詳しい説明はリンク先にお任せしちゃいますが、MicroPythonの開発環境はThonnyが使いやすくておすすめです。

zenn.dev

ArduinoIDEがMicroPythonに対応しそうな話もあるので、こっちも要フォローです。

blog.arduino.cc

チュートリアルのコードをちょっと改造

チュートリアルのとおり組み立てて動かしてみると、スクロールの挙動が少しいまいち(文字が全部流れ終わってから次のループが始まる)だったので、メッセージをリピートして途切れずに流れるようにしてみました。

from machine import Pin, SPI
import max7219
from time import sleep
import math

spi = SPI(0,sck=Pin(2),mosi=Pin(3))
cs = Pin(5, Pin.OUT)

num_of_matrix = 32
display = max7219.Matrix8x8(spi,cs,num_of_matrix)

display.brightness(15)

scrolling_message = "HELLO WORLD!"
length = len(scrolling_message)
column = (length * 8)
message_repeat = math.ceil(num_of_matrix / length) 
    
while True:
    for x in range(num_of_matrix * 8, - (column - (num_of_matrix * 8)), -1):
        display.fill(0)

        display.text(scrolling_message * (message_repeat + 1) ,x - column * (message_repeat),0,1)
        display.show()
        sleep(0.1 )

レールマウントにしたい

市販のモジュールはドットマトリクスLED4つのものが多くて、長くても8つなので、もっと長く繋ぎたくなります。

それで、長く繋いだときに良い感じに固定したくなるわけですが、このモジュール、作っている場所によって設計がまちまちで、穴の位置やいろんな寸法が少しづつ違います。

数種比べてみたところ、基板の幅が約32mmというところだけは共通だったので、これを頼りにすることにしました。

レールマウント用のブラケットを作った

  • 入手性が良く軽くて丈夫な、10mm角のアルミチャンネルをレールにする
  • 取り付けやメンテナンス性を良くするために、ワンタッチで付け外しできると良い
  • なるべくシンプルに
  • レーザーカットで作れるように2次元形状で設計

そんなことを考えながら出来上がったのがこのカタチです。

スナップ取り付けを実現したくて、バネ構造をつけました、割れやすいアクリルでも作れるよう、なるべくバネ部分を長く取ってみました。

そしてこちらが取り付け/外しの様子、今回は5mmの透明アクリルをレーザーカットして製作しました。

配線がワンタッチじゃないところは要改良です。

twitter.com

自分で言うのもなんですが、これは画期的なシステムができたんじゃないかと思います、アリエクのショップとかがこれを改良して量産してくれないかなぁ。

そして1m繋いだ様子がこちら、Pi Picoの3Vピンを電源にしても、明るさを上げすぎなければ問題なく動きました。(あとから試したら、5VのVBUSに繋いでも問題なく動きました)

twitter.com

あとは、日本語とかピクセルアートも表示してみたいけれど、とりあえず今日はここまで。


リアルタイムの進捗はTwitterスレッドに記録しています、ピクセルアートを表示したりグリッチエフェクトをかけてみたりもしてるので、興味わいたらぜひフォローしてください👇

twitter.com