デジタルサイネージ機器 BrightSign HD223 のGPIO制御をRaspberry Pi Node-REDから連携したメモです。
BrightSign HD223とは
BrightSign HD223はデジタルサイネージ機器のひとつで、最近、Digital Light 中畑さんと設備の連動実験をするために購入してみました。
HD223(正規品)■当日出荷58,300円※税送込み■BrightSign HD223
ざっくりですがこのような特徴があります。
- PCなしで簡単に効果的なデジタルサイネージを実現できる
- オーサリングは専用ソフトで作成
- プラグアンドプレイ設計のメディアプレーヤーという位置づけ
- MPEG、BMP、JPEG、MP3など主要なビデオ、オーディオおよび画像フォーマットに対応している
- フルHD出力をサポート
- 映像切り替えもかなり高レスポンス
- 機器によるが、シリアル・GPIO・LANなどさまざまな連携が可能
インタラクティブなところはどうか
BrightSign HD223でいえば、専用のタッチパネルと連携できたり、外部入力でGPIO入力で物理スイッチでも連携できるようです。
GPIOはピン穴が開いてすぐに使えます。ですが、さらにちゃんと端子がつなぎやすいような緑のGPIOユニット(端子台)を追加購入できます。ネジで回し治せるのでやっぱり使いやすいですよね。
これは1列を加えた形。
これは2列フルで入れた形。
そして、HDx23 Hardware Interfaces – DocumentationをみてみるとGPIOの仕様が詳しく書いてあります。
こんな感じです。私でも行けそうな分かりやすさ。
試しに雰囲気でLEDを点灯させてみました。
ピン1のGNDとピン2の3.3Vで無事点灯!
今回やりたいこと
それでは今回のネタです。
Raspberry PiのGPIOピンとBrightSign GPIOをつなげて映像を制御します。GPIOがOFFである通常の状態はBrightSignで桜の映像を流します。
Node-REDでGPIOをONにしたときには、BrightSignでは電子工作の点滅の映像を流します。
それではやっていきましょう。
オーサリングはどうする
いままで私もFLASHやHTML5を使ってPCベースでサイネージを作っていたので、こういった場合はどうなるだろう?と戸惑いはありましたが、割とすぐ把握できました。ドキュメントやヘルプが親切です。
BrightSign HD223の場合、BrightSign :: BrightAuthorという同梱ソフトウェアを使うことで対応できました。
こんなUIで作業を進めます。
BrightAuthorの説明書が結構操作を網羅してくれていることもありがたい。
BrightSign GPIOの設定をする
まず、BrightAuthorでプレイリストを編集していきます。
今回は、以前撮り貯めしていた桜の映像と電子工作点滅の映像をGPIOで交互に変えるようにします。まず2つの動画をドラックアンドドロップします。
桜の映像からGPIO 0をONにすると電子工作点滅の映像に変化するようにする
GPIOの設定は上部に0,1,2,3と数字が書かれてるんですが、GPIO 0 で指定したい場合は、0のボタンをクリックしてオーサリングのアクションをまず決めます。これが、0のボタンを選択されてなかったりすると、以後の操作で他の押されてた機能が発動するのでご注意ください。
動画からドラックすするとラインが引き伸ばされてマウスを離すと、先ほどのGPIO 0に乗せると以下のような画面が出ます。(ちょっとわかりにくい操作)
うまく起動できたら、今回は
- ボタン番号の指定
- 0
- トリガイベントのオン ボタン
- アップ
- スタートステート
- 次のステートを指定
- 次の電子工作の点滅 03_flash.mp4 を指定
にします。
すると、このように、GUIに反映されます。この見た目は分かりやすい。これで、桜の映像からGPIO 0をONにすると電子工作の点滅に変化するようになります。
電子工作の点滅のときにGPIO 0をOFFにすると桜の映像に戻るようにする
つづいて、電子工作の点滅のステートのところでGPIO 0を設定します。ちょいっと引っ張ってから離します。
- ボタン番号の指定
- 0
- トリガイベントのオン ボタン
- ダウン
- スタートステート
- 次のステートを指定
- 元の桜 01_sakura.MOV を指定
これで気を利かせてくれてホームアイコンとともに最初のステートに戻る状態になります。これで電子工作の点滅の画像のときにGPIO 0をOFFにすると桜の映像に戻るようになりました。
BrightAuthorからBrightSignにPublishする
WEB上でしらべているとBrightSign Networkが推されてて「え、これってもしかして、ハードに書き込むのすら使わないとダメ?」と印象を受けるのですが大丈夫です。
BrightAuthorの説明書を良く読んでいると、何ら問題なくローカル書き出しできることが分かります。
書き出しという画面で、ものものしいスケジューラー部分は無視して、左側の書き出しボタンで書き出せます。
指定したフォルダにこんな感じで書き出されるので、これ一式をSDカードに入れます。全部です。
入れている様子。
BrightSignのSDカードを差し込んで反映
一旦、BrightSignの電源を抜いてから作業をします。
BrightSignのSDカードを差し込んでから電源を入れてしばらく待つと反映されます。
ちゃんと高画質に桜の映像が表示されます。
Raspberry PiのGPIOピンとBrightSign GPIOをつなげる
ということで、Raspberry PiのGPIOピンとBrightSign GPIOの接続です。
今回はシンプルに、GPIO 0だけ動かしたいので、Raspberry Pi側もあまり複雑にしないつなぎ方で。
Node-REDのraspi-gpio ノードの図がすこぶる分かりやすいので拝借すると、Raspberry PiのGND 9をBrightSign GPIOのGNDに、Raspberry PiのGPIO27 13をBrightSign GPIOのGPIO 0につなぎます。
写真で見るとこのような感じです。
Raspberry PiのGPIOをNode-REDで制御する
Node-REDでは以下のようにフローを作ります。
raspi-gpioノードではGPIO27の13PINを指定して、injectノードでONの1、OFFの0を手動で送る仕組みです。
フローJSONは以下のようになっています。
json [ { "id": "42fa2968.3781b8", "type": "rpi-gpio out", "z": "714acd42.5b9784", "name": "", "pin": "13", "set": "", "level": "0", "freq": "", "out": "out", "x": 765, "y": 299, "wires": [] }, { "id": "55c46ae8.97bb74", "type": "inject", "z": "714acd42.5b9784", "name": "OFF", "topic": "", "payload": "0", "payloadType": "num", "repeat": "", "crontab": "", "once": false, "x": 509, "y": 246, "wires": [ [ "42fa2968.3781b8" ] ] }, { "id": "b06ae7b9.63c3c8", "type": "inject", "z": "714acd42.5b9784", "name": "ON", "topic": "", "payload": "1", "payloadType": "num", "repeat": "", "crontab": "", "once": false, "x": 511, "y": 356, "wires": [ [ "42fa2968.3781b8" ] ] } ]
動かしてみる
実際にタブレットでNode-REDを表示して切り替え制御してみましょう。
かなりキビキビと変わってます。右手にスマホも持って左手で操作しているので、Node-REDのボタンをうまく押せていないときがありますが、押されさえすればすぐに替わります。
動画もそれなりに重いのですが遅延なく替わります。BrightSignすごいなあ。
ふりかえり
ということで、デジタルサイネージ機器 BrightSign HD223 のGPIO制御をRaspberry Pi Node-REDから連携できました。
これができると、BrightSignは高い信頼性で汎用性が高くデジタルサイネージを任せつつ、しかもGPIO入出力で外部から制御することが可能になってきます。
さらにGPIOがこのように扱いやすいので、Raspberry PiのGPIOからNode-REDで制御して映像が連携できたり、はたまたセンサー情報をキーにスイッチ代わりにして映像を切り替えることができるといった展開が考えられます。
動画のとおり、切り替え反応が遅延がなくかなりキビキビ動くなため、タイミングが重要な映像切替も試してみたくなりますね!
それではよき BrightSign & Node-RED & Raspberry Pi Lifeを!