Raspberry Pi のパフォーマンス比較~B+と2Bの比較です ラズベリーパイ研究室

省電力が売りのRaspberry Piですが、Pi2が発売されてから大分様子が変わってきているようです。このページでは、弊社が想定していた回路・プログラムを実際にB+と2Bで動作させてみた結果についてまとめてみました。



おススメ!記事
Raspberry Pi 用「HAL」で、
カップラーメン・タイマーを作ってみよう!
ラズパイDIYの決定版! ソケットサーバー「HAL」をご紹介します。

※誠に申し訳ありませんがこちらの電子工作のコンテンツは弊社の実験制作例となっております。十分な安全が保障されているわけではないため、参照や実施は自己責任となってしまいますのでご注意ください。

現在、この実験企画で行っているいくつかの実験は、最終的に1つのシステムを作るための実験です。そのシステムの概要は「焦電型赤外線センサーで人体を感知した場合にBeep音による確認を促し、音声による指示があった場合は蛍光灯を点灯する」というものです。

システム概要

ですから赤外線リモコン信号受信・送信人体感知センサー高感度マイク&アンプJuliusによる音声認識圧電スピーカーの実験は、このシステムをモジュール単位に分けてそれぞれについての動作実験を行ったものです。

やっと全ての回路が組みあがりましたので、それらを結合して実際に動作させてみることにしました。結合回路はこんなごちゃごちゃしたものになりましたが、ブレッドボードですので仕方ないですね。

結合回路

プログラム

Raspberry Pi Model B+ 側で動作させるプログラムは以下のようなものになります。

  • HAL9000(仮称)…基幹ソケットサーバー。julius_clientからのメッセージを受けて電子回路を制御する。
  • julius_client…HAL9000とJuliusにソケットで接続し、HAL9000とJuliusの橋渡しをする。
  • Julius…音声認識ライブラリ。moduleモードで動作させる。

HAL9000とjulius_clientは弊社作成のPHPプログラムです。こちらは電子工作のページですのでここでは各プログラムの内容については説明を省きます。

…蛍光灯が点かない…

全ての回路を結合し、Juliusをmoduleモードで動作させ、HAL9000を立ち上げると、焦電型赤外線センサーが傍で操作している私の動きを感知し、その電圧変化を読み取ったHAL9000がBeep音を鳴らし始めました。

最後にjulius_clientを起動、JuliusとHAL9000に接続した事を確認し、少しワクワクしながら「電気つけて」と、指示を出します。julius_clientがJuliusから「電気つけて」という文字列を受信し、HAL9000にコマンドを送信、HAL9000がコマンドを受信し、蛍光灯をつける処理を行う旨のメッセージをコンソールに出力しました。

…蛍光灯、つきません。繰り返し「電気つけて」と指示するのですが、HAL9000が「電気をつけます」と言うだけで、何も起こりません。逆に蛍光灯をつけてから「電気消して」と指示しても、同様に消えません。

そこで、全ての回路を取り外してマイクと赤外線LED送信回路だけをRaspberry Piに取り付け、JuliusとHAL9000とjulius_clientを起動、この状態で声による指示ではなく、コマンドラインで赤外線信号送信コマンドを叩いてみました。結果、蛍光灯の点灯・消灯共にできません。JuliusとHAL9000とjulius_clientを停止し、コマンドを叩いて信号を送信すると蛍光灯は点灯・消灯しました。

ここからは切り分けによる原因追及です。

まず、HAL9000とjulius_clientのみ立ち上げてコマンドラインを叩くと点灯・消灯可能、次はJuliusとHAL9000を起動し、コマンドラインを叩くとやはり点灯・消灯可能です。ところが、julius_clientをJuliusと接続すると動作しなくなりました。Juliusとjulius_clientを立ち上げただけなら問題ないのですが、接続してしまうと途端に動作しなくなります。

これはどういうことなのかと思ってネットを検索していたら、思い当たるページがありました。前から知ってはいたのですが、Raspberry Pi の電力不足の問題です。Raspberry Pi は省電力設計なのですが、電力不足に陥るといろいろと動作不安定になるそうで、確かにコマンドラインを叩いていると何度かSSHが落ちました。

それでRaspberry Pi に液晶モニタを接続してJulius、HAL9000、julius_clientを接続した後、コマンドラインを叩きまくってみたところ、やはり…

電力不足警告

やはり出ていました。電圧低下の警告です(画面右上の虹色の四角)。SSHは便利なのですが、これらの警告が判断できないのでおかしな動作をした時はモニタに繋いでみる必要がありそうです。

一般的に Raspberry Pi はDC5V、1A以上のUSB電源アダプターを用意するようにとのことですが、弊社ではiPad2の純正電源アダプターをそのまま使っていました。ですのでDC5V、2Aのはずですから問題ないかと思っていたのですが…

Juliusで音声認識させると蛍光灯の点灯・消灯が出来なくなることから、Juliusの音声認識処理はかなりマシンパワーを使うことが想定されます。赤外線LEDを赤色LEDに取り換えてみると確かに明滅はしているのですが、この明滅信号はソフトウェアPWMなため、マシンが重くなると明滅間隔が開いてしまって正しい信号として認識されず、このため蛍光灯が操作できなかったのではないかと思います。

また、赤外線リモコン信号受信・送信にあるとおり、赤外線LEDの発光に800mA程度必要な事も理由かと思うので、どの程度電圧が不安定になっているのかを確認するため、とりあえず、Amazonで電圧チェッカーを注文しました。

併せてふと思い立ち、LIRCの動作不良の時に机の脇に寝かせておいた Raspberry Pi 2 Model B を起動して全く同じ回路とプログラムを実行してみました。結果、全ての回路とプログラムが正常に動作し、何事もなかったように蛍光灯の点灯・消灯が出来ました。

Raspberry Pi 2 Model B は4コア 、ARM A7 900MHzと、Raspberry Pi Model B+ に比べて大幅に性能アップしています。ですから Julius での音声認識がほとんど問題にならなくなっているということのようです。

実際に電圧を測定した結果

Amazonから電圧チェッカーが届きました。

USBに差すタイプの簡易チェッカーで、安い割にとても評判が良いようです。ただ、類似品があるようで、ルートアールの正規品であることをチェックした方が良いとの事でした。

さて、再び Raspberry Pi Model B+ を起動しなおし、電圧を測定しました。

Raspberry Pi Model B+ 通常時

5.05V、電圧チェッカーの誤差は±1%とのことですので恐らく仕様通りですね。

この状態からJulius、HAL9000、julius_clientを起動して音声認識をさせつつ、コマンドラインで赤外線信号を送信してみました。

結果1

結果2

0.05Vほど下がっています。想像ではもうちょっと下がっているかと思っていたのですが、誤差1%として、4.95V位まではいっているということでしょうか。

では、Raspberry Pi 2 Model B はというと…

通常時

Raspberr Pi 2 Model B 通常時

負荷時

負荷時

あれ? Raspberry Pi Model B+ の時と、大して変わらないくらいに電圧は低下しています。にもかかわらず、蛍光灯の操作は完璧に行えています。

どうも、これは本体の電力というよりは、単純にCPU負荷の問題のようですね。もっと大容量のUSB電源アダプタを購入して試してみようかとも思っていたのですが、あまり意味がないかもしれません。CPU負荷が原因であれば、どう頑張っても Raspberry Pi Model B+ で動作させることは厳しくなるからです。

どう考えてもこれからは2以上が主役になっていくと思うので、弊社で想定しているシステムは2対象と割り切る必要があるかもしれませんね。

この記事へのコメント

※現在コメントはMarkdown記法が強制です。>>Markdown の書き方


この記事に返信

このコメントに返信