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

シェアする

Pocket

1.概要

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

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

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

あと、こちらのページを、非常に参考にさせていただきました。

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

2.環境設定

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

pi@raspberrypi:~ $ git clone https://github.com/hzeller/rpi-rgb-led-matrix/
Cloning into 'rpi-rgb-led-matrix'...
remote: Counting objects: 3341, done.
remote: Total 3341 (delta 0), reused 0 (delta 0), pack-reused 3341
Receiving objects: 100% (3341/3341), 20.42 MiB | 37.00 KiB/s, done.
Resolving deltas: 100% (2248/2248), done.
Checking connectivity... done.

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

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

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

※Dは使用しません!

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

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

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

(1) デモプログラム一覧

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

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

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

(2) デモプログラム実行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のビルトインサウンドが電光掲示板のライブラリとともに使用できないことが原因らしいです。

Troubleshootingを見に行くと、 you should create a kernel module blacklist file like the following on your system and update your initramfs:(要は、カーネルモジュールのブラックリストファイルを作成し、initramfsを更新しろ)と言っています。コマンドが書いてあります。

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

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

(3) デモプログラム再実行

① 正方形の回転

時間指定(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

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

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

今回の記事はここまで。他にもデモがありますが、引き続き、デモプログラムを実行中 part2に譲ります。

スポンサーリンク

シェアする

フォローする