« 2013年4月21日 - 2013年4月27日 | トップページ | 2013年5月26日 - 2013年6月1日 »

2013年5月12日 - 2013年5月18日の1件の記事

2013年5月12日 (日)

機嫌の悪いRaspberryPi基板を飼いならす

 暮に買って、そのままになっていたRaspberryPi(以下、Raspi)を次の電子工作プロジェクトのテーマにすることにした。

 Raspiを動かす目的は、宿願のウェブカメラを実現することである。ステッピングモーターで、カメラのパン(左右角)とチルト(仰角)が出来るようにし、遠隔地から制御する。最初は妄想に近かったが、秋月でステッピングモーターを買い揃えるなど少しづつ準備を進めてきている。

 ウェブカメラには、追い風もある。以前は自宅の様子が外から見えるなどと言うと、それだけで家族の強い反対が予想されたが、最近は飼い猫の状態監視という強力な使用目的ができた。いたずら好きの猫なので、外から何をしているのかがわかると言うとカメラ設置に諸手を上げて賛成された。

 Raspiの動作例は、このところネット上で沢山見ることができる。BeagleBoard(以下BB)に比べれば1/3のコストだし、GPIOが簡単に制御出来そうなのも魅力だ。最近のInterFace誌もRaspberry特集を組んでいる。

 まだまだ下調べが必要だが、気分を高めるためにケースに入ったRaspiをPC S_pc225522机の上に持ち込んだ。これまでの工作、FETスイッチはブレッドボードにつけたまま、デジタルアンプごと横の棚に文字通り棚上げする。スピーカーのミュートスイッチが今壊れているわけではないので、急ぐ話ではない。

 Raspi動作に必要な付属機器、ケーブル類を用意する。シリアル端末用のUARTケーブル、USBハブや、マウス、キーボードなど、以前のBBに使ったものがそっくり流用できる。

 電源をどこからとるかが悩ましい。それに基板が小さいから仕方がないのだが、コネクターが基板の4辺全部についているので、たくさんのケーブルが基板から飛び出し、扱いにくい。いずれもう少し大きなケースに入れてケーブルをまとめる必要がある。

 数多くの導入記録や、ウェブカメラの稼動例もある。簡単に動きそうだと気楽にとりかかった。ところが、このRaspi意外と気難しいのだ。BBに比べるとコストが安いだけ電源のマージンが少ないのだろう。安定して動作するまで結構な時間がかかった。以下は、その顛末である。

色々な理由でUbuntu12をPCにインストールしなおす(5/1/2013)
 プロジェクトの工程は、PCのLinuxのインストールから始める。4年前のBBのときにUbuntu9 を入れて以来である。時間が経ちすぎているのでupgradeは諦めて、最初から入れ直す。なぜRaspiの前にPCのLinuxをインストールし直そうとしているのか。

 ウェブカメラのインターフェースはUSBのUVC(USB Video Class)を予定している。実際のカメラも用意してある(BSW3KMW01ワイヤレスウェブカメラ ¥1580という安さ)。Skypeなどの普及で、この種のカメラは驚異的に安くなった。

 無線とはいえ、UVCクラスをサポートしているので(別の会社のUSBカメラビュワーで簡単に動いた)、Linuxでも特別なドライバーを必要とせず、動くはずだ。

 ただ、RaspiのLinuxがこのUVCをサポートしているかが問題である。Ubuntuなら最初からドライバーが入っている。まずLinuxで動くことを確認しておこうと思った。

 調べたところでは、UVCはカーネル 2.6.26以降は標準で入っているようだ。Ubuntuは10.04以降が2.6.37なので問題なし。現在のUbuntu最新バージョンは、12.04である。ただ、Raspberryで動くUbuntuは今のところ探し出せていない。ARMで動くかが問題だ。

 Raspiの代表的なOS、RaspbianのLinuxのカーネルバージョンは調べたら、3.6.1だった。バージョン的には全く問題ない。仕様上は、UVCはあくまでもUSB上のプロトコルであり、USBが動くのであれば、固有のハードのディバイスドライバーは必要としないはずなのだが、こればっかりは動かしてみないことにはわからない。まずはLinuxでのテストをやっておきたい。

P5125867  それと、PCにUbuntuを入れ直したのは別の理由がある。以前インストールしたUbuntu9がアップデートに失敗し、動かなくなっていたので、RaspiのインストールにLinuxマシンが必要だと思っていたことである。しかし、これは結果として必要なかった。RaspiのOSインストールはBBに比べると遥かに簡単でLinuxを必要としない。

 PC上でのUbuntu12のインストールは順調に進んだ。4年前にBBの導入の時入れたUbuntuは9で、今度のバージョンはもう12である。早いものだ。最初、最新版を入れようと思ったら、インストールCDは何と、CD-Rでなくて、DVD-Rを要求された(800MBを超える)。

 最新版より少し前の、CD-Rに入る最終バージョン、12.04.01にして、この前のLinuxのディスクスペースにreplaceする。ブートセッションのGRUBの部分の切り替えが余り上手くいかなくて、2段ブートになってしまったが(最初のGRUBでWindowsを選ぶと、さらに前のGRUB選択画面が残っていて出る)、とりあえずLinuxとWindowsXPは動いた(後述:この2段ブートは、Windows側のboot.iniをいじって解消できた)。

RasberryPiはあっけなく動いたが(5/3/2013)
 PCにLinuxが入ったので、次はいよいよRasPiである。ウェブにはもう無数の導入記がアップされていて、何を参考にすれば良いのか迷うほどだ。

 BeagleBoard(BB)のときのようにディスクをフォーマットしたり、中間的なブートローダーのインストールも必要ない。出来上がったシステムディスクのイメージをそっくりSDカードに焼いて、そこから直接ブートして立ち上げるようだ。

 沢山のインストール記の中から、このあたりや、ここなどを参考に、2GB近くのディスクイメージをネットからダウンロードし、CDを焼く時のように、一気にSDカードに放り込む。OSは最も定番のRapbian(バージョン"wheezy")を選んだ。

 ディスプレイが1台しかないので、HDMIからの出力はとりあえず後にして、参考にした記事のようにRaspiのGPIOピンにあるシリアルにUARTをつないでPCにコンソール端末を作る(TeraTerm)。これはとても重宝した。どんなときでもこのシリアル端末だけは生きていて、今、システムが生きているのか、死んでいるのかがすぐわかる。

 BB用に買ってあった電源つきUSBハブに、これもBBで使ったワイヤレスキーボードやUSBマウスをつなぎ、いよいよ動作テストに入る。

 マイクロUSBの電源用のUSBプラグにはPCからのUSBハブを差して電源ON。おお、順調にコンソールにブートメッセージが出て、一発でRaspbian OSが起動した。あっけないものである。

 UARTコンソールからログインする。問題ない。ネットはどうだろう。よーし、pingが通る。すごいぞ。HDMIケーブルをディスプレイにつけて、次はGUI関係だ。うむ、Raspberryのおなじみのロゴが出た。マウスも動いている。端末を出してみる、と、カーソルが止まった。

S_p5055851  シリアル端末を見ると、カーネルパニックで落ちているようだ。正確にはカーネルデバッガーのKDBのプロンプトで止まる。どうも電源が不安定なようだ。PCのUSBハブから給電したり、専用の5Vアダプターからも供給してみる。

 しかし、専用の5VアダプターをUSBプラグに給電する最も安定しているはずの電源が一番不安定で、まともに立ち上がらない。USBのハブからの給電であるかどうかをソフト的にチェックしているのだろうか。

 BB用の専用のUSBハブからの電源供給が一番安定しているようだが、それでもちょっと重いアプリを立ち上げるとひんぴんと落ちる。そのうち、ページエラーなどのメッセージを吐いてシステムそのものが立ち上がらなくなった。ファイルシステムはSDカードなので、ファイルを壊してしまったらしい。

 仕方なく、SDカードのカーネルイメージを元から作り直した。さらに専用のハブのスレーブ機器側からUSBコードをRaspiの電源用マイクロUSBに接続し(今まで逆にしていた)、これで殆ど落ちることはなくなった。しかし今度は、ネット接続が不安定になって度々回線が切れる。それにキーボードがまだ動かないので、HDMIから出力するXのデスクトップはまだ使い物にならない。

ワイヤレスキーボードが動かないのは別の理由(5/5/2013)
 この写真を見ていただきたい。これはワイヤレスキーボードの電池ホルダーの拡大写真である。良く見ると、電池のプラス極が、両側のケースの枠に微妙に遮られて端子と接触していない。その差は恐らく0.1ミリ以下なのでちょっと見ただけでは接触しているように見える。

Keyboard_trouble  このワイヤレスキーボードを使ったのは、4年前のBeagleBoardのインストール以来である。Raspiで動かす前に、PCで確認したところでは、USBに差すアダプターは問題なく認識されたが、キーボードとアダプターの間の無線接続ができていなかった。

 電池電圧を調べると、完全にへたっている。そりゃそうだもう4年も経っている。新しい電池に取り替える。しかし、前と変わらない。ありゃあ、もう壊れたのか。試しにテスターで電池ホルダーの接点電圧を測ってみた。何と0V。ショートは考えられないので接触不良だろうが、電池はしっかりホルダーに固定されている。

 念のため、接触面をやすりで磨いて見るが変わりはない。分解したところで原因がわかるわけでもないが、とにかくおかしいのだから中を見るしかない。10個以上もあるネジをはずして(一つが、分解されたくないのか6角のトルクスネジ)、キーボードを分解した。

 中はきれいなもので、ショートなどの形跡はない。間違いなく接触不良だ。しかし、ホルダーと配線の導通はあるので断線でもない。それなのに電池を入れても電圧が出てこない。電池との接点も特にさびてもいない。一体これはどうしたことか。

 で、写真のような状況を発見した。電池のプラス極の高さは規格があるのだろうけど、このケースは何かいやがらせをするように接点端子の枠が高い。まあ、原因がわかれば解決は簡単である。ナイフで両側の邪魔している枠を削りだすだけである。

S_p5125862  とにかく、このトラブルで半日つぶれてしまった。分解しなければこの不具合は発見できなかったことは間違いない。このエレコムのワイヤレスキーボードTK-FDP001WHをお使いのみなさんは、電池交換のときには十分注意されることをお勧めする。

すごいHDDまでマウントできた。しかし、まだ薄氷状態(5/6/2013)
  机の上を配線で一杯にしながら、RasPiのテストを続ける。ディスクイメージを入れなおし、電源をひとつのUSBハブに設定して何とか安定して動くようになった。キーボードも動いた。しかし、Net関係がしっくり動かない。IPアドレスが消えるのだ。

 不思議なことに、ifconfigやrouteなどで消えたIPアドレスやゲイトウエイアドレスを設定すると元へ戻る。これで暫くネットがつながり、SSHなどのtelnet端末も動くが、インターネットなど少し負荷の大きいデータ通信をやると、いつのまにかネットが切れてしまう。謎である。

S_raspi_  それにしてもUNIXのコマンドを見事に忘れている。何かの度に、ウェブのお世話になる。それでも少しづつ、デスクトップの整備も進んできて大分色々なものが動くようになった。

 ネット上には、沢山の人が、あらゆるLinuxの機能をRaspiで試し成果を発表されている。リモートデスクトップも出来るようなので、これもやってみた。 言われるままパッケージをインストールし、コマンドtightvncserverというコマンドを入れるだけである。見事に、PC上でRaspiのデスクトップが動いた。

S_p5125859  IDEのハードディスク(こわれたノートPCから取り出した40GB)をUSBアダプターにつけてマウントしてみた。Raspiは、これも苦もなく認識する。もちろん、Vfatでマウントも出来る。驚いた。

ハングはしなくなったが、ネットが落ちる(5/7/2013)
 ウェブサイトの薦めるままスワップ領域を広げるなどして、カーネルが落ちることは殆どなくなった。日本語化パッケージも何とかインストールできた。しかし、ネットワークは依然安定しない。

 telnetくらいの少量のデータでは落ちないが、Raspiのブラウザー(Midori)で外部のサイトから重いデータを取ろうとすると大抵途中で回線が切れる。内蔵のEtherNetよりUSBのEtherアダプター(FEther USB-TXC)の方が安定している。

 画面の描画など全体の速さは、前のBBより少し早くなっているが、まあ、まだ実用的な速さではない。ただ、今度のウェブカメラの解像度は、320X240程度なので問題はないだろう。

 環境整備は進んでいるのだが、ネットでは不可思議な現象が続いている。ネットの状態を表示したり設定したりするコマンドifconfigからIPアドレスだけが消えるのである。試しに外から設定したアドレスでpingをかけると、ちゃんと戻る。しかし、Raspiからはネットに出られない。

 ifconfig eth0 inet XXX.XXX....と設定し直すと何事もなく復帰する。このとき大抵ゲイトウェイアドレスもなくなるので、route add default gw XXX.XXX....を追加すると元へ戻る。しかし、暫くするとまた切れる。

 ネットに負荷がかかると落ちるようだ。内蔵のEtherより、USBを経由した外付けEtherの方が安定しているので、どうもハード臭い不具合なのだが、外付けEtherでもたまに落ちることがある。エラーメッセージが出ているわけでもないので手の出しようがない。

 あらためてネットを探すと、これが結構、みんなが難儀していることがわかった。ただ、ハングアップやフリーズの問題だけで、ネットがおかしいと言う報告は余りない。

基板のポリスイッチの抵抗値が高い(5/9/2013)
 Raspiのトラブルの殆どの原因は電源関係のようである。去年の秋あたりから問題になっている。china製以外にも、本国でつくるUK製もあって、こちらは大丈夫だという話だったが、あとの報告でUK製もトラぶったようだ。

 結局、本家のフォーラムで紹介された、USB電源入力についているポリスイッチをバイパスする手法で、この問題は解決したようである。このあと、ネットへの障害報告が急減している。

 ただ、Raspiは、このポリスイッチを経由せず、電源を供給することも出来る。RaspiのGPIOには、5Vピンが出ており、こちらはポリスイッチを通らない。そこで、GPIOピンからジャンパーでACアダプターの5Vを供給してみた。

S_p5085857  これが完全な「当たりー」であった。ハングはおろか、ネットも全く問題なくなった。どれだけ大量のデータを受信しても、何時間放置してもびくともしない。やっぱり電源が悪かったのだ。

 考えてみれば、Raspiの正規の電源供給コネクターは、USBの中でも一番小さなマイクロBコネクターである。ここへ1A近い負荷がかかる(0.7A)。ただでさえレギュレーションが問題になるところに、ポリスイッチが入っている。電源環境はお世辞にも良いとはいえない。

 試しに、秋月で買った例の精密LCR計(DE5000)を取り出し、Raspiのポリスイッチの抵抗値を調べてみた。0.4Ω。ふーむ、ちょっと大きいか。手持ちのポリスイッチ(0.9A 1.8Aで遮断)を測ってみると、0.1Ω以下である。

 折角ついている保護装置をはずすのには少し抵抗があるので、Raspiについていたポリスイッチを低温ハンダではずし、この手持ちのポリスイッチをつけて動かしてみた。小一時間動かして、ネットが落ちた。やっぱり、バイパスするしかないようだ。とりはずしたRaspiの表面実装のポリスイッチは、熱をかけすぎたのか抵抗値は、4Ωに増大していた。

S_p5125858  専用のピンソケットで5Vを供給するのが究極の解決だと思うが、しばらく、このポリスイッチもバイパスして動かすことにする。それにしても電源って本当に大事なものだと痛感する。バイパスしたあとは、前のGPIOピンからの供給と同じように安定している。

SAMBAはあっけなく動く。いやあLinuxだ(5/10/2013)
 カメラはPC Linuxでのテストも済んでいない。どうしようか迷ったけれど、カメラの前にやりたいことが沢山ある。で、そのひとつ、BBでもやりたかったこと、NAS(Network Attatched Storage)の実験をすることにした。

 娘が次々に嫁いだ(嫁ぐ)ので、実際の需要は少なくなったのだが、家の中の共通ファイルサーバー構築である。昔からある、LinuxでWindowsのリモートフアイルをサポートするSAMBAサーバーを動かす。BBでやるつもりがそのままになっている。

 折角の機会なのでこれを実装してみることにした。BBのときと比べると情報が豊富になっている。調べてみると至極簡単なようだ。2つくらいのパッケージを落としてきてインストーラーを動かすだけである。

 15年以上前、乏しい情報を頼りに、会社でこのサーバーを立ち上げた時のことを思い出す。高価なWindowsNTのライセンスを買わずにいくらでもネットワークサーバーが作れたのだから大いに喜ばれた。ただ、ユーザーには評判になっても、関係者には「部長の道楽」と不評だった。

 おっと昔話はこれくらいにして、現実に戻ろう。実際の操作は、例のapt-getというパッケージインストーラーを2つ出すだけである。やってみた。ネットワークが安定したので安心してみていられる。

S_samba  順調にパッケージがダウンロードされ、勝手にインストールが始まった。設定ファイルを書き足して、あとは再起動するだけである。30分もかからない。PCを立ち上げマイネットワークからサーバーを探す。おお、ちゃんとraspberrypiが見える。ドライブを開く。うはあ、簡単に中味が出た。

 実際にファイルを取り出してみる。うーむ、結構早い。転送速度は、6MB/sもある(370MBのzipファイルで1分)。100Base/Tの理論速度は、12.5MB/sだが、半分近く行けば全く言うことはない。いやあ、たいしたものだ。実用性は十分である。こんなちっぽけな基板でもさすがLinuxである。

| | コメント (3) | トラックバック (0)

« 2013年4月21日 - 2013年4月27日 | トップページ | 2013年5月26日 - 2013年6月1日 »