ラズパイ2でLED電光掲示板を作る
電光掲示板工作入門
ラズパイ2でLED電光掲示板を作る
Raspberry Pi 2 Model BにLEDパネルを接続して、社内開発環境の見える化などで役立つ独自のデジタルサイネージを作成してみよう。デモを動作させるところまで解説。
本稿では、Raspberry Pi 2 Model B(以下、ラズパイ2)と、LEDが格子状に並んだLEDマトリックスパネル(以下、LEDパネル)を使って、電光掲示板を製作する。
以下の動画は、今回使用している制御ライブラリに含まれているデモプログラムを実行しているところだ。ラズパイ2に無線LANを使えば、離れたところからラズパイ2にログインして、自由に表示内容を制御できる。
今回作成したLED電光掲示板の実行例
必要な部品
それではさっそく、LEDパネルの作成に必要なパーツを順に紹介していこう。
1LEDパネル
LEDパネルとしては、秋月電子通商で販売されている「RGBフルカラードットマトリクスLEDパネル 16x32ドット」を使用する。これはフルカラーLEDが32×16=512個も並んでいるにもかかわらず、1個2880円(税込み)というかなり安価なLEDパネルだ。
ロットによって付属部品は変わるらしいが、筆者が2016年2月に購入したときには、パッケージの内容は図3の写真のようになっていた。
付属する4つの足(スタッド)はマグネットになっており、パネル本体は非常に軽量なので、そのままスチールラックなどにくっつけて運用できる。
2Raspberry Pi 2 Model B(ラズパイ2)
LEDパネルの表示制御には、ラズパイ2を使用する。今回はアマゾンで以下の製品を購入してみた。
ラズパイ2のセットアップについては、いろいろなところで解説されているので本稿では割愛するが、ラズパイ2を新しく購入した場合には、ダウンロードしたOSイメージを自分で用意したマイクロSDカードにPCを使って書き込み、そのマイクロSDカードをラズパイ2に差し込んで起動し、OSをインストールする必要がある。
本稿ではラズパイ2に無線LANアダプターを挿して使っている。こうすればラズパイ2にPCから無線でログインでき、ラズパイ2には電源ケーブルだけを接続すればよく、すっきりした環境で利用できる。
35V 2AのACアダプター
LEDパネルを動作させるには5V(ボルト)、2A(アンペア)の電源が必要となる*1。筆者は自宅にあまっていたACアダプターを流用した(図5)。最近の電子機器はUSBによる給電がすっかり主流となっているが、一昔前まではいろいろな製品にACアダプターが付属していたので、探せば一家に1つぐらいはあるかもしれない(ただし、ACアダプターによっては12Vのものや9Vのものも存在し、またプラス・マイナスの極性もまちまちなので、ACアダプター本体の記載をよく確認してほしい)。
- *1 上記の秋月電子通商の販売ページの記述では1Aとなっているが、このLEDパネルのメーカーによる販売ページでは2Aと記載されていた。1Aではひょっとすると電流不足で動作が不安定になるかもしれない。
413本のジャンパー線
LEDパネルとラズパイ2の間の接続には13本のジャンパー線が必要となる。しっかりと接続するには接続用のボードを作るなどすればよいが、まずはジャンパー線で手軽につなぐとしよう。
ジャンパー線には端子のオスとメスの組み合わせで3種類あるが、今回、LEDパネルとラズパイ2を直接つなぐのであれば「メス-メス」のジャンパー線、LEDパネル付属のフラットケーブルを使うのであれば、「オス-メス」のジャンパー線が必要となる。
LEDパネルとラズパイ2の接続
それでは、LEDパネルとラズパイ2を、用意したジャンパー線でつないでいこう。
LEDパネルとラズパイ2の接続では、LEDパネルの背面にある「INPUT」と書かれている16ピン端子と、ラズパイ2の40ピン端子(GPIO)とをジャンパー線で接続する。直接に接続するのであれば、メス-メスのジャンパー線を使うことになる。どのピンとどのピンを接続するかは、図7を参考にしてほしい。
LEDパネルの背面にはINPUTとOUTPUTの2つの16ピン端子があるが、今回はINPUTの方のみを利用する。
LEDパネルに付属のフラットケーブルを使うのであれば、オス-メスのジャンパー線が必要となる。この場合は、図8のようにフラットケーブルの列が左右入れ替わるので注意してほしい。
なお、これらの配線は、今回利用する制御ライブラリであるHenner Zellers氏の「rpi-rgb-led-matrix」によるものだ(つまり使用する制御ライブラリによっては配線方法が異なる可能性がある)。このライブラリは以下のページで公開されており、そのページには配線方法についても詳しく記述されている(ただし英語)。本稿は全て、このライブラリに基づいて記述している。
プロジェクトは頻繁に更新されているようなので、実際に製作する場合には、このページに書かれている内容も一通り確認しておいた方がよいだろう。
全ての配線とACアダプターとの接続が済んだら、最初にLEDパネルのACアダプターをコンセントに差し込み、次にラズパイ2にUSBケーブルを差し込んでラズパイ2を起動する。
制御ライブラリのインストール
ラズパイ2が起動したらラズパイ2のターミナルを開き、以下のコマンドにより、上述した制御ライブラリ「rpi-rgb-led-matrix」のプロジェクトをGitHubからコピーする(プロジェクトの中身は主にC++のソースコードである)。
git clone https://github.com/hzeller/rpi-rgb-led-matrix/
|
これによりrpi-rgb-led-matrix
というディレクトリが作成されるので、そのディレクトリに移動し、make
コマンドを実行してプロジェクトをビルドする。
cd rpi-rgb-led-matrix
make
|
以上の操作により、rpi-rgb-led-matrix
ディレクトリ配下にled-matrix
、minimal-example
、text-example
の3つのコマンドが出来ていればOKだ。
LEDパネルへの表示
それではいよいよ、いまビルドして作成したコマンドを実行して、LEDパネルへの表示を行ってみよう。今回は、11種類のデモが入っているled-matrix
コマンドを実行してみる。オプションなしで実行すると、指定可能なオプションの一覧が以下のように表示される。
usage: ./led-matrix <options> -D <demo-nr> [optional parameter]
Options:
-r <rows> : Panel rows. '16' for 16x32 (1:8 multiplexing),
'32' for 32x32 (1:16), '8' for 1:4 multiplexing; Default: 32
-P <parallel> : For Plus-models or RPi2: parallel chains. 1..3. Default: 1
-c <chained> : Daisy-chained boards. Default: 1.
-L : 'Large' display, composed out of 4 times 32x32
-p <pwm-bits> : Bits used for PWM. Something between 1..11
-l : Don't do luminance correction (CIE1931)
-D <demo-nr> : Always needs to be set
-d : run as daemon. Use this when starting in
/etc/init.d, but also when running without
terminal (e.g. cron).
-t <seconds> : Run for these number of seconds, then exit.
(if neither -d nor -t are supplied, waits for <RETURN>)
-b <brightnes>: Sets brightness percent. Default: 100.
-R <rotation> : Sets the rotation of matrix. Allowed: 0, 90, 180, 270. Default: 0.
Demos, choosen with -D
0 - some rotating square
1 - forward scrolling an image (-m <scroll-ms>)
2 - backward scrolling an image (-m <scroll-ms>)
3 - test image: a square
4 - Pulsing color
5 - Grayscale Block
6 - Abelian sandpile model (-m <time-step-ms>)
7 - Conway's game of life (-m <time-step-ms>)
8 - Langton's ant (-m <time-step-ms>)
9 - Volume bars (-m <time-step-ms>)
10 - Evolution of color (-m <time-step-ms>)
11 - Brightness pulse generator
Example:
./led-matrix -t 10 -D 1 runtext.ppm
Scrolls the runtext for 10 seconds
|
デモ実行(1): カラフルな正方形の回転
1番目のデモの実行は、具体的にはリスト4のようにして行う。今回使用している16×32サイズのLEDパネルでは、全てのデモで-r 16
とパネルサイズの「16」を指定する必要がある(デフォルトでは32×32のLEDパネルが対象となっている)
sudo ./led-matrix -D 0 -r 16
|
これはカラフルな正方形が回転し続けるデモだ。
結構な明るさでLEDが光るが、明るさは-b
オプションで指定できる。次のコマンドラインでは50%の明るさで表示される。
sudo ./led-matrix -D 0 -r 16 -b 50
|
デモ実行(2): 指定画像が左方向へスクロール
続いて2番目のデモを実行してみよう。このデモは、指定された画像(PPMフォーマットのみ指定可)を左方向へスクロールして表示する(図11)。サンプル画像として「runtext16.ppm」ファイルが用意されているので、次のようなコマンドラインで実行できる。
sudo ./led-matrix -D 1 -r 16 runtext16.ppm
|
このruntext16.ppmファイルは、281×16pxサイズの次のような画像である。
このデモではスクロールの速度を-m
オプションで変更できる。-m 1
を指定すれば最速となる(もはや字が読めないが)。
その他のデモ実行について
他のデモの様子については、次の動画をご覧いただきたい。この動画は、11個のデモを順に10秒ずつ実行したときのものである。
全てのデモ
-t
オプションを付けると、1つのデモを表示する時間を指定できる。上の動画は次のスクリプトを実行して撮影した。
sudo ./led-matrix -D 0 -t 10 -r 16
sudo ./led-matrix -D 1 -t 10 -r 16 runtext16.ppm
sudo ./led-matrix -D 2 -t 10 -r 16 runtext16.ppm
sudo ./led-matrix -D 3 -t 10 -r 16
sudo ./led-matrix -D 4 -t 10 -r 16
sudo ./led-matrix -D 5 -t 10 -r 16
sudo ./led-matrix -D 6 -t 10 -r 16
sudo ./led-matrix -D 8 -t 10 -r 16
sudo ./led-matrix -D 9 -t 10 -r 16
sudo ./led-matrix -D 10 -t 10 -r 16
sudo ./led-matrix -D 11 -t 10 -r 16
|
最後に
今回使用したLEDパネルは、背面にあるINPUT端子とOUTPUT端子を付属のフラットケーブルで接続するだけで複数個を数珠つなぎに接続可能で、簡単に横方向表示領域を広げることができる(らしい)。さらには制御ライブラリ「rpi-rgb-led-matrix」では、数珠つなぎになったLEDパネル群を最大3つまでラズパイ2に接続できる(らしい)。
もし今回の記事が人気であれば、次回は接続するLEDパネルの数を増やして、もっと大きな電光掲示板に挑戦してみる予定である。