Raspberry Piで無線ネットワークカメラを作ってみた。
Raspberry Pi本体 3500円、Webカメラ 1000円ぐらい、無線LANドングル 889円、その他は手持ち 0円、計 5500円ぐらい。もうちょっとお金出せば、さらにパンチ・チルトができるカメラが手に入るので、経済的にはあまり意味のないことではある。無線LANドングルは、PLANEXのGW-USValue-EZを使うことにした。RealtechのRTL8188CUSという石を使っていて、Linuxのドライバがあり、Raspberry Piのフォーラムにお手軽な手順が紹介されているのでこれに決めた。まずシェルスクリプトをダウンロードしてきて実行する。これでドライバがインストールされる。なお、無線LANによる接続ができるまでは、Ethernet経由のsshまたはシリアル接続で作業する。
$ sudo /boot/install-rtl8188cus.sh次にネットワークインターフェースの設定をする。ネットワークカメラは固定IPにする。
$ sudo nano /etc/network/interfacesauto loiface lo inet loopbackiface eth0 inet dhcpallow-hotplug wlan0auto wlan0#iface wlan0 inet dhcpiface wlan0 inet staticaddress 192.168.1.xxxnetwork 192.168.1.0netmask 255.255.255.0broadcast 192.168.1.255gateway 192.168.1.yyydns-nameservers 192.168.1.zzzwireless-essid ここにSSIDを書くwireless-key ここにSSIDに対応するパスワードを書くリブートすると無線で設定したIPアドレス接続できるようになる。
$ ifconfigeth0 Link encap:Ethernet HWaddr b8:27:eb:**:**:** UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:893 errors:0 dropped:0 overruns:0 frame:0 TX packets:601 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:283808 (277.1 KiB) TX bytes:74854 (73.0 KiB)lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)wlan0 Link encap:Ethernet HWaddr 00:22:cf:**:**:** inet addr:192.168.1.xxx Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:146 errors:0 dropped:8787 overruns:0 frame:0 TX packets:57 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:28883 (28.2 KiB) TX bytes:11930 (11.6 KiB)$ iwconfiglo no wireless extensions.eth0 no wireless extensions.wlan0 IEEE 802.11bg ESSID:"********" Nickname:"<WIFI@REALTEK>" Mode:Managed Frequency:2.417 GHz Access Point: 00:18:84:**:**:** Bit Rate:54 Mb/s Sensitivity:0/0 Retry:off RTS thr:off Fragment thr:off Power Management:off Link Quality=100/100 Signal level=100/100 Noise level=0/100 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0さてWebカメラであるが、UVCクラスのドライバがあらかじめインストールされているようなので、手持ちのUVCクラスのカメラLogitech C270を使うことにした。、、が、どうもこのカメラが安定しないので、結局ここで使ったLogicool Qcam Communicate Deluxe(QCAM-130X)に切り替えた。
$ lsusbBus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubBus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.Bus 001 Device 004: ID 2019:ed17 PLANEX GW-USValue-EZ 802.11n Wireless Adapter [Realtek RTL8188CUS]Bus 001 Device 005: ID 046d:0992 Logitech, Inc. QuickCam Communicate Deluxeluvcviewを使ってカメラの映像が表示される事を確認する。なお、このツールはカメラパラメータの設定ができるようになっているが、どうも思うように変更できず、あまり信頼性がない。
$ sudo apt-get install luvcview$ luvcview$ sudo apt-get install v4l2ucp$ v4l2ucpv4l2ucpはPreview > configure previewメニューでPreviewするためのツールを設定できる。標準では、mplayerが設定されているが、今回はこれをluvcviewに変更した。
これで、カメラの準備は終わりだ。最後に、カメラの映像をストリーム配信するソフトのインストールをする。定番のmjpg-streamerだ。このソフトは、ソースをダウンロードしてコンパイルする。
$ sudo apt-get update$ sudo apt-get install subversion$ sudo apt-get install libjpeg-dev imagemagick$ svn co https://mjpg-streamer.svn.sourceforge.net/svnroot/mjpg-streamer mjpg-streamer$ cd mjpg-streamer/mjpg-streamer$ make実行モジュールがmakeしたディレクトリに作られるので、実行して確認してみる。VGAサイズの映像を15fpsでポート8080から配信するならこのように指定する。停止はCtrl+Cで。
$ sudo ./mjpg_streamer -i "./input_uvc.so -f 15 -r 640x480 -d /dev/video0" -o "./output_http.so -w ./www -p 8080" パソコンのブラウザで確認
http://Rasberry Piの無線LANアドレス:mjpg_streamerのポート/wwwディレクトリに用意されているサンプルページが表示される。
このサンプルで映像を表示する方法が何通りか紹介されているが、ブラウザによっては見えないものもある。
| IE | FireFox | Chrome | |
| Static(静止画) | ○ | ○ | ○ |
| Stream(ストリームから直接動画表示) | × | ○ | ○ |
| Java(動画) | ○ | ×*1 | ○ |
| Javascript(動画) | ○ | ○ | ○ |
*1: www直下にあるアプレットcambozola.jarを最新のものと置き換えれば○なお、ストリームのURLは次のとおりである。
http://Rasberry Piの無線LANアドレス:mjpg_streamerのポート/?action=stream最後に起動用のシェルスクリプトを作って、ブート時に自動的に起動するよう設定。
$ sudo nano start_with_args cd /home/pi/mjpg-streamer/mjpg-streamersudo ./mjpg_streamer -i "./input_uvc.so -f 15 -r 640x480 -d /dev/video0" -o "./output_http.so -w ./www -p 8080" &$ sudo nano /etc/rc.local :# exitの前に次の一行を追加/home/pi/mjpg-streamer/mjpg-streamer/start_with_args &exit 0おまけとして、動体検知のカメラとして使ってみた。