2015年9月27日日曜日

Raspberry PiにUSBカメラを接続してみた

以前ビデオ通話用に購入したカメラを使わずに放置したままになっていて、もったいなかったので、Raspberry Piに接続して監視カメラ化してみました。

手順は簡単3ステップです。

  1. USBカメラ接続
  2. MJPG-streamerをインストール&起動
  3. ブラウザからアクセス

1.USBカメラ接続

ELECOMのUCAM-DLE300T Seriesと印字されたカメラを使いました。
ちょっと心配でしたが、Raspberry PiにUSB接続したら認識してくれました。

pi@raspberrypi ~ $ lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 008: ID 056e:700e Elecom Co., Ltd

lsusbコマンドの実行結果4行目にElecomの文字が表示され、認識されていることがわかります。

2.MJPG-streamerをインストール&起動

MJPG-streamerはパッケージ化されていないので、まずはsubversionと画像処理ライブラリをインストールします。

$ sudo apt-get install -y subversion libjpeg-dev imagemagick

次にMJPG-streamerのソースをダウンロードしてインストールします。

$ svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer mjpg-streamer
$ cd mjpg-streamer
$ make
$ sudo make install

インストール後、mjpg-streamerディレクトリ内に起動スクリプトを作成します。
ここでは「start_stream.sh」とします。また、アクセス先ポート番号を8080、さらにアクセス時にID/PWの入力が必要なように設定します。

#!/bin/sh

PORT="8080" #ポート番号
ID="user" #ID
PW="passward" #パスワード
SIZE="320x240" #画面サイズ
FRAMERATE="10" #フレームレート
export LD_LIBRARY_PATH=/usr/local/lib
./mjpg_streamer \
-i "input_uvc.so -f $FRAMERATE -r $SIZE -d /dev/video0 -y" \
-o "output_http.so -w /usr/local/www -p $PORT -c $ID:$PW"

保存後、実行権限を付与します。

$ chmod 755 start_stream.sh

そして、スクリプトを実行します。

$ sudo sh start_stream.sh

3.ブラウザからアクセス

別のマシンでブラウザを立ち上げて、http://<Raspberry PiのIPアドレス>:8080にアクセスすると以下のようにページが表示されます。Streamタブでは動画を確認することができます。


また、Staticタブからは静止画像を取得することができます。

2015年9月26日土曜日

GalileoでやっとLチカできた

■Intel Galileo

Intelが発売したx86 CPUを搭載したLinuxボードで、Arduinoでもあります。登場時は雑誌で特集が組まれたり、結構話題になっていた印象でしたが、Raspberry Piにとってかわるようなことはなく、今ではあまり賑わっている印象はありませんね(キャッチアップできていないだけで、実は賑わっているのかもしれませんが...)。

私は、発売当時に第1世代Galileoを購入したものの、MacでArduino IDEが起動せずじまいで1年以上放置してしまっていたのですが、最近になってやっとLチカまでこぎ着けました。

■Lチカまでの道のり

結構苦労しました。成功までの流れを以下に記載しておきます。

①OS X Yosemite on MacBook Late 2009
→Arduino IDE 1.6.0、FirmwareUpdate 1.0.4が起動せず失敗。

②Windows 7 64bit on ThinkPad T61
→デバイスドライバインストール
  (ドライバはIDE1.6.0を解凍してできたフォルダ内のdriversに入っている)
 →Arduino IDE 1.6.0は起動し、Lチカのスケッチを実行したもののLチカせず失敗。
  →[ツール] > [ボード] > [Intel® Galileo]を選択
  →[ボード] > [Galileoが認識されたCOM番号]を選択
 →FirmwareUpdate 1.0.4でファームウェアアップデートを試みるものの失敗。
  →怖いけどUSBケーブル引き抜いてGalileo再起動させました。
  →Java7(x64)の状態で止まっていたので、Java8(x86)に更新して、
   環境変数JAVA_HOMEを変更。
  →x86版Java8になったのはオンラインアップデータを使用したため
 →この状態でファームウェアアップデートを実行したら成功しました。
  →成功したのはJava更新のおかげか、タイミングなのかは分かりません。
 →Arduino IDE 1.6.0で[ファイル] > [スケッチの例] > [01.Basics] > [Blink]を
  実行したところLチカ成功!

Windowsではできたけど、Macでできないままなのは悔しいので、マシンを変えてチャレンジ。

③OS X Yosemite on MacBookPro Mid 2014
→Arduino IDE 1.6.0を起動したら、レガシーサポート用の
  Java6(Java for OS X 2015-001)をインストールせよという画面が
  表示された(MacBook Late 2009ではなんで表示されなかったんだろう...)。
 →https://support.apple.com/kb/DL1572?locale=ja_JP から
  javaforosx.dmgをダウンロード。

④OS X Yosemite on MacBook Late 2009
→ダウンロードしたjavaforosx.dmgをこっちに持ってきてインストール。
 →インストール後Arduino IDE 1.6.0を起動したら、起動成功
  (環境変数JAVA_HOMEの設定等は一切していない)。
 →[ツール] > [ボード] > [Intel® Galileo]を選択
 →[ボード] > [/dev/cu.XXXXX]を選択(/dev/tty.XXXXXを選択してはダメらしい)
 →Blink実行でLチカ成功!

【Lチカ成功時の写真(GPとプリントされた横のLEDが点灯しています)】