LoginSignup
12
10

More than 1 year has passed since last update.

LEDパネル + Raspberry Pi で スマートサイネージ

Last updated at Posted at 2018-12-20

Raspberry Pi に接続するLEDパネルを作りました。

IMG_20181013_015025.jpg

64x32ピクセルのLEDパネルを3x3で合計9台マトリックス状に並べています。

1つのモジュールが25.6cm x 12.8cm. それを 3x3 で 76.8cm x 38.4cm になります。 192 x 96 pixelです。HDMI 信号の、左上の 192 x 96 の部分だけをそのまま出せるので Raspberry Pi の GUI でさくっと電光掲示板が作れると。

64x32のLEDパネル

IMG_20180914_153258.jpg

64x32-P4 として売られているもの
外形128*256mm
P4とは、ドットピッチが4mmという意味。

裏側

IMG_20180914_153253.jpg

型番が書いている。
P4-2121-64*32-16S-HL1.1

どうやら、

P4:ピッチ4mm
2121:2121メトリック( 2.1mm x 2.1mm )のLED素子
64*32ドット
という意味らしい

黒のコネクタはHUB75と呼ばれる16ピンフラットケーブルヘッダです。
電源は5Vで動きます

デコーダー&ドライバ

IMG_20180914_154604.jpg
ICN2037
16-Channel Constant Current LED Sink Driver with Dual Latch
http://en.chiponeic.com/content/details36_245.html

IMG_20180914_154718.jpg

ICN2012
8-Channel Power Switch
http://en.chiponeic.com/content/details37_459.html

IMG_20180914_154750.jpg

ICN74HC245
CMOS 8-Channel 双方向バスバッファ

HUB75 と HUB12

HUB12

シングルカラーインターフェース

OE 1 2 A
GND 3 4 B
GND 5 6 C
GND 7 8 CLK
GND 9 10 LAT
GND 11 12 R
GND 13 14 G
GND 15 16 NC

HUB75

RGB インターフェース

R1 1 2 G1
B1 3 4 GND
R2 5 6 G2
B2 7 8 GND
A 9 10 B
C 11 12 D
CLK 13 14 LAT
OE 15 16 GND

だそうです。

電源

5V単一電源でした。結構容量が必要。

IMG_20181013_085636.jpg

PC用の電源を使い、ATX コネクタの Power On 信号をGNDにショートさせて使うことにしました。

IMG_20181013_085538.jpg

動かすためにはどうするか?

駆動方法

ぱっと思いつくのはArduinoなどで駆動すること。しかしながらネットワークストリームなどを流したいとすれば、RaspberryPiで駆動したいです。
ArduinoにもRaspberryPiにもこのようなものを駆動するライブラリはあります。しかしながらRaspberryPiではチラツキが発生するということを聞きました。

また、デコーダ、ドライバのICや結線が様々なものがあるらしい。

image.png
これは後に述べるRCGファイルというものですが、これらそれぞれ内部のデバイス構造が異なっていたりします。このように形式が数多くあり、今後ロット入手するときに同じものが手に入る保証がないことから、RaspberryPiのGPIOなどで直接動かしてもロットが変わればプログラムをまた書き直さなければならなくなる可能性大です。このやりかたはあきらめて別の方法を取ることにしました。

Linsn のコントロールカードを使う

LEDのパネルの信号はそんなに難しいものではないのだけれど、タイミングがシビアです。リアルタイム性を担保しようとするとFPGAとかを使いたくなります。

さて、中国のLEDパネル関連製品の大手に Linsn という会社があります。その Sender Card と Receiving Card のたぐいを組み合わせるのが定番らしいです。

Sender Card は FPGA で制御し、LEDパネルのデコード方法にあわせて設定を変更できるらしいです。先の RCG ファイルで対応できればいちいちプログラム書かなくていいでしょう。このやりかたで作ることにしました。

Sender Card

TS802Dというものを使いました。

IMG_20181013_085231.jpg

PCIの形のPCカードぽいですが、カードエッジを調べてみたらPCIバスの機能はつかっておらず、電源を供給する役目しかありませんでした。電源コネクタが別にあるので、そこから5Vを供給すればカード単体で動作します。

Receiever Card

RV908 というタイプを使いました。1台のTS802Bに複数のRV908がつながるらしいです。

配線

LEDパネルは横にカスケード接続できます。

IMG_20180915_111025.jpg

信号送り元になるケーブルには Reciever Card をつなぎます。RV908は12チャンネルの信号が出せます。

IMG_20180915_111426.jpg

RV908も5V単一電源で動作します。

IMG_20181013_085323.jpg

Sender Card と Reciever CardはLANの線でつなぎます。

IMG_20181221_090725.jpg

Sender Cardのインターフェースです。
IMG_20181221_111613.jpg

USB-Bコネクタを使って、WindowsPCに接続し、設定をします。
右側のDVIコネクタは、映像信号入力です。変換ケーブルを使えばHDMIなどの信号を入力できます。PCなどのディスプレイコネクタにつなげると、このカードがディスプレイデバイスとして見えます。

ソフトウェアで設定する

LEDSetIcon.png

  • Linsnのカードに付属するソフトウェアは2種類。LedSetとLEDStudio。
  • それぞれ MS-Windows でしか動作しない。
  • LEDSet は LEDパネルにあわせてSender Card を設定し、画面解像度など指定するもの。
  • LEDStudio WindowsPCの画面そのものにコンテンツを表示管理するもの。WindowsPCの本来のディスプレイと、Sender Card のディスプレイデバイスの機能をミラーさせておいて、例えばノートPCのディスプレイに出したコンテンツと同じものをLEDパネルに出すような方法を取る。
  • ここではLedSetを使う。

起動エラーの対処

x64でも動くけれども、日本語対応していない。そもそも日本語Windowsだと起動しない。なので英語環境にして起動する。

英語環境にするとこのような起動画面が出る。

LEDSet.png

あらかじめ、Sender Card と PC を USBで接続しておく。仮想COMポートでやりとりしているみたい。適当にCOMポートを設定しておくと、「Serial port State: Connected」となり、認識したモデル名などが出る。
その状態で、「Screen Configuration」を押す。

Screen Configuration画面になったら、ここで仮想ディスプレイの解像度を設定する。

仮想ディスプレイの設定を行う

image.png
ここで、PC等の映像供給元から見た時のディスプレイの解像度などを指定する。

LEDパネルに合わせた設定を行う

Reciever タブで、LEDパネルの設定をする。設定に合わせて、FPGAによる信号が作られる。

LEDSetReceuver.png

LEDパネルに合わせた RCG ファイルという設定ファイルを読み込むことができる。

合うRCGファイルがあったり、ベンダーからRCGファイルを入手できればいいのだけれど、叶わなかったので IntelligentSetup で作成した。

IntelligentSetup

先に見たデコーダーチップに合わせる。P4-2121-64*32-16S-HL1.1には、ICN2012がパネルあたり4つありました。Column 2 x Row 2 っぽい配置だったので、Data Input port QTY を 2にしたら当たりでした。
LEDSetIntelligentSetup1.png

ここから先は、LEDパネルに出てくる信号を見ながら対話的に設定していきます。

Windowsの画面左上の領域が点滅して、それに伴うLEDパネルの動作を見て Display status を選択します。
LEDSetIntelligentSetup2.png

同様に、輝度コントロールや
LEDSetIntelligentSetup3.png

カラーコントロールをLEDパネルの動作に合わせて選択します。
LEDSetIntelligentSetup4.png

LEDSetIntelligentSetup5.png

↓この画面ははじめは何のことやらわからなかったのですが、LEDパネルに点滅ドットが現れるのでそれに対応するセルを指定していきます。64x32全部指定しないといけないかなと思いましたが、Column + Row をそれぞれ1列ずつ指定するだけで良かったです。
LEDSetIntelligentSetup6.png

##「Display Connection」設定画面
LEDSetDisplayConnection.png

LEDパネルを3x3使っているので、ここで3x3にするのかと思ったがそうではないようだ。デコーダーボードやドライバボードが複数台ある時に使うっぽい。

設定が終わったら

以上の設定は dot by dot 設定。64x32のパネルを縦横3つずつ並べて 192x96 のディスプレイになっている。一旦設定が終わったら、ボード内部に記憶してくれるのでその設定を使ってRaspberryPiやスマホなどにもつなげることができる。

以下はRaspberryPiのHDMIにつなげた例。

IMG_20181013_015805.jpg

顕微鏡の映像をRaspberryPiカメラで撮影しています。10円玉の裏の鳳凰の像を拡大しているところです。

12
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
10