32×8のフルカラーLEDマトリクスを4枚連結して32×32の表示器に(MicroPython)

32×8のフルカラーLEDマトリクスは文字の大きな時計を作るのによく使っています。LEDマトリクスの値段は2022年5月の時点で2799円でした。

今回はそれを見ていたKさんから4枚連結して32×32でドット絵の表示器を作りたいとのリクエストがありました。それなりの値段になるので、Aliexpressで探すと1150円です。

32×32=1024個のLEDは全てフルに点灯するわけではありませんが、USBからの給電では不安なので5V 4AのAC/DCアダプター電源を使います。コネクタを使って4枚を連結します。

OLYMPUS DIGITAL CAMERA
OLYMPUS DIGITAL CAMERA

4枚を横に並べてコネクタで接続するとLEDは直列に接続されるので楽なのですが、縦に並べると下の絵のようになります。

(x,y)を指定するとLEDの番号がわかる関数serial_pos(x,y)を作って対応します。ドット絵のデータはimage1に書きます。1024個のデータなので大変だろうと思いましたが、エクセルファイルにドット絵を書き出すプログラムが公開されているようなので、カンマ区切りで出力してコピペの後少し修正すればそんなには面倒では無いようです。色はpalette14で指定します。

 

 

 

 

 

 

 

 

 

 

ラズパイPicoとMicroPythonでPWMコントローラー

PWM制御端子のあるクーリングファンで垂直風洞を作りました。JAXAの手作り風洞のパラメータを参考にして、ファンから少し離してハニカムの整流板を取り付けました。
https://www.yac-j.com/wp-content/themes/yac/pdf/labo/list/5.Experiment/5-8.pdf

翼付きの種子が風洞内で回転する様子を観察するための風洞なので、15cmの高さで風速が1/3、45cmの高さで風速が1/6になるように、開口を広げています。透明シートは100円ショップのB4サイズのカードケース(ハードタイプ)を使いました。

ファンは120mm角38mm厚で12V 2.1AのSanyo Denki America Inc.製の「9GV1212P1G01」(7500円程度)です。(1号機ではPC用で大風量のファンと言われている「CFY-12038PF」12V 0.45Aを使ったのですが、もっと風量が欲しかったので変更しました。)PWMは25kHzの0-5V信号が指定されていますが、ラズパイPicoの3.3Vパルスでも動いています。ハウジングとの固定にはM4長さ50mmを使いました。

電源は「VHBW 12V 5A ACアダプター 60W 5.5*2.5(2.1)mm AC100V-240V DC12V 電源アダプター 内極性[+] 0.1A~5A汎用 PSE認証」にしましたが、とりあえず問題なく使えています。

12V電源だけでPicoも動かしたいので、手元にあった3端子レギュレータNJU7223F33で3.3Vを作ります。Picoは互換機のWaveshare RP2040-Zeroよりも外部給電での使い方が便利で、VSYSに1.8Vから5.5Vを接続できます。可変抵抗を回してPWMのDutyを変更します。また、現在のPWM値を視覚的に表現するために4×4マトリクスLEDの状態を変化させます。LEDの制御はneopixelライブラリを使用しました。

OLYMPUS DIGITAL CAMERA

12V電源 —– NJU7223F33
接続なし —– Pin1(Vout 3.3V)
12V —– Pin2(Vin)
GND —– Pin3(GND)

Pico
VSYS —– 3.3V
GP15(pin20) —– Fan PWM
GP16(pin21) —– LED DIN
GP26(pin31) —– 可変抵抗器Pin2

可変抵抗器
Pin1 —– 3.3V
Pin2 —– Pico GP26
Pin3 —–GND

フルカラーLED 4×4マトリクス
VDD —– 3.3V
DIN —– Pico GP16
GND —– GND

Fan
Red —– 12V
Black —– GND
Brown —– Pico GP15

プログラム pico_fanControlMax.py

PicoにはMicroPythonインタープリタをダウンロードし、ライブラリneopixel.pyと上記プログラム(pico_fanControlMax.py)をmain.pyという名前で保存します。