2017年10月10日火曜日

HUB75パネル

ドイツ娘あらためティアさん。

 amazonで64x32pxのパネルが安く売ってたので、試しに買ってみました。
 かなりコントラスト悪いですねぇ。もっとも、これは制御の問題だと思うので、もうちょっと改善すると思います。

 画像データは無圧縮PNGで持たせてみました。意外に読み込みに時間がかかります。とはいえ、カードアクセスはもうちょっと最適化できそうです。画像読み込みもかなり冗長なファイルアクセスなので、そこも最適化できそう。あとDMAを使えばさらに早くなるかもしれませんが、ちょっとDMAに痛い思い出があるので。。うまく動くといいなぁ。。

 ところで、このパネル、64x32ピクセルで計2048ドット有るわけですが、パネルは3400円で売ってて、LED1素子あたり1円くらいの計算です。
 秋月だとフルカラーチップLEDが5個200円くらいですから、中国製って凄まじいな。

 さすがに64x32pxだと解像度が足りない感じです。あと3枚位買い足して128x64pxとかにすればもうちょっと表現度も上がりそうだけど、ネタでそこまでやるにはなぁ。
 以前使ったやつとか借り物とくらべ、今回のパネルはドット密度が4倍ほどあります。消費電力は2倍ですが、それでも密度が高い分、放熱が悪くて発熱も大きいです。


 いろいろ最適化したいところはありますが、一番懸案のHUB75出力処理は、アセンブリコードを見る限り、これ以上の最適化は難しそう。
 現在約64fpsくらい出てますが、1フレームでHUB75のデータ変換が64回必用です。ということで、1秒間に約4096回のデータ変換が行われています。1回のデータ変換が約33usecなので、1秒の内140msec程度はデータ変換に費やされている計算になります。
 フレームバッファでCPUの使用率が14%と考えるとかなり余裕がありますが、自前でデータを作ったりする必要が有ることを考えると、もうちょっとなんとかしたいところです。解像度を増やした時に破綻してしまいます。複数パネル使うことを考えると、もう余裕がありません。
 とはいえ、処理内容を考えると、33usecの内、大半はFreeRTOSのタスクスイッチのような気もします。


 今回試作した制御ボードは、2x HUB75、I2C、CAN、2x DAC、microSDソケット、2x UART(1本はデバッグ用)という構成です。HUB75は、1chを4bit、もう1chを3bitとしていますが、ジャンパを1本飛ばせば4bit2本にもできます。ただ、32x32パネルでも3bitだったりするので、とりあえず3bitと4bitの構成にしています。4bitパネルを3bitバスに接続すると、パネルの半分が表示できませんし、3bitパネルを4bitバスに接続すると、アドレスの上位1bit分は地絡するのでよくありません。

 色深度3bitで256色のパレットですが、CANで遠くにおいたセンサのデータを表示したり、SDカードから画像を読み込んで表示したり、I2Cで近くのセンサを読んだり、UART経由でPCからコマンドを送ったり、といったことができるようになる予定です。
 今のところ使ってるのはHUB75を1ch分とSDソケットだけなので、まだまだいろいろな機能が作れるわけですが、どうなることやら。


0 件のコメント:

コメントを投稿