Raspberry Pi と余っているUSBカメラでインターネット監視カメラをつくる
(続編として自動撮影・自動Facebook投稿した記録はこちら)
1か月前に2014年入社の新入社員に 『遊び』 用に Raspberry Pi を永久貸与した。 Raspberry Pi はわずか4000円で買うことのできる Linuxサーバーである。
Linuxサーバーなので買ってきただけでは動かない。動かすためにはいくつものハードルがある(はず)。そんな 『遊び』 を楽しんで欲しい。 そんな経験をすることが、これから IT 業界で生きていく上で役に立つはず、という思いである。
経緯はココ => IT系、理系、文系卒の3人の新入社員に Raspberry Pi を渡すと何かが起こるのか?
こんな迷惑なことをされてしまった新入社員3名のプロフィールは以下。
- O さん: 学校で IT インフラ関連を学ぶ。 配属先はサービスデスク。
- M さん: 文系卒。IT とは縁がなかった。 配属先は営業部。
- S さん: 理系卒。といっても IT ではない。 配属先はソリューション部。
8月上旬に手渡してから1か月。 音沙汰なし。 配属されたばかりで忙しく、またプライベートでも社会人1年生の夏。忙しいはずである。 限られたプライベートな時間に部屋に籠って Raspberry Pi いじっているというのは、それはそれでよろしくない。
これでいいのだ。 そんなふうに思いつつも、何か起こるはずと思っていて何も起こらないというのも少し悲しいので、自分でも触ってみることにした。
(いえ、決してプレッシャーを与えているわけではありません。)
Raspberry Pi については、ネットで検索すると数多くの記事やブログがでてくるので、セットアップは初心者にも難しくはなさそうである。
ただ、新入社員の自宅に USBキーボードやHDMI接続のディスプレイまたはTVがあるとは限らないので、それらを使わずにセットアップしてみることにした。
(単に押し入れの奥からUSBキーボードを引っ張り出すのが面倒だったということでもある。)
さてさて、まずは Raspberry Pi 用の OS である rasbian のイメージをダウンロードした。
それを家に余っていたSDカードに書きこむ必要があるのだが、書き込みにはいくつかのやり方があるようだ。 僕は Win32 Disk Imager というフリーソフトを使ってみた。
ダウンロードした Image File と書きこみ先のドライブを指定して Write ボタンを押すだけだ。
上書きの確認がでるので、再確認した上で Yes 。
イメージファイルは4GB程度の大きさなのでそれなりに時間がかかるが、心配して余計なことをしないでひたすら待つ。
無事書き込み終了のメッセージがでるはずだ。
これで、Raspberry Pi にセットするSDカードが完成した。 この後、正攻法でいくならば Raspberry Pi にUSBキーボードとHDMIケーブル経由でDisplay(TVでもOK)につないでSDカードをセットして電源ONするのだが、冒頭で書いたように Display と Keyboard 無しでセットアップを進めていくことにする。
SDカードをセットし、ブロードバンドルーターにLANケーブルで接続し、電源ON。Raspberry Pi には液晶などはなく小さなLEDがいくつかあるだけ。LEDの点滅が落ち着いたので、無事に立ちあがってきているハズ。 といっても DHCPで動的に割り振られているIPアドレスがわからないと、ログインもできない。
そこで、ブロードバンドルーターの管理画面にログインし、IPアドレスの払い出し状況を確認。それっぽいアドレスを見つけ出す。
(管理画面: 編集中)
たぶん、192.168.1.9 だろう。(確証は何もない。直感。)
Tera Term でログイン。Tera Termを使うのは何年ぶりだろう。(たぶん10年以上触っていない。)
セキュリティ警告をよく読んで続行。
IPアドレスは当っていたようだ。初期設定では、ユーザー名は pi 、パスワードは raspberry 。
無事にログインできた。 こんなにあっさりとできるなんて昔に比べると便利になったものだ。
表示されるテキストに従って初期設定画面を呼び出す。
sudo raspi-config
初期設定の詳細は省略するが、ロケール、タイムゾーン、キーボードの設定を行う。忘れてはいけないのが memory_split。 GPUへのメモリ配分を指定するのだが、GUIを使わないのでCPUのメモリを最大に設定しておく。 サーバーとして使うので、GUIよりもサーバーとしての起動や動作が遅くならないためにだ。
設定が終わったら、念のために最新へのアップデートを行う。
sudo apt-get update
さて、これで一通りの設定が完了した。 といっても、何か動くものがないとつまらない。
何か目に見えて面白いアプリケーションはないものかとネットで検索してみると Raspberry Piに普通のUSBカメラが繋がるらしいことがわかった。
我が家の押し入れの奥にあるジャンク箱に古い USB Camera がいくつか眠っているはずなので、それを使ってネットワークカメラ(インターネット監視カメラ)をつくってみることにする。
ジャンク箱から発掘された古い USBカメラはこの3種類。
当時は割高だった Logitech Qcam Pro 4000 CCD 130万画素
BUFFALO 製 BSW13K05H CMOS 130万画素
BUFFALO 製 BASW3KH CMOS 30万画素
ソフトウェアは、MOTION というのがよさそうである。
早速入れてみる。
sudo apt-get install motion
難なくインストーレーションが完了した。
ここで、Raspberry Pi に USBカメラをつないでみる。
カメラが認識されているかどうかは、lsusb というコマンドで確認する。それっぽいデバイスが表示されている。
次に MOTION の設定をする。 ネットでみるといろいろな情報があるが、最低限の作業で進めてみる。
/etc/motion にある motion.conf をエディタで直接変更する。と、その前にバックアップをとってから。
エディタは nano というのを使った。
変更したのは以下の2か所のみ。on を off に変更する
webcam_localhost off
control_localhost off
この2つを行わないと、リモートからWeb経由でMotionに入れない。 MotionにはWeb設定画面があるので、その他の設定は使いにくいエディタで行う必要は無い。
CTL-X で保存終了した後に、いよいよ MOTION を起動する。 いきなりバックグランドで実行するのではなくターミナルから起動したほうが、直接メッセージを確認できるので僕はそうしている。 (なので、daemon on の設定はしなかった。)
いくつか気になるメッセージはあるものの立ちあがったようだ。
そこで、早速見てみる。 が、IE や Chrome では上手く見られず、Safari のみでUSBカメラのリアルタイム映像を見ることができた。
http:// (IPアドレス) :8081/
MOTION という名前のソフトウェアだけあって、動体検知をして自動的に画像をSDカードに保存してくれる。
場所は、/tmp/motion だ。
管理画面にも入ってみる。
http:// (IPアドレス) : 8080
全ての設定がここでできる。 変更した後は Writeを行えば、先ほどnanoで編集したmotion.conf が更新される。
定点観測の静止画を保存したかったので、300秒毎の設定にしてみた。
この定期保存される静止画もディフォルトでは、/tmp/motion に保存される。
複数のカメラ対応もしているので、USB Camera 2台をつないでみる。
そのためには、/etc/motion の thread1.conf thread2.conf を設定する必要がある。
そして起動。
thread1, thread2 が動いている。
それぞれ、8081, 8082 ポートで設定したので両方表示させてみると、
両方とも動作している。 それにしてもUSBカメラによって画質が大きく違うものだ。。
管理画面も、Thread1, Thread2 を認識していてここから設定変更できる。
というわけで、思っていたよりも簡単に Raspberry Pi でネットカメラをつくることができた。 いやー、ラズパイ、面白いです。 せっかくなので、自動的にソーシャルメディアにアップすることにトライしたいなどと次の計画を考えてしまっていたりします。