Raspberry Pi B+ の登場
その昔、スマートフォンなどが登場する以前、持ち運べる小さなモバイル端末を探し求める者たちに絶賛されたSHARPのザウルス、略してリナザウと言う端末が存在した。手のひらサイズの筐体でLinuxベースのOSが走っていると言う事で、有志によりカスタムロムが開発されるなど、一部のマニアの間で熱狂的な支持を得ていたように記憶している。当時の価格で8万円程度したと思うが、カスタムロムを入れてXサーバーを立ち上げるとWebを閲覧するだけでとんでもない待ち時間が発生する実用に耐えない端末であった。シリーズ製品はいくつか発売されたが、小さな筐体でLinuxが動作することにワクワクする人たちだけに受けた、一般受けしない製品としてひっそりとその歴史を閉じた。
それからどれくらいの月日が流れただろう、今ではRaspberry Piという基盤むき出しの素晴らしい製品が簡単に手に入る時代になった。入力装置やディスプレイこそついていないものの、Linuxが完全に動作し、Xサーバーを立ち上げてWeb閲覧などお茶の子さいさいでこなしてしまう。あまつさえ動画再生すら当然のようにやってのける。それが5000円そこそこの値段で手に入る。もともとはプログラミングの教育用環境として安価に誰でも手に入れられるようにと開発されているものらしいが、minepeonを使ってBitcoinの採掘の制御サーバーにしたり、音楽配信サーバーにしたり、3D printer OSを使って3Dプリンターの制御端末にしたり、ディスプレイとキーボードをつないでノートPCにしてみたり、使い方の幅は無限大である。そんなRaspberry Piに新型のRaspberry Pi B+が先ごろ発売された。Raspberry Pi Bの後継として、省電力化が図られていたり、USBポートが2つから4つに増えていたり、SDカードスロットがmicroSDに変更されたり、映像出力のコンポジット端子が省かれHDMIのみになっていたり、GPIOピンの数が増えていたり、いろいろな変更点があるが、とにかくパワフルになっているのだ!今回はこれを入手し3Dプリンタをカメラモジュールで監視しつつ無線LANで遠隔制御するための端末としてセットアップすることを最終目標としていろいろいじってみたいと思う。
Raspberry Pi B+の入手
Raspberry Pi B+は、正規代理店のRSコンポーネンツで取り扱われており、そこで入手するのが一番安価だ。後に登場するRaspberry Pi純正の別売りカメラモジュールも同様である。少し割高だが、Amazonでも多数の取り扱いがあるようだ。
Raspberry Pi本体は基盤むき出しなので静電気を帯びたハンドでタッチすると、ブロークンしてしまう可能性がある。そんな周りのサムシングから本体を守るためには、ケースに入れておくと安心だ。市販のケースがいろいろ売られているのでそちらを使用してもいいが、Raspberry Piは便利に使っているとなぜかたくさん家の中に増えていく傾向があり、複数のRaspberry Pi全てにケースを買っているとケース代が馬鹿にならない。そんな時こそ3Dプリンターで作ってしまおう。銀仁堂でRaspberry Pi B+用ケースの3Dデータを販売している。これをABS樹脂で出力したところ、約30gであった。フィラメント1kgが大体4000円だと仮定して、1個当たり約121円だ。もっと安いフィラメントを使えばコストはまだ下げられるだろう。
OSのインストール
つづいてOSのインストールだ。Raspberry PiはSDカードからブートする。RASPBIANのイメージがコピー済みのSDカードが売ってたりするが、昔ケータイで使ってたmicroSDカードなどが余っていれば、それを使えばよろしかろう。前までは2Gのカードがあればイメージがすっぽり入っていたが、最近のrasbperry Piのイメージは2GBを越えるものが多いので、データ保存パーティションなどを作ることを考えて、8GBのmicroSDカードがあれば安心だろう。今回はDebianベースのRASPBIANを使用したいので、Raspberry Pi財団の公式HPからダウンロードしてくる。NOOBSをダウンロードして解凍したものをそのままmicroSDカードにコピーしてブートすると、Raspberry Pi財団の公式ダウンロードページにあるOSたちを選ぶメニューがGUIで利用できる。GUIに従ってぴょこぴょこと進んでいけば迷うことなくインストールできるだろう。他にソフトを使ってイメージを書き込んだりせしなくていいのでこの方法が一番楽だ。オプションで日本語も選べる。すごい。
今回は目的がRASPBIANに絞り込めているので、RASPBIANのイメージをRaspberry Pi財団の公式ダウンロードページからダウンロードして、Win32 Disk Imagerなどを使ってmicroSDカードに直接書き込んでしまってもいい。詳しくは、公式のドキュメントを読むと良いが、読まなくても野生の勘で何とか乗り切れるだろう。
Raspberry Piにキーボードとマウス、ディスプレイをつないで、最後にmicroUSBケーブルとつなげば電源が入る。電源ボタンなどは特にない。microSDカードが正しく用意できていれば、microUSBがつながって電源が供給されると自動的にブートしてくるはずだ。
初期設定をいろいろやってみる
初回ブート時は、raspi-config画面が自動的に上がってくるので、ちゃちゃっと必要なところを設定しちゃう。初期設定で用意されているログインユーザーはユーザー名”pi”、パスワード”raspberry”だが、 “change user password”でログインパスワードを変えておくといいかもしれない。さらにNOOBSを使ってインストールし、日本語を選んでいた場合、すでにロケールがja_JP.UTF8になっている。ネイティブコンソールでは日本語フォントが表示できなくて文字化けしちゃうので、”Internationalisation Option”で英語設定に戻しておくといいかもしれない。ネットワークに繋いでsshでログインしたり、startxコマンドでXサーバーを立ち上げてGUI環境で使う場合は日本語表示できるのでとくに英語に戻さなくても不自由はないかもしれない。startxした後で、ターミナルエミュレータを立ち上げると、日本語表示できるコマンドラインを使用できる。最初のraspi-configは文字化けしちゃうので”finish”で終わらせてstartxしてターミナルエミュレーターから”sudo raspi-config”コマンドを実行し文字化けしてないraspi-configで落ち着いて設定すると快適だ。あとは、タイムゾーンを東京に変えておくと、さしあたっての設定は終了だ。
無線LANでつないでみる
今回は、別部屋においてある3Dプリンターを監視することを最終目的に掲げているので、ネットワーク接続は有線ではなく無線LANでつなぐ。USB接続の小型無線LAN子機を接続すればコンパクトさを保持したまま無線LAN機能を追加できる。Raspberry Pi B+はUSBポートが4つに増えてるので無線LAN用に一つ潰してしまってもへっちゃらなのだ。
いじくる設定ファイルは、以下の二つである。
- /etc/network/interfaces・・・・ネットワークインターフェースを設定するファイル
- /etc/wpa_supplicant/wpa_supplicant.conf・・・無線LANの設定をするファイル
wpa_supplicant.confファイルで、SSIDの設定や、暗号化方式の指定、暗号化キーの設定などを行い、interfacesファイルで物理インターフェースごとのIPアドレスの取得方法や、ゲートウェイなどの設定を行う。今回はRaspberry Piからアクセスポイントに接続して、固定IPで運用できるように設定したい。Raspberry Piにいちいちディスプレイやキーボードを接続するのはめんどくさいのだ。Raspberry Piを電源用のmicroUSBに繋ぎさえすればSSHでログインして管理できるようにしたい。まずはとりあえず、GUIで設定して無線LANに繋いでみよう。ターミナルのコマンドラインから以下のコマンドを実行し、GUIを立ち上げる。
pi@raspberrypi ~ $ startx
デスクトップ上の、”WiFi Config”と書かれたアイコンをダブルクリックし、設定画面を立ち上げる。当然ながらどこにもつながっていないので、”Manage Networks”タブで”Add”ボタンをクリックして、設定を追加する。アクセスポイントのSSIDがステルスモードに設定されていなければ、となりの”Scan”ボタンをクリックすると自動的に目的のSSIDを見つけてきて暗号化の方式なども判別してくれるのでそちらが使える場合はその方がいいだろう。
“Add”ボタンで追加する場合は、SSIDにSSIDの文字列、Autenticationにアクセスポイントで使用している認証の方式、Encryptionに暗号化の方式、Passwordに共有キーなどを入力して”Add”ボタンを押す。
その後、”Curent Status”タブに戻って、”Connect”ボタンをクリックすればつながるはずだ。つながらなければ、”Manage Networks”タブで追加した設定を選択肢”Edit”ボタンで設定をやり直すといい。つながれば下のようにステータスが出てくるはずだ。
デフォルトでは、DHCPでアドレスを割り振ってもらう設定になっているのでDHCPが利用できない環境ではIP addressの取得に失敗するだろう。だが、認証が通っていればよしとする。これで/etc/wpa_supplicant/wpa_supplicant.confファイルが出来上がっているはずだ。こんな風に。
pi@raspberrypi ~ $ cd /etc/wpa_supplicant/
pi@raspberrypi /etc/wpa_supplicant $ sudo cat wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="chome"
psk="chomechome"
proto=RSN
key_mgmt=WPA-PSK
pairwise=TKIP
auth_alg=OPEN
}
このままでは、パスフレーズが丸見えだ。いやん、まいっちんぐ。なので以下のコマンドでパスフレーズを暗号化してみる。
pi@raspberrypi /etc/wpa_supplicant $ wpa_passphrase chome chomechome
network={
ssid="chome"
#psk="chomechome"
psk=0fe301ee465fe5afecb1f4512e5d7fbe82d6cdfa9c8ef3980474352020bfb2f2
}
pi@raspberrypi /etc/wpa_supplicant $
この、”psk=0fe301ee465fe5afecb1f4512e5d7fbe82d6cdfa9c8ef3980474352020bfb2f2″が、文字列”chomechome”を暗号化した文字列だ。これをコピーして、”wpa_supplicant.conf”の丸見えのパスフレーズと置き換えてしまえば、パスフレーズが少しごまかせる。
続いて、/etc/network/interfacesの編集だ。デフォルト状態では以下のようになっている。
pi@raspberrypi ~ $ cd /etc/network/
pi@raspberrypi /etc/network $ sudo cat ./interfaces
auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
pi@raspberrypi /etc/network $
これはどういう設定かと言うと、有線LANも無線LANもDHCPでIPアドレスを自動取得する設定になっており、”wpa-roam”で有線LANと無線LANがローミングする設定になっているのだ。有線LANがつながったら無線LANを切断して有線LANに切り替える。さらに、wpa_supplicant.confファイルに複数の設定が登録されていた場合、それらの間でもローミングを行う。これがなかなかややこしい動きをするようで、どういう動きをしているのか良く分からなくなってしまうことが多い。起動時に無線LANがつながらなかったり、不安定にぶつぶつ切れてしまう場合は”wpa-roam”が悪さをしている場合が多い。今回は特にアクセスポイントも一つだけだし、有線LANに繋ぐ予定もないので、このローミングは使わない設定にしたいと思う。
pi@raspberrypi /etc/network $ sudo vi ./interfaces
auto lo
iface lo inet loopback
iface eth0 inet dhcp
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.0.2
netmask 255.255.255.0
gateway 192.168.0.1
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
pi@raspberrypi /etc/network $ sudo reboot
変更点は太文字にしてみた。インターフェースwlan0を固定IPにして、”wpa-roam”の代わりに”wpa-conf”を使っている。IPアドレスやネットマスクなどの設定はお手持ちのIPに読み替えてほしい。この状態で”sudo reboot”を実行してブート直後にネットワークにつながるかどうか試してみると見事につながっているはずだ。
この状態でも、しばらくほっておくとネットワークが自動で切られてしまっている場合がある。3Dプリンターの出力が失敗していないかどうか気になってカメラをのぞこうとしたときに、通信が切れていては使えない。これはちょっと嫌だ。以下のサイトに答えがあった。
無線LANのドライバーの省電力機能をカットしてみる。/etc/modprobe.d/8192cu.confと言うファイルを作り、”options 8192cu rtw_power_mgnt=0″と一行だけ書き込んで保存し、再起動で設定を反映させる。
pi@raspberrypi ~ $ cd /etc/modprobe.d/
pi@raspberrypi /etc/modprobe.d $ sudo vi 8192cu.conf
options 8192cu rtw_power_mgnt=0
~
pi@raspberrypi /etc/modprobe.d $ sudo reboot
リブート後、以下のコマンドで省電力機能が切れたかどうか確かめてみる。
pi@raspberrypi ~ $ cat /sys/module/8192cu/parameters/rtw_power_mgnt
0
pi@raspberrypi ~ $
0になっていれば省電力機能がオフになっている。1ならオンのままなので設定を見直す必要がある。ここまでの設定がうまくいったら、SSHでログインして管理できるのでディスプレイやキーボードは外してしまってもOKだ。だいぶ楽になるだろう。今回もだいぶ長くなってしまったので、一区切りとして次回はいよいよカメラモジュールをつないでみたいと思う。乞うご期待!!