Deep Insider の Tutor コーナー
>>  Deep Insider は本サイトからスピンオフした姉妹サイトです。よろしく! 
電光掲示板工作入門

電光掲示板工作入門

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

2016年3月1日

Raspberry Pi 2 Model BにLEDパネルを接続して、社内開発環境の見える化などで役立つ独自のデジタルサイネージを作成してみよう。デモを動作させるところまで解説。

デジタルアドバンテージ 遠藤 孝信
  • このエントリーをはてなブックマークに追加

 本稿では、Raspberry Pi 2 Model B(以下、ラズパイ2)と、LEDが格子状に並んだLEDマトリックスパネル(以下、LEDパネル)を使って、電光掲示板を製作する。

図1 今回作成するLED電光掲示板で使うパーツ(各パーツの内容は後述)

市販のLEDパネルに、ラズパイ2とACアダプターをつなぐだけで完成する。

 以下の動画は、今回使用している制御ライブラリに含まれているデモプログラムを実行しているところだ。ラズパイ2に無線LANを使えば、離れたところからラズパイ2にログインして、自由に表示内容を制御できる。

今回作成したLED電光掲示板の実行例

  

必要な部品

 それではさっそく、LEDパネルの作成に必要なパーツを順に紹介していこう。

1LEDパネル

 LEDパネルとしては、秋月電子通商で販売されている「RGBフルカラードットマトリクスLEDパネル 16x32ドット」を使用する。これはフルカラーLEDが32×16=512個も並んでいるにもかかわらず、1個2880円(税込み)というかなり安価なLEDパネルだ。

図2 「RGBフルカラードットマトリクスLEDパネル 16x32ドット」の販売ページ

 ロットによって付属部品は変わるらしいが、筆者が2016年2月に購入したときには、パッケージの内容は図3の写真のようになっていた。

図3 LEDパネルのパッケージ内容

パネル、フラットケーブル、電源ケーブル、マグネットスタッドがセットになっている。

 付属する4つの足(スタッド)はマグネットになっており、パネル本体は非常に軽量なので、そのままスチールラックなどにくっつけて運用できる。

2Raspberry Pi 2 Model B(ラズパイ2)

 LEDパネルの表示制御には、ラズパイ2を使用する。今回はアマゾンで以下の製品を購入してみた。

図4 Raspberry Pi 2 Model B ボード&ケースセットの販売ページ

 ラズパイ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ではひょっとすると電流不足で動作が不安定になるかもしれない。
図5 LEDパネルとACアダプターの接続

全く使っていないACアダプターだったので、プラグをちょん切って、付属の電源ケーブルに直接つないだ。

413本のジャンパー線

 LEDパネルとラズパイ2の間の接続には13本のジャンパー線が必要となる。しっかりと接続するには接続用のボードを作るなどすればよいが、まずはジャンパー線で手軽につなぐとしよう。

図6 ジャンパー線

上の3本は「オス-メス」のジャンパー線。下の2本はメス-メス」のジャンパー線。

 ジャンパー線には端子のオスとメスの組み合わせで3種類あるが、今回、LEDパネルとラズパイ2を直接つなぐのであれば「メス-メス」のジャンパー線、LEDパネル付属のフラットケーブルを使うのであれば、「オス-メス」のジャンパー線が必要となる。

LEDパネルとラズパイ2の接続

 それでは、LEDパネルとラズパイ2を、用意したジャンパー線でつないでいこう。

 LEDパネルとラズパイ2の接続では、LEDパネルの背面にある「INPUT」と書かれている16ピン端子と、ラズパイ2の40ピン端子(GPIO)とをジャンパー線で接続する。直接に接続するのであれば、メス-メスのジャンパー線を使うことになる。どのピンとどのピンを接続するかは、図7を参考にしてほしい。

図7 LEDパネルとラズパイ2を接続するための配線内容(LEDパネル背面のINPUT端子を使う場合)

 LEDパネルの背面にはINPUTとOUTPUTの2つの16ピン端子があるが、今回はINPUTの方のみを利用する。

 LEDパネルに付属のフラットケーブルを使うのであれば、オス-メスのジャンパー線が必要となる。この場合は、図8のようにフラットケーブルの列が左右入れ替わるので注意してほしい。

図8 LEDパネルとラズパイ2を接続するための配線内容(LEDパネルに付属のフラットケーブルを使う場合)

 なお、これらの配線は、今回利用する制御ライブラリであるHenner Zellers氏の「rpi-rgb-led-matrix」によるものだ(つまり使用する制御ライブラリによっては配線方法が異なる可能性がある)。このライブラリは以下のページで公開されており、そのページには配線方法についても詳しく記述されている(ただし英語)。本稿は全て、このライブラリに基づいて記述している。

図9 GitHub: hzeller/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/
リスト1 プロジェクトをコピーするためのコマンド

 これによりrpi-rgb-led-matrixというディレクトリが作成されるので、そのディレクトリに移動し、makeコマンドを実行してプロジェクトをビルドする。

コンソール
cd rpi-rgb-led-matrix
make
リスト2 プロジェクトをビルドするためのコマンド

 以上の操作により、rpi-rgb-led-matrixディレクトリ配下にled-matrixminimal-exampletext-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
リスト3 指定可能なオプションの一覧

デモ実行(1): カラフルな正方形の回転

 1番目のデモの実行は、具体的にはリスト4のようにして行う。今回使用している16×32サイズのLEDパネルでは、全てのデモで-r 16とパネルサイズの「16」を指定する必要がある(デフォルトでは32×32のLEDパネルが対象となっている)

コンソール
sudo ./led-matrix -D 0 -r 16
リスト4 「カラフルな正方形の回転」(some rotating square)デモを実行するためのコマンド

 これはカラフルな正方形が回転し続けるデモだ。

図10 カラフルな正方形が回転し続けるデモ
図10 カラフルな正方形が回転し続けるデモ

 結構な明るさでLEDが光るが、明るさは-bオプションで指定できる。次のコマンドラインでは50%の明るさで表示される。

コンソール
sudo ./led-matrix -D 0 -r 16 -b 50
リスト5 「カラフルな正方形の回転、明るさ50%」デモを実行するためのコマンド

デモ実行(2): 指定画像が左方向へスクロール

 続いて2番目のデモを実行してみよう。このデモは、指定された画像(PPMフォーマットのみ指定可)を左方向へスクロールして表示する(図11)。サンプル画像として「runtext16.ppm」ファイルが用意されているので、次のようなコマンドラインで実行できる。

コンソール
sudo ./led-matrix -D 1 -r 16 runtext16.ppm
リスト6 「指定画像が左方向へスクロールする」(forward scrolling an image)デモを実行するためのコマンド
図11 指定画像が左方向へスクロールして表示されるデモ
図11 指定画像が左方向へスクロールして表示されるデモ

 このruntext16.ppmファイルは、281×16pxサイズの次のような画像である。

図12 サンプル画像(runtext16.ppmファイル)
図12 サンプル画像(runtext16.ppmファイル)

 このデモではスクロールの速度を-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
リスト8 11個のデモを順に10秒ずつ実行するためのスクリプト

最後に

 今回使用したLEDパネルは、背面にあるINPUT端子とOUTPUT端子を付属のフラットケーブルで接続するだけで複数個を数珠つなぎに接続可能で、簡単に横方向表示領域を広げることができる(らしい)。さらには制御ライブラリ「rpi-rgb-led-matrix」では、数珠つなぎになったLEDパネル群を最大3つまでラズパイ2に接続できる(らしい)。

 もし今回の記事が人気であれば、次回は接続するLEDパネルの数を増やして、もっと大きな電光掲示板に挑戦してみる予定である。

サイトからのお知らせ

Twitterでつぶやこう!