Windowsのローカルで動作確認する。地デジテレビ並み(720dpi)の画質である。Ubuntuでも問題なく映った。今度はRasPiでのストリーミングだ。前のマイクロスコープ(30万画素)に比べるとフレームレートが落ちるだろうと危惧したが、殆ど変わらない。画質は320X240に落ちているのだが、はるかに解像度は高い。これでフレームレートが上がれば、もう実用的には申し分ない。フレームレートの向上は手を焼いた。motionには沢山の設定パラメーター(/etc/motion/motion.conf)があるのだが、色々いじっても改善される気配がない。試しに、PCのUbuntuにもmotionをインストールして動かしてみた。これが何と、RasPiと同じようなパラパラとした映像しか流れないではないか。フレームレートが低いのはCPUパワーのせいではないことがこれではっきりした。フレームレート向上に大きな望みが出てきた。どこから調べて良いのかわからない。apt-getでインストールが楽になった反面、中味を全く知る機会がなくなってしまった。これは少し時間がかかるようだ。画像が出るので、色々調べながら次のステップに移ることにする。この画像ストリームを自宅外から見られるようにするステップである。外部に出すしかけを調査し始める(5/24/2013)当研究所のネットワーク環境は、KDDIのAUひかりである。固定のグローバルIPアドレスなど持っていない。自宅内のLANの中にいるRasPiを外からアクセスするには、色々な仕掛けを作らなければならない。ネットワークについては、現役時代、理論や仕組みをずいぶん勉強したが、実際にこうした自宅環境で外とのサーバー接続をするのは初めての経験である。ネットで改めて復習する。昔と状況は余り変わっていないようだ。グローバルアドレスが不定なので、ドメインネームを貰うことが必須になる。そのためには、そのときのIPアドレスとドメインネームを動的につなぐDDNS(ダイナミックDNS)のサービスを受ける必要がある。DDNSのサービスは国内外あわせてさまざまな会社が提供しているが、無料サイトというのは継続性に欠けて少し不安なので、有料を探す。使い慣れたプロバイダーにしておくのが無難だろう。20年近く付き合っているNiftyが有料サービス(サブドメインなら月¥200)をしているので、これを使うこととする。ところが、NiftyのDDNSは、取得したIPアドレスと、そのドメインネームとの接続は、手動が原則で、DiCEのような自動的な接続サービスは、サポート外だと言う。ライブカメラは無人運転が原則なので、自宅に割り当てられたIPアドレスが変わるたびに、繋ぎ直すようなことはしていられない(グローバルアドレスはプロバイダーが勝手に変える)。ネットを調べていくうち、Niftyはサポートしないだけで、DiCEなどのツールを使うことに特に制限はないということがわかった。このあたりのサービスに対してプロバイダーは、極めて冷淡で、だいたいNiftyのポータルサイトからDDNSの情報には簡単にたどり着けない。最近のプロバイダーは新しい無線系のインフラ普及にばかり熱中していて、手間ばかりかかって余り金にならないこうしたサービスはなるべくやりたくないと見える。本当は、こうしたエンドユーザーからの情報発信が容易になって始めて、地についたネットワーク社会になると思うのだけれど、まあ、愚痴を言ってみても始まらない。DiCEも調べて、必ずしもこれを使わなくても自動接続は出来るということがわかる。RasPiのほうで、crontabなどに常駐スクリプトを入れてネットを監視し、変更があればプロバイダーのサイトにアクセスして修正するソフトを開発すれば良い。これがUnix流である。DDNSについてひととおり目途がたったので、次は、ルーターの設定の検討に入った。ポートを開けたら最後、世界中を飛び回っているネット荒らしのクラッカーやロボットの来襲(ポートスキャンなど)を覚悟しなければいけない。安易な設定ではRasPiが乗っ取られる。BL190HWのセキュリティ機能を調べ始める。基本的なことは大体出来そうだ。パケットフィルタリングのエントリも十分あるし、ポートマッピングでRasPiのローカルIPアドレスを決めうちにして、このマシンにだけ、ストリーミングのTCPパケットを許可する。当面はこれくらいで良さそうだ。RasPiを直給電でテストしている。2台目のRasPiが安定しない。1台目はポリフューズ(スイッチ)をバイパスして全く安定したのだが、2台目も同じ処置をしたのに安定しない。長時間ネットにつないでいるとたまに落ちる。SAMBAやウェブカメラは長時間、無人で動かすのが前提だから、これでは困る。ストリーミングも最初、長時間動かすと受け側のPCが不安定になるので心配したが、これは、ブラウザーのFireFoxの不具合であることがわかった。motionで送られた画像を長時間見ていると、仮想メモリが際限なく増えていき、最後にハングする。いわゆるメモリーリークである。そもそもIEは、最初からこのmotionのストリーム映像を受け付けない。GoogleのChromeは全く問題がなかった。これを常用のビュワーソフトにしよう。ビュワーのトラブルはともかく、Raspiの安定化は急務である。ライブカメラなので長期間の安定稼動が必須である。解決策を色々模索する。GPIOピンにでているVccに直接5Vを供給するのが一番の解決のような気がする。そこで、シリアル端末のケーブルと一緒にピンソケット(2X6)からUSBタイプAプラグにつなぐ電源ケーブルを作った。ケーブルは少し太いワイヤーを使う。Aプラグは半田付け後、ホットボンドをつけて絶縁し、セルフパワーのハブにつなぐ(スレーブ側であることに注意)。このソケットをRasPiのGPIOピンヘッダーに差し込む。これで電源は、細いUSBマイクロソケットを経由せず、直接Vccに供給される。一式を1Fの居間に持ち込んで長期テストに入った。半日以上放置したが、2台目のRasPiも見事に稼動し続けた。これからRasPiを安定的に稼動させようと目論んでいる方は、このGPIOからの通電が一番のお勧めである。ここからなら普通のACアダプターからの給電も問題ない。(日)機嫌の悪いRaspberryPi基板を飼いならす暮に買って、そのままになっていたRaspberryPi(以下、Raspi)を次の電子工作プロジェクトのテーマにすることにした。Raspiを動かす目的は、宿願のウェブカメラを実現することである。ステッピングモーターで、カメラのパン(左右角)とチルト(仰角)が出来るようにし、遠隔地から制御する。最初は妄想に近かったが、秋月でステッピングモーターを買い揃えるなど少しづつ準備を進めてきている。ウェブカメラには、追い風もある。以前は自宅の様子が外から見えるなどと言うと、それだけで家族の強い反対が予想されたが、最近は飼い猫の状態監視という強力な使用目的ができた。いたずら好きの猫なので、外から何をしているのかがわかると言うとカメラ設置に諸手を上げて賛成された。Raspiの動作例は、このところネット上で沢山見ることができる。BeagleBoard(以下BB)に比べれば1/3のコストだし、GPIOが簡単に制御出来そうなのも魅力だ。最近のInterFace誌もRaspberry特集を組んでいる。これまでの工作、FETスイッチはブレッドボードにつけたまま、デジタルアンプごと横の棚に文字通り棚上げする。スピーカーのミュートスイッチが今壊れているわけではないので、急ぐ話ではない。Raspi動作に必要な付属機器、ケーブル類を用意する。シリアル端末用のUARTケーブル、USBハブや、マウス、キーボードなど、以前のBBに使ったものがそっくり流用できる。電源をどこからとるかが悩ましい。それに基板が小さいから仕方がないのだが、コネクターが基板の4辺全部についているので、たくさんのケーブルが基板から飛び出し、扱いにくい。大きなケースに入れてケーブルをまとめる必要がある。導入記録や、ウェブカメラの稼動例もある。簡単に動きそうだと気楽にとりかかった。ところが、このRaspi意外と気難しいのだ。BBに比べるとコストが安いだけ電源のマージンが少ないのだろう。安定して動作するまで結構な時間がかかった。以下は、その顛末である。色々な理由でUbuntu12をPCにインストールしなおす(5/1/2013)プロジェクトの工程は、PCのLinuxのインストールから始める。時間が経ちすぎているのでupgradeは諦めて、最初から入れ直す。Raspiの前にPCのLinuxをインストールし直そうとしているのか。Class)を予定している。¥1580という安さ)。Skypeなどの普及で、この種のカメラは驚異的に安くなった。無線とはいえ、UVCクラスをサポートしているので(別の会社のUSBカメラビュワーで簡単に動いた)、Linuxでも特別なドライバーを必要とせず、動くはずだ。RaspiのLinuxがこのUVCをサポートしているかが問題である。Ubuntuなら最初からドライバーが入っている。Linuxで動くことを確認しておこうと思った。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でのテストをやっておきたい。それと、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。あっけないものである。UARTコンソールからログインする。