RaspberryPi
Raspberry PI とは

 いままで当研究所の計測系はいろいろな既製品のつみかさねで、結果として何でもかんでも1台のWindowsPCに処理をさせていました。すこし、分散処理をめざし負荷分散の方向で動くこととしました。様々なセンサのデータを取り込むには、Arduinoというマイコンを使用している例が多く、ソフトが手に入りやすいようですが、UNIXの勉強を兼ね、Raspberry Pi という手のひらサイズのコンピュータを使ってみました。
 いくつか開発してみると、なかなか面白く、ノウハウが少したまってきたので、RaspberryPiのページをつくり、公開します。(2015/4/26 バグ修正)

Raspberry Pi
 Raspberry Pi(ラズベリーパイ)は、ラズベリーパイ財団によって英国で開発されたARMプロセッサを搭載したシングルボードコンピュータで、小さいながらスマホに使われている最新のハード使用しており、コストパフォーマンスがすぐれ、最近とみに人気のようです。写真の「GPIO HEADERS」にGPIO(General Purpose Input Output )汎用入出力の26ピンの端子があり、さまざまなスイッチ、センサをつなぐことができ、電子工作には大変便利です。一部の記事では名刺サイズと書かれていますが、コネクタやSDカードの出っ張りがあり、手のひらサイズというほうが適切です。RaspberryPiは消費電力が少なく、24時間運転のセンサーに最適です。
 なお、2014年7月に新たにModel B+ が、さらに2015年2月にRaspberry Pi 2 Model Bが発売されています。互換性があることになっていますが、GPIOのピンヘッダが拡張されており、いままでの開発ボードが使用できないので、本稿ではモデルBで記述します。
  RaspberryPiを観測器機に使用してみるとWindowsPCに比べるとつぎの優れた特徴があります。
1.GPIOの端子が開放されており様々なセンサーに対応できる
2.24時間連続運転に耐える
3.省電力
 数年間の運用実績からさらなる信頼性向上対策を追記します(2017/03/01)。

Raspberry PIを動かす

 小さいながら独立したコンピュータですから、落とし穴がたくさんあり、覚悟が必要です。Raspberry Piについてはさまざまな情報があふれていますが、一通りここに概略をメモしておきます。
用意するもの
Raspberry Pi本体 モデルB  RSオンライン 3940円 
SDカード8GB 1000円以下
5V 1A 電源 
LANケーブル USBケーブル 
VGA ディスプレイ 手持ち
HDMI to VGA adapter Amazon 980円
マウス 手持ち
キーボード 手持ち
Raspberry Pi用T型I/O延長基板 スイッチサイエンス (ブレッドボードでの実験バラック作成)

SDカードにLinuxのインストール
RaspberryPiにはハードディスクはありません。SDにインストールします。
Raspberry Piをはじめようのとおり、標準のRaspbian(Rspberry Pi用のDebian Linux)をインストールします。 
(1) SD AssociationのSDカードフォーマットツールによりSDカードのフォーマット
オプション設定をクリックし「論理サイズ調整」をONにして「OK」をクリック
(2) OSのインストーラNOOBSをダウンロードし展開
(3) フォルダの中に入っているimages、slidesといったフォルダとその他のファイルのみをSDカードにコピー
(4) Raspberry Pi本体にSDカードを挿入。USBマウスやキーボード、ディスプレイのケーブルをさして、電源ケーブルを差し込む

ここでディスプレイにログインメッセージが出るはずですが、私の場合ディスプレイとディスプレイアダプタの相性が悪いせいか、何も表示されず、これでは何も始められません。一時的に居間のデジタルテレビのHDMI端子に接続し、/boot/config.txtファイルを下記のとおり修正。
hdmi_force_hotplug=1
hdmi_group=3
hdmi_mode=9
hdmi_drive=2

(5) OSを選択しRaspbianをインストール
(6) RaspberryPi Software Configuration Tool による初期設定 。たとえばこちら
これで動くはず。しばらくいろいろUNIXのコマンドを試してみて、感じをつかみます。

(7) Widowsとファイル共用のためsambaをインストールします。
これにより、WindowsのエディタでRaspberry Piのファイルを編集したり、Windows側のGNPLOTなどアプリケーションで直接出力データを参照したり出来るようになります。
(8) この際、Raspberry PiのIPアドレスを
/etc/network/interfaces
を編集し、固定にしておいたほうがよい。nanoというエディタを使う場合
$ sudo nano /etc/network/interfaces
auto lo

iface lo inet loopback
iface eth0 inet static

address 192.168.1.xx
netmask 255.255.255.0
gateway 192.168.1.1


また、ホスト名を
/etc/hostname および/etc/hosts
を編集し変更しておきます。あとでもできますが、Windows側の記述に影響してきますので、決定しておきます。
(9) これも後からでもよろしいですが、電源をいれたらすぐに自動ログインし、センサ用のプログラムが自動起動するように設定するとたいへん便利です。それには次のようにします。
/etc/inittab
を編集する。
1:2345:respawn:/sbin/getty 38400 tty1

をコメントアウト。代わりに
1:2345:respawn:/bin/login -f ユーザ名 tty1 </dev/tty1>/dev/tty1 2>&1
を書き込む。ユ−ザ名は pi など。

./profile
のさいごに自動起動したいプログラムをコマンド指定する。たとえば、「GM-10読み取りプログラム 」の場合は
sudo python ./GM-10reading.py
を書いておく。
(10) SDカードのバックアップをとっておきます。Win32DiskImager.exeをつかいます。使い方はこちら

Windows本体側の設定
 Raspberry PiはUSBコネクタにキーボードを接続して運用しますが、今回はセンサとともに、手の届かないところに設置しますから、Windowsホスト本体からLAN経由で遠隔操作できるようにします。そのためWindows上で動作するSSHクライアントとして、PuTTYと言うソフトを使用します。これによりWindows親機からリモートログインができます。日本語のインストールはこちら
長時間つなぎっぱなしにしたいのですが、操作をしないと、切断されてしまいます。そのため[接続] カテゴリーの 「セッションをアクティブに保つための null パケットの送信」で、null パケットを自動送信する時間間隔 (単位: 秒) を設定180秒程度にします。デフォルトは 0 (null パケットは送信しない) です。


WiFiをつかう
 いままで、室内、室外ともあらかじめLANケーブルを配線してあったので、無線は使っていませんでした。最近LANケーブルがないところに、RaspberryPiを設置するケースがでてきましたので、WiFiを使うことにしました。 無線感度がよさそうな、大きなアンテナがついた、IOデータ社のWN-G300UAをつかいます。

上記(8)において、/etc/network/interfacesをつぎのように変更します。
$ sudo nano /etc/network/interfaces
auto lo

iface lo inet loopback
iface eth0 inet static

address 192.168.1.xx
netmask 255.255.255.0
gateway 192.168.1.1


auto wlan0
allow-hotplug wlan0
#iface wlan0 inet manual
iface wlan0 inet static
address 192.168.1.yy
netmask 255.255.255.0
gateway 192.168.1.1

wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
ここでは、有線LANのアドレスは192.168.1.xx、無線LANのアドレスは192.168.1.yyと固定しています。デバッグ時には有線、現場設置は無線というように、使い分けができます。

つぎに、無線ルータのラベルに表示されているSSIDとパスワード(PASSPHRASEといいます)をメモし、RaspberryPiで、次のコマンドを実行します。
$ sudo wpa_passphrase Your_SSID Your_PASSPHRASE
すると次のような出力がえられます。
network={
	        ssid="Your_SSID "
	        #psk="Your_Passphrase"
	        psk=xxxxxxxxxxxxxxxxx
	}

つぎに/etc/wpa_supplicant/wpa_supplicant.confに上を貼り付け編集します。
$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={	        
        ssid="Your_SSID "
        #psk="Your_Passphrase"
	  psk=xxxxxxxxxxxxxxxxx
        key_mgmt=WPA-PSK
        proto=WPA
        pairwise=CCMP
        group=CCMP

}


ここまできたら、USBWiFiアダプタをRaspberry PiのUSBポートにさし、リブートします。

$ lsusb
で、WiFiアダプタが認識されていることを確認。さらに
$ ifconfig
$ iwconfig
で動作を確認します。

信頼性向上対策
 RaspberryPiを観測器機に使用してみるとWindowsPCに比べると信頼性が充分高く、1年間に1度もダウンすることなく、連続運転が可能です。さらなる改善点は、SDメモリと電源です。
RaspberryPiのSDメモリ
 RaspberryPiにはハードディスクの代わりにSDメモリを使います。よく知られているようですが、SDメモリには寿命があり、遅かれ速かれ、ダウンします。6台のRaspberryPiが稼働していますが、2年の稼働で今までに2枚のSDカードが寿命をむかえました。1分に1回書き込みしている系で、数年たつと寿命になるようです。要点は
1.SDカードの製品選び
2.SDへのアクセス回数を減らす


1.SDカードの製品選び
 SDメモリーカードに使用されるNANDフラッシュメモリには、1つのセルに1bitデータを記録するSLC (Single Level Cell)と、2bitデータを記録するMLC (Multi Level Cell)、3bitデータを記録するTLC(Three Level Cell)があります(こちら)。最も耐久性のあるSLCは産業用ということで価格が高く、廉価版はTLCが多いようです。MLCと明記した、パナソニックの RP-SMGA08GJK を使ってみることにしました。
 

2.SDへのアクセス回数を減らす
 RaspberryPiのSDカード長寿命化の報告を参考に、とりあえずつぎの(1)と(2)を実施しました。
(1) SDカード上にswapファイルを作成することをやめる
(2) 一時ファイルをRAMディスク上にマウントするように変更する
(3) rsyslogで記録するログは、RAMディスク上に記録させて、SDカードには記録させない

停電対策
 雷や大雪の時など商用電源が停電する確率が高く、そのようなときほど計測を継続したいものです。そのためには無停電電源装置をつかいますが、低消費電力のRaspberryPiでは、スマホ用のモバイルバッテリがつかえそうです。多数販売されていますが、停電したときに、切り替えのための瞬断のないものが前提です。報告によればPanasonicのモバイルバッテリが「AC断すると自動的にモバイルバッテリー給電に切り替わり、USBへの給電が継続される」ということですので、もっとも容量の大きいQE-AL301をつかってみました。RaspberryPiモデルBにセンサや無線LANを使用した状態で、消費電流は0.5A〜0.7A使いますので、RaspberryPi2台をこのモバイルバッテリから供給します。満充電で実験してみると4時間供給できました。これで一安心です。

 QE-AL301を防水ケース(TAKACHI SPCP1318006)にいれ、屋外に設置しています