Raspberry Piで航空機のADS-Bを受信してみました “カメラ監視 LOGICOOL C270 MJPG-streamer monitor fswebcam” (9)
“Raspberry Piで航空機のADS-Bを受信してみました “NooElec R820T SDR & DVB-T MESDR Mini dump1090” (1)”
“Raspberry Piで航空機のADS-Bを受信してみました “IPアドレス固定化 ラズパイ環境整備 NTP RealVNC” (2)”
“Raspberry Piで航空機のADS-Bを受信してみました “macOS環境でADS-B信号のフィードにトライ” (3)”
“Raspberry Piで航空機のADS-Bを受信してみました “FR24 Feeder/Decoder フィード自動起動” (4)”
“Raspberry Piで航空機のADS-Bを受信してみました “SDR ADS-B 1090MHz 受信用アンテナ ssmtp mailutils mpack twython” (5)”
“Raspberry Piで航空機のADS-Bを受信してみました “無線LAN拡張 AirMac Express フレキシブルアーム” (6)”
“Raspberry Piで航空機のADS-Bを受信してみました “デバッグ環境 まさかの故障->Raspbian再インストール” (7)”
“Raspberry Piで航空機のADS-Bを受信してみました “状態の定期チェック Postfix cron USB温度計 temper” (8)“の続きです。
(1) お試しなので格安なWebカメラを探してみる
Raspberry Piのカメラモジュール言えば、”Raspberry Pi Raspberry Pi NoIR Camera V2“が定番。主なスペックを見ても、”ソニーIMX219PQ CMOS画像センサ”を搭載していて、静止画なら8メガピクセル固定フォーカス(3280 x 2464 pixel )、ビデオなら1080p30, 720p60と、とても魅力的な製品なんですが、ちょっと試してみよう、という段階で購入するにはお値段がちょっとお高め、モジュールなのでケースがなく、リビングルームに設置するには更なる投資が必要、ということで、現時点で導入するには敷居が高い感じ。
というわけで、Raspberry Piでの動作実績があるWebカメラを調べてみました。このカテゴリの製品は、いずれもUSB接続なので、導入し易いし、勿論、ケースにちゃんと入っているので、リビングルームに設置しても違和感が少ない、というメリットがあります。
ざっと調べた結果、候補としては、
・”iBUFFALO マイク内蔵120万画素Webカメラ HD720p対応モデル ブラック BSWHD06MBK”
静止画 : 1280X960 pixel、ビデオ HD720p 120万画素。
・”BUFFALO 200万画素WEBカメラ 広角120°マイク内蔵 ブラック BSW200MBK”
静止画 : 1920×1080 pixel、ビデオ FULLHD(1920x1080px) 200万画素。
・”LOGICOOL ウェブカム HD画質 120万画素 C270”
静止画 : 1280×720 pixel、ビデオ HD 720p 120万画素最大300万画素(ソフトウェア処理による)。
といった製品が見つかったんですが、Raspberry Piとの接続実績が一番あって、外見のデザインもリビングルームでギリギリセーフかなあ、と思えるLOGICOOL C270を今回はチョイスしてみました。ちなみに、スペック的には他の製品より劣る部分はありますが、あくまでお試しモードでの導入ですので、ここはリスクの少ない製品、ということで。(リビングルームに設置予定なので、本当はホワイトが欲しかったんですが…)
パッケージを開封して、実際に置いてみました。
パソコン用のWebカメラなので、ディスプレイのエッジ部分に噛ます感じで立てかけるスタイルです。
(2) “MJPG-streamer”を試してみる
まずは定番の”MJPG-streamer“から試してみることにします。
(a) Raspberry Piの環境チェックから
LOGICOOL C270をRaspberry PiのUSBポートに接続した後、”lsusb”でLOGICOOL C270をちゃんと認識できているかどうか確認しておきます。今回、いろいろ試すなかで、時々、LOGICOOL C270が見つからないよ、というエラーが発生しました。ま、そんな時は、Raspberry Piをリブートかシャットダウンかなあ。
“ifconfig”で、Raspberry Piに割り当てられているIPアドレスを確認しておきます。POOHの場合は、IPアドレスを固定してあるので、わざわざ調べなくてもいいんですけどね。
(b) “MJPG-streamer”をインストールしてみる
次の手順でインストールを行います。
“sudo apt-get update”
“sudo apt-get install -y subversion libjpeg-dev imagemagick”
“svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer mjpg-streamer”
“cd mjpg-streamer”
“make”
“sudo make install”
(c) “MJPG-streamer”を起動してみる
インストールが終わったら、”MJPG-streamer”を起動してみます。
“cd mjpg-streamer”
“sudo ./mjpg_streamer -i “./input_uvc.so -f 10 -r 320×240 -d /dev/video0 -y -n” -o “./output_http.so -w ./www -p 8080″”
続いて、macOSの”Safari”(POOHの場合は。)で、”http://Raspberry PiのIPアドレス:8080/”にアクセスすると、このようなページが表示されます。
“Stream”というタブ画面に切り替えれば、ストリーミング中の動作再生画面が表示されます。
(d) コマンドが面倒なのでスクリプトを書いてみる
“MJPG-streamer”を起動する際のコマンドがやたら長いので、スクリプトを書いて、面倒なコマンド入力を簡略化してみました。
“cd mjpg-streamer”でディレクトリを変更したうえで、新しいスクリプトファイルを開きます。
例えば、”nano start_mjpg_streamer.sh”。(スクリプトファイルの名前はお好きなものに変更して下さい。)
今回は、コマンド入力の簡略化に加えて、HTTPのポート番号も変更しておきたかったので、こんな感じのスクリプトを書いてみました。ちなみに、将来的には、外部インターネットからのアクセスも想定しているので、ユーザ認証もできるようにしておきました。今回は、その部分はコメントアウトしてありますけどね。
スクリプトが完成したら、”sudo sh start_mjpg_streamer.sh”で実行してみます。これで、スクリプトファイルを実行するだけで、ストリーミングを開始できるようになりました。今度、時間が出来た時にでも、”AirMac“のNATポートマッピング・プロトコルを使った外部接続にトライしてみようと思っています。
(3) “monitor”を試してみる
“monitor“は、Webカメラから動画をストリーミングするだけではなく、動画のなかに動きやノイズを検知したら、動画や静止画を自動的に保存してくれる監視カメラ的な機能を提供してくれるスグレモノ。設定ファイルの記述で、インターバル撮影も可能みたいです。
(a) “monitor”をインストールしてみる
“sudo apt-get install motion”
インストールが終わったら、以下の通り、設定ファイルを2箇所変更します。
“sudo nano /etc/default/motion”
“start_motion_daemon=no” -> “start_motion_daemon=yes”。
“sudo nano /etc/motion/motion.conf”
“daemon off”-> “daemon on”。
(c) “monitor”を起動してみる
インストールが終わったら、”monitor”を起動してみます。
“sudo service motion start”
続いて、macOSの”Safari”(POOHの場合は。)で、”http://Raspberry PiのIPアドレス:8081/”にアクセスすると、あれれ、表示できないぞ!
(d) 設定ファイルの内容を見直してみる
“sudo nano /etc/motion/motion.conf”で、
“stream_localhost on” -> “stream_localhost off”に変更。
序に、HTTPポート番号も”8081″から”9901″に変更しておきます。
“sudo /etc/init.d/motion restart”した後、
macOSの”Safari”(POOHの場合は。)で、”http://Raspberry PiのIPアドレス:9901/”。
無事、ストリーミング動画を表示することができました。
でも、”MJPG-streamer”と比べると、あまりスムースじゃないし、すぐ切れちゃうなあ。
(4) “fswebcam”を試してみる
最後に、静止画専用ですが、”fswebcam“を試してみることにします。
(a) “fswebcam”をインストールしてみる
インストールは、メチャメチャ簡単です。
“sudo apt-get install fswebcam”。
(b) “fswebcam”を実行してみる
実行も簡単。
“sudo fswebcam -r 640×480 -S 2 -F 10 /home/pi/Pictures/image.jpg”。
(c) 連続して撮影するとエラーが発生するんだけど…
ただ、続けて撮影しようとすると、”Error opening device: /dev/video0 open: Device or resouce busy”というエラーが発生し、撮影できません。
このエラーについて、ネットで調べてみたところ、
“monitor”をバックグラウンドしているとNG、ということで、上記(3)で行った”monitor”の設定ファイルで、該当項目を”off”,”no”にしてリブート。
確かに、その後、1度は正常に実行できたんですが、やはり連続して撮影しようとするとエラー。
それじゃあ、ということで、連続して撮影する前に、”pkill fswebcam”してみるとエラーが発生しなくなるのですが、必ずしも連続撮影ができるわけでもなさそうです。んんん、困ったなあ。
もしかすると、多少のインターバルを入れれば、いいのかなあ?と思い、試してみると、今後はWebカメラがUSBポートから見えなくなってる。これだと、定期的に静止画を撮影する、といったことができないなあ。さて、どうしたものやら。
設定ファイルを変更したとは言え、”monitor”が怪しそうなので、ここは思い切ってアンインストールしてみました。
“sudo apt-get autoremove monitor”。
で、今後は、15秒毎にインターバル撮影をしてみました。
“sudo fswebcam -l 15 -r 640×480 /home/pi/Pictures/image.jpg”。
そうすると、2回に1度は、正常に撮影できることが確認できました。これで、WebカメラがUSBポートから見えなくなる症状が再発しなければ、何とか定期的に写真撮影する仕組みを作れそうなんだけどなあ。
(d) 撮影した静止画をツィートするスクリプトを書いてみる
課題は残るものの、一応、撮影した静止画をツィートするPythonスクリプトを書いておくことにします。以前書いたツィート用のスクリプトを流用します。
“nano webcamera.py”。こんな感じ。
スクリプトを実行してみます。
“python webcamera.py”。
2回に1度、上記のエラーは発生するものの、まずは定期的に実行できるスクリプトは完成。
p.s>
1時間毎に実行するよう作成したスクリプトの内容をcronに組み込んで、数日、実行してみたのですが、やはりエラーが発生して、思うように撮影できていませんでした。んんん、WebカメラがUSBポートから見えなくなる症状が何とかなればなあ。
続く。
ロジクール C270 グレー&ブラック HD Webcam |
【あす楽対象】 BUFFALO WEBカメラ[USB・120万画素] マイク内蔵(ブラック) BSWHD06MBK[BSWHD06MBK] |
【送料無料】アイ・オー・データ機器(Embest) UD-RPNOIRCAMERA Raspberry Pi オプション ナイトカメラモジュール Raspberry Pi NoIR Camera V2【在庫目安:お取り寄せ】 |
ホームページ”THE POOH FILES”にも是非お立ち寄り下さい。