Raspberry Pi を液晶ディスプレイ一体型 PC にする (2014/01/19)
Raspberry Pi は超小型で軽いのですが、HDMIケーブルや電源ケーブル、ネットワーク、USBキーボード、マウスなど接続すると、本体が軽いためケーブルの硬さで位置が定まらなく、意外にジャマになります。 今回は前回の記事で使ったラズベリーパイ用の拡張ボード (Raspberry Pi Expansion Board) と液晶ディスプレイで「一体型PC」を組み立ててみました。 消費電力11W、重量840g で、思った以上にうまく行って気に入っています。
拡張ボードと同時に発注して、液晶が割れた状態で到着した10インチのLCDディズプレイモジュールは、交換してもらうことができ、注文から約1か月、やっとRaspberry Piが快適な状態で使えるようになりました。
用意したもの
前回用意したパーツにケースと液晶ディスプレイを加えて一体型に組み立てます。
液晶パネル
dealextreemeで購入したLCDディズプレイモジュールは、10インチ、1280 x 800(本当は 1280 x 720 後述) の高精細なパネルで 9000 円ほどでした。拡張ボードと同じく、説明書類は全く付属しません。
LCD コントローラボードは電源が 12V、入力はHDMI、VGA、コンポジットの3系統です。液晶パネルへのケーブルと下の操作パネルへのケーブルが付いています。
操作パネルの説明書は付属していませんが、試したところ各ボタンの機能は次の写真のようになっています。消費電力は 4W 程度 (ワットチェッカー による実測値) でした。低消費電力とはいえ、操作パネルの電源ボタンで液晶ディスプレイだけオフにできるのは便利です。
ケース
Raspberry Pi と www.suptronics.com の Raspberry Pi Expansion Board を合わせると高さが 6cm 近く、液晶パネルも 23cm x 15cm のため、比較的大きなケースが必要となります。 最初は台所用品や文房具を探したのですが、ケースに流用できそうな適当な大きさのものが見つかりません。 ホームセンターで物色して辿り着いたのが工具箱でした。写真のプラスチック製の工具箱は、幅30cm、奥行き20cm、深さ6.2cm とちょうどよいサイズで 620 円でした。材質がポリプロピレンで丈夫ですが、加工がちょっと大変そうです。
アクリル板
最初に購入した時、輸送中 (たぶん) に液晶パネルが割れていましたが、その状態を見ると非常に薄く簡単に割れそうです。 液晶パネルの保護用にアクリル板を前に置くことを考えました。 これもホームセンターで物色して、非常に傷がつきにくいという、アクリサンデーMR板という表面硬度(鉛筆硬度)が 6H のアクリル板を購入しました。厚みが 2mm、320x180mm で 720円でした。 アクリル板用のカッターで端を 3cm ほど切断しました。
AC アダプター
Raspberry Pi Expansion Board には 6V - 23V を入力として 5V 3A まで供給できる DC-DC 変換器が付いています。今回使った電源は、12V の ACアダプタ(3.8A)です。 MicroUSB の電源アダプタを使わず、12V のACアダプタからRaspberry Piにも電源を供給します。 ACアダプタが最大 45W なので20ワット程度は余裕ではないかと考えています。 上の写真の拡張ボードの左手前のコネクタがACアダプタのためのものです。外径5.5mm、内径2.1mm の普通のDCプラグ用です。
2分岐DCケーブル
AC アダプターの出力を液晶パネルとRaspberry Pi + 拡張ボードに供給するために、 2分岐DCケーブル も用意しました。
HDMI ケーブル
Raspberry Pi と LCDコントローラボードの接続用に 50cm の HDMI スリムケーブル を使いました。
Bluetooth USBアダプタ
キーボードとをワイヤレスで接続するため、 Bluetooth USBアダプタ と Bluetooth キーボード 、 Bluetooth マウス を用意しました。 Raspberry Pi で Bluetooth を使うためにはパッケージをインストールします。 ここでは GUI は使わず、コンソールだけでペアリングする方法を使います。 https://elinux.org/RPi_Bluetooth_keyboard_setup を参考にしました。
$ sudo apt-get install bluetooth bluez-utils
Bluetooth USBアダプタを USB コネクタ(ソケット)に挿して以下のコマンドを実行するとローカルデバイスとして見つかります。
$ hcitool dev
Devices:
hci0 00:09:DD:41:45:00
キーボードの電源を入れてスキャンします。
$ hcitool scan
Scanning ...
DC:2C:26:AC:84:00 BSKBB01
ペアリングは bluez-simple-agent コマンドを使って、hcitool scanで見つかったデバイスを指定して行います。以下の例ではペアリングに使うPINコード を 1234とした場合の例です。
$ sudo bluez-simple-agent hci0 DC:2C:26:AC:84:00 RequestPinCode (/org/bluez/2303/hci0/dev_DC_2C_26_AC_84_00) Enter PIN Code: 1234 on new keyboard >> 1234 [Enter] Release New device (/org/bluez/2303/hci0/dev_DC_2C_26_AC_84_00)
キーボードを信頼するデバイスとして設定すると、ペアリングしないでも接続できるようになります。
$ sudo bluez-test-device trusted DC:2C:26:AC:84:00 yes
bluez-test-input コマンドでキーボードを接続します。キーボードの電源を ON/OFF して切断されると再度 bluez-test-input コマンドで接続する必要があるようです。
$ sudo bluez-test-input connect DC:2C:26:AC:84:00
以上で Raspberry Pi を再起動してもすぐに接続できるようになります。起動後に最初に1文字送って認識させる必要があるため、ログインで一度Enterキーを押す必要があるようです。
無線LAN USBアダプタ
ネットワークも無線にするために USB ポートに挿入する無線LANアダプタは BUFFALO の WLI-UC-GNM を用意しました。 しかし熱のせいか、しばらくすると接続できなくなります。 結局、昨年購入したPLANEX の GW-USValue-EZ を使っていますが、こちらは問題なく使用できています。
組み込む
以上のパーツをケースに組み込んでいきますが、1か所だけハンダ付けが必要な部分があります。拡張ボードのリセットスイッチ (写真の青の点線で囲まれた部分) を使えるようにするためには、拡張ボードから伸びている2本のピンヘッダの受け側として、Raspberry Pi の基板に拡張ボードに付属している 2ピン用のピンソケット(写真の赤の点線で囲まれた部分)をハンダ付けします。ピンソケットを取り付けるためのプリントパターンと穴はRaspberry Pi に最初から用意されています。リセットスイッチを使わない場合は必要ありません。
ケース (工具箱) のフタの部分を液晶パネルの大きさに切り抜き、基板などを取り付けるためのビス用の穴をあけます。 ケースはポリプロピレン製で粘りがあって切ったり削ったりが難しく、柔らかそうに見えても無理な力を加えると割れるため加工しにくいプラスチックです。私は、カッターナイフをガスレンジで熱しながら切り取りました。穴はドリルと、熱した錐(キリ)状の工具、最後はハンダゴテでほとんど融かして加工しました。液晶パネルはアクリル板に密着させて、テープで動かないように止め、裏側はクリアーホルダーを切ってサイズを合わせてアクリル板とともにビス止めしました。
AC アダプターはケースに空きがあったので、入れてみました。通電すると下の写真のように液晶パネルのバックライトが光ります(分かり難いですが)。
フタを閉じると工具箱の上面が液晶パネルになります。
カメラは右下の裏側に穴を開けてレンズを出しています。ケーブルの長さで今回はここが限界でした。 液晶ディスプレイの操作パネルは左側面になります。一番下が電源ボタンです。ケースの加工でこの部分が一番大変でした。もっと仕上げをきれいにしたかったのですが、力尽きました。
液晶パネルのバックライトが裏側で光るのは想定外だったのですが、 MacBookのようでいい感じです。
ここまできて、確認のためにフレームバッファの情報を取得してみました。なんと解像度は 1280 x 720 でした。 操作パネルから見ても 16:9 になっていました。まあいいんですけどね。
Frame Buffer ID : BCM2708 FB smem_start : 0x58006000 smem_len : 1843200 type : 0 type_aux : 0 visual : 2 xpanstep : 0 ypanstep : 0 ywrapstep : 0 line_length : 2560 mmio_start : 0 mmio_len : 0 accel : 0 x resolution : 1280 y resolution : 720 xres virtual : 1280 yres virtual : 720 x offset : 0 y offset : 0 bits/pixel : 16 grayscale : 0 red : offset 11, length 5, msb_right 0 green : offset 5, length 6, msb_right 0 blue : offset 0, length 5, msb_right 0 transp: offset 16, length 0, msb_right 0 nonstd : 0 略
まとめ
Raspberry Pi は小さいため、タブレットにしたり、古いコンピュータに組み込んだり、変わったケースを自作したり、世界中でいろいろ試している人が大勢います。 電子工作以外の工作も面白いですね。