RaspberryPi
Raspberry PI とは

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

左からRaspberry Pi1モデルB Pi1モデルB+ Pi3モデルB  その後 Pi Zero 、Pi 4モデルBが発売されている



 Raspberry Pi(ラズベリーパイ)は、ラズベリーパイ財団によって英国で開発されたARMプロセッサを搭載したシングルボードコンピュータで、小さいながらスマホに使われている最新のハード使用しており、コストパフォーマンスがすぐれ、人気のようです。つぎつぎ新しいモデルが発表されており、最近ではPi3モデルBが主流となりました。Pi3モデルBは、クアッドコアCPUで高速化が図れ、観測器機には少々オーバスペックですが、最も手に入りやすく、WiFiが内蔵されているほか、写真のように、コネクタやSDメモリカードが突出していないので、ケースに納めやすなっています。

本稿では記述がモデルBとPi3モデルBが混在しています。
  RaspberryPiを観測器機に使用してみるとWindowsPCに比べるとつぎの優れた特徴があります。
1.GPIOの端子が開放されており様々なセンサーに対応できる
2.24時間連続運転に耐える
3.省電力
 数年間の運用実績からさらなる信頼性向上対策を追記します(2017/03/01)。

GPIO
センサーをつなぎ込むための、GPIO(General-purpose input/output)は重要です。Pi1モデルB+ 以降のモデルでは、下の図のように拡張されました。 (sparkfun参照)
左はRaspberry Pi1モデルB 右はPi1モデルB+ と Pi3モデルB

PythonプログラムからGPIOを指定するのに、ピン番号ではなくGPIO番号を使うことが多いです。対応は次の通りです。

Raspberry PIを動かす

 Pi3モデルBについてのインストール方法は、様々な方が紹介しています。たとえばこちらを参照してください。観測に必要な、初期設定を下記に示します。
(1) Sambaをつかう
Widowsとファイル共用のためsambaをインストールします。
これにより、WindowsのエディタでRaspberry Piのファイルを編集したり、Windows側のGNPLOTなどアプリケーションで直接出力データを参照したり出来るようになります。
$ sudo apt-get install samba

$ sudo nano /etc/samba/smb.conf

設定ファイルの末尾に、以下を追加します。


[pi] path = /home/pi
read only = No
guest ok = Yes
force user = pi
編集した設定ファイルの設定を適用します。
$ sudo service smbd restart

Windows側からは、
\\192.168.x.x\pi
でアクセスできます。
(2) WiFiをつかう
最近LANケーブルがないところに、RaspberryPiを設置するケースがでてきましたので、Pi3モデルB内蔵のWiFiを使えるようにします。

dhcpcp設定ファイルの編集をします

$ sudo nano /etc/dhcpcd.conf
設定ファイルの末尾に、以下を追加します。

interface wlan0
static ip_address=192.168.xx.xxx/24
static routers=192.168.xx.x
static domain_name_servers=192.168.xx.x

static routersはデフォルトゲートウェイのこと

パスフレーズを暗号化
$ 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


country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="Your_SSID"
#psk="Your_Passphrase"
psk=xxxxxxxxxxxxxxxxx
}

生のパスワード(#psk以下)は削除しておきます。

再起動し
$ ifconfig
$ iwconfig
で動作を確認します。

(3) screenを使う
RaspberryPiで複数のセッションを動作させるために、GNU screenを使えるようにします。screenを使うと、プロセスを動作させたまま接続を切断したり、複数のセッションを起動することが可能です。

インストールはつぎによります。
$ sudo apt-get install screen

ここまでのところは使い回しができますから、 SDカードのバックアップをとっておきます。Win32DiskImager.exeをつかいます。使い方はこちら
また、ホスト名を
/etc/hostname および/etc/hosts
を編集し変更しておきます。

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



信頼性向上対策
 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 を使ってみることにしました。2017年初めからノーダウンで動いています。(2019/08/08)
 

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)にいれ、屋外に設置しています



top