電光掲示板の配線とデモプログラムの実施!ラズパイで電光掲示板part1

2017年8月4日

ラズパイで、電光掲示板を操作してみようと思います。

この機器ですが、以前購入した後、demoを行ってから保管してあったものです。以前見ていた電光掲示板のページを改めて見てみましたら、どうやら、内容が一新されておりまして、以前行ったデモのほか、色々と実施できるようです。

さらに、Pythonのモジュールの追加などもあり、天気予報の表示や、その他諸々できそうな感じですので、少しいじってみようかと・・・。

あと、こちらのページが非常に参考になりました。

ラズパイ2でLED電光掲示板を作る

スポンサーリンク

環境設定

始めに、上記のページからライブラリをダウンロードしましょう。

git clone https://github.com/hzeller/rpi-rgb-led-matrix/

始めに、RaspberryPiのGPIOと電光掲示板の配線を行います。

上記のページに配線の図が示してありますが、ちょっとわかりにい(GPIOとコネクタの図が別ページにある)ので、次のようにひとつにまとめてみました。

左が、GPIOで右が、電光掲示板のコネクタです。

※Dは使用しません!

ちなみに、60爺は16X32の電光掲示板を、現在ひとつしか持っていませんので、この配線になっていることを追記しておきます。

いよいよデモを実行しますよ。


C言語によるデモプログラム

さて、配線が終わったので、「Let’s do it」で述べているexamples-api-use/ directoryに行きます。ここに、デモプラグラムが用意されております。

デモプログラム一覧

まずは、makeして、ロードモジュールを作成しましょう。

cd rpi-rgb-led-matrix/
make

次の5つのプログラムを動かせるようです。

  1. demo
  2. minimal-example
  3. c-example
  4. text-example
  5. clock

まずは、最初に紹介してあるdemoです。

ページにある内容をコピーしてきて翻訳をかけてみました。

【ページの内容】

Options:
-D : Always needs to be set
-L : Large display, in which each chain is 'folded down'
in the middle in an U-arrangement to get more vertical space.
-R : Sets the rotation of matrix. Allowed: 0, 90, 180, 270. Default: 0.
-t : Run for these number of seconds, then exit.
--led-gpio-mapping= : Name of GPIO mapping used. Default "regular"
--led-rows= : Panel rows. 8, 16, 32 or 64. (Default: 32).
--led-chain= : Number of daisy-chained panels. (Default: 1).
--led-parallel=
: For A/B+ models or RPi2,3b: parallel chains. range=1..3 (Default: 1).
--led-pwm-bits=<1..11> : PWM bits (Default: 11).
--led-brightness=: Brightness in percent (Default: 100).
--led-scan-mode=<0..1> : 0 = progressive; 1 = interlaced (Default: 0).
--led-show-refresh : Show refresh rate.
--led-inverse : Switch if your matrix has inverse colors on.
--led-rgb-sequence
: Switch if your matrix has led colors swapped (Default: "RGB")
--led-pwm-lsb-nanoseconds : PWM Nanoseconds for LSB (Default: 130)
--led-no-hardware-pulse : Don't use hardware pin-pulse generation.
--led-slowdown-gpio=<0..2>
: Slowdown GPIO. Needed for faster Pis and/or slower panels (Default: 1).
--led-daemon : Make the process run in the background as daemon.
--led-no-drop-privs
: Don't drop privileges from 'root' after initializing the hardware.

【翻訳内容】

オプション:
-D :常に設定する必要あり
-L:各チェーンが「折り畳まれた」大きな表示
中央のU字配列では、より多くの垂直スペースを得ることができます。
-R :行列の回転を設定します。指定可能:0、90、180、270。デフォルト:0。
-t :これらの秒数だけ実行して終了します。
--led-gpio-mapping = :使用されるGPIOマッピングの名前。デフォルト: "regular"
--led-rows = <行>:パネルの行。 8,16,32または64です(デフォルト:32)。
--led-chain = <連鎖>:デイジーチェーンパネルの数。 (デフォルト:1)。
--led-parallel = :A / B +モデルまたはRPi2,3bの場合
:平行チェーン。範囲= 1..3(デフォルト:1)。
--led-PWM-bits== <1.11>:PWMビット(デフォルト:11)。
--led-brightness = <パーセント>:パーセント単位の明るさ(デフォルト:100)。
--led-scan-mode = <0..1>:0 =プログレッシブ。1 =インターレース(デフォルト:0)。
--led-show-refresh:リフレッシュレートを表示します。
--led-inverse:行列の色が反転している場合に切り替えます。
--led-rgb-sequence:マトリックスの色を交換した場合に切り替わります(デフォルト: "RGB")。
--led-pwm-lsb-nanoseconds:LSBのPWMナノ秒(デフォルト:130)
--led-no-hardware-pulse:ハードウェアのピンパルス生成を使用しません。
--led-slowdown-gpio = <0..2>:GPIOの低下。より速いPisおよび/またはより遅いパネル(デフォルト:1)に必要です。
--led-daemon:プロセスをデーモンとしてバックグラウンドで実行します。
--led-no-drop-privs:ハードウェアを初期化した後に、'root'から権限を削除しないでください。

プログラム demo のパラメータです。

Demos, choosen with -D
0 - some rotating square :回転する正方形
1 - forward scrolling an image (-m ) :イメージを前方にスクロールする(-m )
2 - backward scrolling an image (-m ) :イメージの後方スクロール(-m )
3 - test image: a square :テスト画像:正方形
4 - Pulsing color :脈打つ色
5 - Grayscale Block :グレースケールブロック
6 - Abelian sandpile model (-m ) :アベル・サンドファイル・モデル(-m )
7 - Conway's game of life (-m ) :Conwayの命のゲーム(-m )
8 - Langton's ant (-m ) :Langtonのant(-m )
9 - Volume bars (-m ) :音量バー(-m )
10 - Evolution of color (-m ) :色の進化(-m )
11 - Brightness pulse generatorデモ、-Dで選択 :輝度パルス発生器

パラメータが0~11まであり、12種類の動きを見ることができるようです。

デモプログラム実行1:snd_bcm2835エラー

それでは、実行してみます。パネルの行は16なので、オプションで指定しました(–led-rows=16)。

pi@raspberrypi:~/rpi-rgb-led-matrix/examples-api-use $ sudo ./demo -D 0 --led-rows=16
=== snd_bcm2835: found that the Pi sound module is loaded. ===
Don't use the built-in sound of the Pi together with this lib;
it is known to be incompatible and cause trouble and hangs (you
can still use external USB sound adapters).
See Troubleshooting section in README how to disable the sound module.
You can also run with --led-no-hardware-pulse to avoid the incompatibility,
but you will have more flicker.

【日本語訳】
=== snd_bcm2835:Piサウンドモジュールがロードされています。===
Piのビルトインサウンドをこのライブラリとともに使用できない;
互換性がなく、トラブルやハングアップの原因となる(外部USBサウンドアダプタは引き続き使用できます)ことは良く知られている。サウンドモジュールを無効にする方法については、READMEのトラブルシューティングのセクションを参照のこと。
また、–led-no-hardware-pulseで実行すると、非互換性を避けることができるが、ちらつきが増加する。

エラーが発生しました。

どうやら、RaspberryPiのビルトインサウンドが電光掲示板のライブラリとともに使用できないことが原因らしいです。

トラブルシューティングを見に行くと、 カーネルモジュールのブラックリストファイルを作成し、initramfsを更新しろと言っています。コマンドが書いてあります。

cat <<EOF | sudo tee /etc/modprobe.d/blacklist-rgb-matrix.conf
blacklist snd_bcm2835
EOF

ただ、オプションを良く見ると、–led-no-hardware-pulse があります。これを使用すれば、上記エラーは出ないようです。ちらつきが増えますが、デモは行えそうです。まず、そちらで対応してみます。

デモプログラム再実行

① 正方形の回転

時間指定(tオプション)してしてやると、その時間になると同時に終了します。10秒でやってみます。

pi@raspberrypi:~/rpi-rgb-led-matrix/examples-api-use $ sudo ./demo -D 0 -t 10 --led-rows=16 --led-no-hardware-pulse
Size: 32x16. Hardware gpio mapping: regular
Press to exit and reset LEDs

動きました。正方形が回転しているのがわかります。

② 画像を前方にスクロール

一つ動いたので、ほっとしました。それでは、次のデモ、イメージをスクロールしてみます。

前方の意味は、イメージが右から左へ流れていくことを示しています。

pi@raspberrypi:~/rpi-rgb-led-matrix/examples-api-use $ sudo ./demo -D 1 -t 10 runtext.ppm --led-rows=16 --led-no-hardware-pulse
Size: 32x16. Hardware gpio mapping: regular
Read image 'runtext.ppm' with 500x32
Press to exit and reset LEDs

ありゃ、イメージが大きすぎて、16ドットでは半分しか表示されません。フォルダを見ると、16ドット用のイメージ(runtext16.ppm)が用意されています。これでを使って、やり直してみましょう。

pi@raspberrypi:~/rpi-rgb-led-matrix/examples-api-use $ sudo ./demo -D 1 -t 10 runtext16.ppm --led-rows=16 --led-no-hardware-pulse
Size: 32x16. Hardware gpio mapping: regular
Read image 'runtext16.ppm' with 281x16
Timeout reached. Exiting.

こちらも、ご覧のように実行できました。

③ 画像を後方にスクロール

イメージを逆方向にスクロールしてみます。

後方の意味は、イメージが先ほどとは逆に、左から右へ流れていくことを示しています。

pi@raspberrypi:~/rpi-rgb-led-matrix/examples-api-use $ sudo ./demo -t 10 -D 2 -t 10 runtext16.ppm --led-rows=16 --led-no-hardware-pulse
Size: 32x16. Hardware gpio mapping: regular
Read image 'runtext.ppm' with 500x32
Timeout reached. Exiting.

こちらも問題なく動きます。

④ 残りのサンプルをまとめて実行

ひとつずつ実行するのはいいのですが、ちと時間がかかるので、残りのデモはまとめて実行します。以下のシェルを作成しました。

#!/bin/bash
sudo ./demo -D 3 -t 3 --led-rows=16 --led-no-hardware-pulse
sudo ./demo -D 4 -t 10 --led-rows=16 --led-no-hardware-pulse
sudo ./demo -D 5 -t 10 --led-rows=16 --led-no-hardware-pulse
sudo ./demo -D 6 -t 10 --led-rows=16 --led-no-hardware-pulse
sudo ./demo -D 7 -t 10 --led-rows=16 --led-no-hardware-pulse
sudo ./demo -D 8 -t 10 --led-rows=16 --led-no-hardware-pulse
sudo ./demo -D 9 -t 10 --led-rows=16 --led-no-hardware-pulse
sudo ./demo -D 10 -t 10 --led-rows=16 --led-no-hardware-pulse
sudo ./demo -D 11 -t 10 --led-rows=16 --led-no-hardware-pulse
スポンサーリンク

これを実行したものが、次の動画です。

ちょっと長いです。

最初のテスト画像は、何の変哲も無い正方形ですが、いろいろなことがやれそうな可能性を示してくれます。

※気づけば電光掲示板の記事も増えてきました

スポンサーリンク

電光掲示板

Posted by mizutan