« 2013年5月12日 - 2013年5月18日 | トップページ | 2013年6月16日 - 2013年6月22日 »

2013年5月26日 - 2013年6月1日の1件の記事

2013年5月30日 (木)

RaspberryPiでウェブカメラは簡単に動いた

千石でもう一台RaspberryPiをゲットした。やはり電源が不安定(5/13/2013)
 RaspberryPi(以下RasPi)でSAMBAが簡単に動いたので、すっかり気分が浮かれ、カメラのことを忘れてSAMBAサーバーと少し遊んでみた。最初テストしたディスク2.5インチHDD(40GB)だけでなく、このあいだジャンクで買った3.5インチのHDD(160GB)でも試してみる。

  これも何の問題もなく動いた。160GBのNTFSディスクがいとも簡単にPC画面に展開された。このUSBのHDDアダプター(グリーンハウスGH-USHD-IDESA ¥1611と格安)はAmazonでポチッとしたやつで、バラックだけれど、2.5/3.5 IDE/SATA四種類のHDDをつなげる。S_p5285888

  HDDのために、ノートPC並みのしっかりした電源を用意しているので、RasPi周辺には全く負担がかからない。動作に今いち不安のあるSDカードでのNAS(リモートドライブ)は考えられないけれど、HDDでならその心配もなくなる。

  速度はネットワーク転送速度(100Mbps)の半分近くある。ちょっとしたファイルの共通の置き場所にはもってこいだ。しかも消費電力は、RasPiだけで4W以下、2.5インチHDDなら全部で10W以下で納まるだろう。地球にやさしいサーバーだ。RasPiをファイルサーバー用にもう一台欲しくなった。

  このところの激しい円安で、RasPiも早晩、値上がりしそうである。折も折り、simさんのブログ(というより最近はツイッター記録だが)で千石電商でもRasPiを売り出したことを知った。値段を調べてみるとこれが安い。直販のRSコンポーネントはBモデルが$35で、今のレートで¥3500だが、送料が$8ちょっとかかるので、千石の値段¥4410なら殆ど同じだ。

 仕事の帰り、久しぶりに秋葉原に寄る。千石本店の2Fに上がって、商品棚を見回したがそれらしいものはない。店員に聞いたら中から出してくれた。ポップは、カウンター下の釣り広告の形で大きく出ていた(余り大きいとかえって目立たない)。

  買って帰って、まずとるものもとりあえず通電する。最初の目的は、前回のトラブルの個体差の確認である。SDカードは前のものを流用した。順調に立ち上がった。暫く様子を見る。ハングアップやフリーズはしなかったが、小一時間もしない間にIPアドレスが消えてネットが落ちた。

 ふーむ、やっぱり電源不調は、個体差ではなかったようである。買ってきたものに貼られたシールを見ると、型番はE1213RS2V13B1.0で、最初にRSから買った基板は、E4912RS2V13B1.0であった。これは恐らく、最初の文字列が生産週で2013年12週(3/25頃)、前のやつは、2012年49週(12/9頃)と推定される。品物の入手時期からみて、ほぼこの推定で合っているだろう。

  最近の書店には、RasPiのガイド本が沢山目に付くが、余り、このあたりに言及した記述は少ない。ウェブでも特に大きな話題になっていないが、生産年月の離れた2台が同じ症状となると、これは早晩、問題になる不具合の可能性が高い。

  当面の対策として早速、新しい基板のポリスイッチの部分もショートして対応をとる。これでとりあえずのネットの不具合はなくなった(ただし、これから安定的にRasPiを使いこなそうという方は、あとから述べる別の電源補強策をお勧めする)。

Ubuntu12 Linuxでのウェブカメラ(5/14/2013)
  それはともかく、ウェブカメラである。とりあえずはLinuxとして最近入れたPCのUbuntu12の方で、USBカメラが動くかどうかを試す。ウェブ情報によれば、UVC対応なら何の細工をしないで動くという。当研究所に現在あるUSBカメラは、ネットブック(Eee PC S101)に内蔵のものを除いて、2つある。

S_p5285889  ひとつは随分昔に秋葉原の安売り店(秋葉王だったか)で買った、接写用のマイクロスコープ(ピントを調節すれば遠景撮影可能)で、もうひとつは、先日このために買ったワイヤレスウェブカメラ(エレコムBSW3KMW01)である。

  まず、マイクロスコープを試してみる。ディバイスをUSBハブに差すと、/dev/video0があらわれた。教わったコマンド、lsusbで中味を確かめる。Aver technologyというメーカー名が出る。ウェブによると中国製のチップメーカーのようだ。

  Linuxでの画像キャプチャーソフト、fswebcamをインストールする。それにしても、このapt-getというインストールシステムは実に具合が良い。どんなパッケージもいとも簡単にインストールしてしまう。昔の苦労がうそのようだ。

 今度も、apt-get install fswebcam と入れるだけで順調にインストールできた。コマンドとしてfswebcam output1.jpgなどとやると、カレントディレクトリのoutput1.jpgファイルに画像をキャプチャーしてくれる。試してみた。何の問題もなく画像がとれた。

  何だ簡単じゃないか。ただし、JPEGの静止画のキャプチャーだけである。もともとはマイクロスコープなので画質は今ひとつだが、これをスクリプトか何かで連続して画像をキャプチャーし、その画像をリンクするcgiを作ってapacheあたりで公開すれば、ウェブカメラの実現である。夢がぐっと近づいた気がする。

S_p5285892 気を良くして、いよいよ本命のワイヤレスウェブカメラの方のテストに移る。このあいだウェブであまりの安さに衝動買いしたワイヤレスカメラだ。2.4GHzで画像を飛ばす装置が、¥1000台で買えることを知って、思わずポチッとしてしまったやつである。

  WindowsXPでは、先のマイクロスコープのビュワーで問題なく映ったので、これもUVC対応ではないかと考えられる。ただ画質はマイクロスコープより少しましという程度でお世辞にも良いとはいえない(恐らく30万画素)。

  しかし、これはLinuxでは、うまく映らなかった。USBドングルを差すと/dev/video0というUSBカメラのディバイスファイルが生成され、はずすとファイルは消える。UVCカメラとしての認識はしているようだが、fswebcamはエラーを吐いて動かない。

Photo  USBの状況を表示するコマンド、lsusb -v -sY:XX (Yはバス番号、XはディバイスID)で見てみると、詳しいディバイス情報が出てくる。それによると、このディバイスは、wireless web cameraという通常のUSBカメラと別のカテゴリーになっている。やはり別の設定が必要なようだ。

 どこかのステージまではUVCとして生きているようだが、ワイヤレスのところでひっかかる。残念ながら、ドライバーが未対応のようである。まあ、安いパーツなのでこれ以上深追いするのはよそう。

RaspberryPiでUVCカメラを動かす(5/16/2013)
  ワイヤレスウェブカムは無理だったが、USBマイクロスコープはすんなりUbuntuで動いたので、いよいよRasPiで試してみることにした。まず、何もしないで、マイクロスコープのUSBケーブルをRasPiにつないで立ち上げてみる。

  おおう、dmesgでそれらしいディバイスを認識したメッセージが出ている。これは良さそうだ。起動が終わる。早速ログインして、/dev/video0のディバイスファイルを確認する。あった!UVCカメラが動きそうである。とるものもとりあえず、apt-getでfswebcamをRasPiにインストールする。

  少し時間はかかったが、fswebcamは、RasPiでも順調にインストールされた。動かしてみる。PCのUbuntu同様、何事もなくあっさり絵が保存できた。グラフィックのデスクトップで画像を確認する。問題ない。余りにも楽に画像が出てきたので、完全に拍子抜けである。

 何だ、何だ。ウェブ上で簡単だとは書いてあっても、信じていなかったのだが、問題なく画像がとれた。ライブカメラの一番重要な部分、画像キャプチャーの機能は、いとも簡単に実現された。

Output530  さあ、これからライブカメラのためのストリームサーバー構築だと張り切って、ウェブを調べているうち、もっと簡単な方法を見つけた。Linuxのパッケージにmotionというのがあり、これだけで、いちいちcgiなどでストリームサイトを作らなくても、ストリーミングできるというのだ。

  最初、このmotionというのは、動体検知などロボットなどに使う高度な機能を持った専門的なパッケージだと思っていたのだが、色々なサイトで、これを使って簡単にライブカメラを実現している報告を見つけた。

  LinuxやUnixの開発の流儀は、要素の部品だけをプロ集団が作り、それをユーザーが組み合わせて大きなシステムにするというやりかただと思っていたのだが、昨今は、こういう統合的なパッケージも盛んに開発されているようだ。

 RasPi程度のマシンでmotionが動くか少し心配だが、ウェブ上にはちゃんと動いている例もある。まあ重すぎて動かなければ、当初考えた方法に戻れば良い。導入して試してみるに越したことはない。

motionであっけなくウェブカメラ稼動(5/17/2013)
  言われるままmotionとffmpegパッケージ(motionの部品として必要)をインストールする。RasPiはエラーもなく、2つのパッケージの導入を受け入れた。

  わくわくしながら、設定ファイルを定義し、システムを立ち上げ直す。何とストリーミングサーバーがあっけなく稼動した!全くトラブルなし。320X240のサイズだが実に簡単に動く。フレームレートが低いので、手を振ると飛び飛びの映像になるが、画像が送られていることに間違いはない。

  一体これは何なのだ。フレームレートが低いのは設定のせいか、Raspiの性能限界かわからない。カメラはマイクロスコープ用のものなので、遠景は綺麗に写らない。それでも、ウェブ上で時々公開されているライブカメラ程度には映っている。

  こんなに早く映像ストリーミングが実現して何か狐につままれたような気分である。何度も画像を確かめる。間違いない。フレームレートが低いので、人間が動くとボケ映像が出るだけで、2~3fps程度にしかなっていないようだが、そこで何が起きているかくらいなら判別可能である。

  カメラを換えれば画質の向上は期待できそうだ。いやいや宿願のウェブカメラは、全くソフトの開発なしに、しかも何のトラブルもなく実現してしまった。1Fの居間にカメラを置き、地下の工作室(応接間、オーディオルームを兼ねている)のPCでライブ映像を暫く楽しむ。

  猫が通ったり、家族がTVを見たりしているのが確認できる。家族は事情を知らないのでまるで「覗き」をしているような、後ろめたいけれど何かぞくぞくした気分になる。自分の家族でも変な気分である。

Raspi0517  フレームレートが低いので動きを捉えるのは難しいが、カメラが左右上下に動けば、もう実用性は十分だ。まだまだ先の話だと思っていたライブカメラが急速に現実に近づいてきた。あとは、自宅のネットワークから外に画像ストリームが出せるようにすれば、遠隔地ライブカメラの実現だ。

UVC対応の高品質のウェブカメラを入手。これも問題なし(5/19/2013)
 画質の向上のため、ワイヤレスウェブカメラを諦め、別のカメラを導入することにした。といってもわずか¥1000少々の値段である。UVC対応では名の通った、Logitech(日本ブランドLogicool)のC270を買うことにした。

 Amazonはどんな安い商品でも送料無料なのでつい不要なものまで買ってしまうが、今度は躊躇せず大威張りで発注のボタンを押す。3日で届いた。早速試してみる。まずWindowsのローカルで動作確認する。いやあ、実に綺麗だ。地デジテレビ並み(720dpi)の画質である。

S_p5265872

 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が乗っ取られる。

 書棚からマニュアルを探し出し当研究所のルーター、Aterm BL190HWのセキュリティ機能を調べ始める。まあ基本的なことは大体出来そうだ。パケットフィルタリングのエントリも十分あるし、ポートマッピングでRasPiのローカルIPアドレスを決めうちにして、このマシンにだけ、ストリーミングのTCPパケットを許可する。当面はこれくらいで良さそうだ。

RasPiを直給電でテストしている。全く問題なし(5/27/2013)  
  2台目のRasPiが安定しない。1台目はポリフューズ(スイッチ)をバイパスして全く安定したのだが、2台目も同じ処置をしたのに安定しない。長時間ネットにつないでいるとたまに落ちる。SAMBAやウェブカメラは長時間、無人で動かすのが前提だから、これでは困る。

  ストリーミングも最初、長時間動かすと受け側のPCが不安定になるので心配したが、これは、ブラウザーのFireFoxの不具合であることがわかった。motionで送られた画像を長時間見ていると、仮想メモリが際限なく増えていき、最後にハングする。いわゆるメモリーリークである。

  そもそもIEは、最初からこのmotionのストリーム映像を受け付けない。GoogleのChromeは全く問題がなかった。これを常用のビュワーソフトにしよう。

 ビュワーのトラブルはともかく、Raspiの安定化は急務である。ライブカメラなので長期間の安定稼動が必須である。解決策を色々模索する。やはり、GPIOピンにでているVccに直接5Vを供給するのが一番の解決のような気がする。

S_p5265881  そこで、シリアル端末のケーブルと一緒にピンソケット(2X6)からUSBタイプAプラグにつなぐ電源ケーブルを作った。ケーブルは少し太いワイヤーを使う。Aプラグは半田付け後、ホットボンドをつけて絶縁し、セルフパワーのハブにつなぐ(スレーブ側であることに注意)。

 このソケットをRasPiのGPIOピンヘッダーに差し込む。これで電源は、細いUSBマイクロソケットを経由せず、直接Vccに供給される。一式を1Fの居間に持ち込んで長期テストに入った。半日以上放置したが、2台目のRasPiも見事に稼動し続けた。

 これからRasPiを安定的に稼動させようと目論んでいる方は、このGPIOからの通電が一番のお勧めである。ここからなら普通のACアダプターからの給電も問題ない。

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

« 2013年5月12日 - 2013年5月18日 | トップページ | 2013年6月16日 - 2013年6月22日 »