わけあって、証券所のティッカーみたいな、細長い電光掲示板が必要になりました。
既製品も色々ありますが、今回の用途にはややリッチすぎるので、自作することにしました。
- MAX7219モジュール
- MAX7219をRaspberry Pi Pico & Micropythonで動かす
- チュートリアルのコードをちょっと改造
- レールマウントにしたい
- レールマウント用のブラケットを作った
とはいえ、大量の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でした。
詳しい説明はリンク先にお任せしちゃいますが、MicroPythonの開発環境はThonnyが使いやすくておすすめです。
ArduinoIDEがMicroPythonに対応しそうな話もあるので、こっちも要フォローです。
チュートリアルのコードをちょっと改造
チュートリアルのとおり組み立てて動かしてみると、スクロールの挙動が少しいまいち(文字が全部流れ終わってから次のループが始まる)だったので、メッセージをリピートして途切れずに流れるようにしてみました。
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の透明アクリルをレーザーカットして製作しました。
配線がワンタッチじゃないところは要改良です。
— アツユキ (@aaa_tu) 2022年10月2日twitter.com
自分で言うのもなんですが、これは画期的なシステムができたんじゃないかと思います、アリエクのショップとかがこれを改良して量産してくれないかなぁ。
そして1m繋いだ様子がこちら、Pi Picoの3Vピンを電源にしても、明るさを上げすぎなければ問題なく動きました。(あとから試したら、5VのVBUSに繋いでも問題なく動きました)
twitter.comドットマトリックスLED×32個ぶんで1mちょっと、光量やや下げればPi Picoの3V3ピンで駆動できた pic.twitter.com/C81rNMSYC3
— アツユキ (@aaa_tu) 2022年10月3日
あとは、日本語とかピクセルアートも表示してみたいけれど、とりあえず今日はここまで。
リアルタイムの進捗はTwitterスレッドに記録しています、ピクセルアートを表示したりグリッチエフェクトをかけてみたりもしてるので、興味わいたらぜひフォローしてください👇
twitter.comグリッチエフェクトをかけると静止画でも動きが出せていいな
— アツユキ (@aaa_tu) 2022年11月26日
これは絶対無事に出られないタイプの非常口 pic.twitter.com/PAdPh3kslt