Raspberry Piで無線ビデオストリーミングを行う

eyecatch_raspberry_cut

今回の投稿では、Raspberry Piを無線化し、更に、USBカメラを接続して無線越しにビデオストリーミングする方法を紹介します。

USB無線アダプタを利用した無線化

最初に、無線化の方法から説明していきます。何をおいても、まずは、デバイスの選定が重要ですが、Raspberry Piで動作する
USB無線アダプタの中で安価で入手性の良いものとして、ここでは、バッファローのWLI-UC-GNM2を利用します。

WLI-UC-GNM2をUSBの口に差し込み、dmessageをすると、下記のメッセージが出てきます。

[bash]
[ 3.173460] usb 1-1.3: new high-speed USB device number 4 using dwc_otg
[ 3.320171] usb 1-1.3: New USB device found, idVendor=0411, idProduct=01ee
[ 3.329689] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 3.339563] usb 1-1.3: Product: 802.11 n WLAN
[ 3.350508] usb 1-1.3: Manufacturer: Ralink
[ 3.359388] usb 1-1.3: SerialNumber: 1.0
[ 3.927354] udevd[139]: starting version 175
[ 5.498365] cfg80211: Calling CRDA to update world regulatory domain
[ 6.343345] usb 1-1.3: reset high-speed USB device number 4 using dwc_otg
[ 6.572519] ieee80211 phy0: Selected rate control algorithm ‘minstrel_ht’
[ 6.574265] Registered led device: rt2800usb-phy0::radio
[ 6.574393] Registered led device: rt2800usb-phy0::assoc
[ 6.574516] Registered led device: rt2800usb-phy0::quality
[ 6.574643] usbcore: registered new interface driver rt2800usb
[/bash]

これは、何もせずともドライバが既にあり、認識してくれたということを示しています。
この状態で、iwconfigしてみても、

[bash]
wlan0 IEEE 802.11bgn ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=20 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Power Management:on
[/bash]

と出ますので、後は、無線LANに接続するための設定を行うだけです。

今回は、一般的なWPA/WPA2で接続できる無線ルータに接続する際の設定方法を書きます。
まずは、Raspberry Piのコマンドプロンプトで下記のコマンドを打ちます。

[bash]
RP$ wpa_passphrase “SSID” “pass”
[/bash]

SSID、passは各々の環境に合わせたSSIDとパスワードを入力します。このコマンドの結果、psk=xxxxxという内容が出てきますので、それの内容を書きフォーマットに埋め込み(ssidの部分とpskの部分を埋めます)、/etc/wpa_supplicant/wpa_supplicant.confに追記します。

[bash]
network={
proto=WPA WPA2
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
ssid=”SSID”
#psk=”pass”
psk=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
}
[/bash]

そして、その後、/etc/network/interfacesのwlan0の部分の設定を下記のように変更します。

[bash]
iface wlan0 inet dhcp
pre-up /sbin/wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
post-down killall -q wpa_supplicant
[/bash]

この状態で、

[bash]
RP$ sudo ifdown wlan0
RP$ sudo ifup wlan0
[/bash]

して、ifconfigコマンドにてIPが付与されているならば、無線化は成功です。もし、使用している無線LAN環境でDHCPサーバが動作していないということでしたら、固定のIPを割り当てる設定を書くようにして下さい。

(追記)

入手が容易なUSB無線アダプタとして、PLANEX社のGW-USWEも試してみました。USBの口に差し込み、dmesgを確認すると、

[bash]
[ 3.702270] usb 1-1.3: Product: GW-USValue-EZ
[ 3.709140] usb 1-1.3: Manufacturer: GW-USValue-EZ
[ 3.726904] usb 1-1.3: SerialNumber: 00e04c000001
[ 3.934619] udevd[142]: starting version 175
[ 5.162370] Registered led device: led0
[/bash]

のように認識されますので、後は、wlan0として、同じ設定でそのまま利用できます。

 

ビデオストリーミング環境の構築

続いて、今度はビデオストリーミングの環境を構築します。ビデオストリーミングを実現するには、様々な方法がありますが、今回は、mjpg-streamerというwebブラウザにHTTPを介してM-JPEG形式で動画像をストリーミングするためのソフトウェアを用いた方法を紹介します。

まずは、必要なパッケージをapt-getで入手します。

[bash]
RP$ sudo apt-get update
RP$ sudo apt-get install subversion
RP$ sudo apt-get install libjpeg-dev imagemagick
[/bash]

次に、mjpg-streamerのソースをsubversionで持ってきてコンパイルします。

[bash]
RP$ svn co https://mjpg-streamer.svn.sourceforge.net/svnroot/mjpg-streamer mjpg-streamer
RP$ cd mjpg-streamer/mjpg-streamer
RP$ make
RP$ sudo make install
[/bash]

これで、無線ビデオストリーミングのための環境が全て構築されました。後は、カメラを接続して、試すだけです。カメラはUVCカメラであれば、認識してくれるので、手元にあるものでお試し下さい。今回は、Elecom UCAMDLA200を用いて実験しました。

試すには、下記のコマンドを打って下さい。

[bash]
RP$ mjpg_streamer -i “/usr/local/lib/input_uvc.so -f 20 -r 320×240 -d /dev/video0 -y” -o “/usr/local/lib/output_http.so -w /usr/local/www -p 8080″
[/bash]

そして、この状態で、ブラウザで、http://192.168.xx.xx:8080/stream.htmlを開くと(192.168.xx.xxはRaspberry PiのIPです。ifconfig等でwlan0に割り当てられているものを確認して下さい)「MJPG-Streamer Demo Pages」というページを見ることができて、横のリンクからStreamを選択すると、ストリーミングされた画面を確認できると思います。ちなみに、

http://192.168.x.x:8080/stream_simple.htmlにアクセスすると、ストリーミング画面のみのシンプルなものも確認できます。若干カクカクしたりしますが、遅延もあまりなく、

無線で使えていることを考えると十分実用的と言えます。iPhoneのsafariからも動画を確認出来ました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です