Raspberry Piで航空機のADS-Bを受信してみました”セルフパワーUSBハブ Raspberry Pi Camera V2″ (12)
“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)”
“Raspberry Piで航空機のADS-Bを受信してみました “カメラ監視 LOGICOOL C270 MJPG-streamer monitor fswebcam” (9)”
“Raspberry Piで航空機のADS-Bを受信してみました “USBポートの制御 hub-ctrl ミニ扇風機” (10)”
“Raspberry Piで航空機のADS-Bを受信してみました “LG LP097QX1 9.7″ 2048×1536 液晶パネル” (11)“の続きです。
(1) セルフパワーUSBハブを導入してみた
(a) Raspberry Piの電源周りを改善してみた
Raspberry Pi3 Model Bの場合、USB ポートからの電源供給量はデフォルトでは全ポート合計で 0.6Aだそうです。
いろいろ調べてみると、”/boot/config.txt”という設定ファイルで、
“max_usb_current=1″とすると、全ポート合計で1.2Aまでとすることができるそうです。
一方、Raspberry Pi3 Model Bへの供給電源は、推奨が 2.5Aだそうです。供給電源に関しては、”Raspberry Piスターターパック (Economy) – Pi3検証済“に同封されているAC電源アダプター(5V 3.0A)を使用しているので、USB仕様のWebカメラを1台接続したぐらいなら、支障はないと思っていました。
ただ、過去のTALKで触れた通り、”LOGICOOL ウェブカム HD画質 120万画素 C270“をRaspberry Pi本体のUSBポートに接続すると、いつの間にか、デバイスが見えなくなってしまう、という症状が発生してしまい、困っていた次第です。
もしかすると、Raspberry Pi本体のUSBポートのバスパワーを使っていることで、電源不足が発生しているのでは?という思いがあったので、今回、実験的に、セルフパワーのUSBハブを購入し、試してみることにしました。
で、今回購入したセルフパワーのUSBハブは、”【2014年モデル】エレコム USBハブ 2.0対応 4ポート ACアダプタ付 ブラック U2H-A4SBK“。
セルフパワー時:4ポート合計2,000mA以内(各ポート500mA未満)といったスペックです。
付属のACアダプタを接続するため、ケーブルがゴチャゴチャしちゃう点は、仕様とは言え、どうにかならないかなあ、といった感じです。
実は、”【2013年モデル】エレコム USBハブ 2.0対応 4ポート 2A出力 ACアダプタ付 ブラック U2HS-T201SBK“も候補のひとつで、供給可能電流:ダウンストリーム3ポート合計1500mA以内、充電用ポート2000mA以内というスペック。こちらの特徴は、充電用ポート付きで、ギリギリ、Raspberry Pi本体の電源供給も兼ねることができそうだったんですが、Raspberry Piの供給電源の推奨が2.5Aということもあって、今回は安全圏で進めることにしました。
(b) 定期チェックのスクリプトを実行してみた
こちらが、WebカメラをRaspberry Piに直接接続した時の”lsusb”の結果。
で、こちらが、セルフパワーUSBハブ経由でWebカメラを接続した時の”lsusb”の結果。Raspberry Pi側で、ちゃんと認識してくれています。
で、スクリプトを実行してみた結果は、
お、新しいエラー発生!んんん、改善の兆候がないなあ。ちなみに、このエラーはUSBポートをリセットすれば直るようなのですが、どうなのかなあ?
(c) 自動起動時に静止画の撮影を開始することにしてみた
Pythonのスプリント上で実行すると、いつの間にかUSBポートからデバイスが見えなくなってしまう傾向がありそう。(根拠はないけど…)
で、気を取り直して、以前にも試した内容ではありますが、今度はセルフパワーのUSBハブ経由に変えたこともあり、再度、マニュアルで定期的に静止画を撮影するコマンドを打ってみました。そうすると、15秒に一度、エラーは発生するものの、次の15秒では正常に撮影できました。
というわけで、Pythonのスプリントから静止画撮影部分をコメントアウトしたうえで、
Raspberry Piが起動する都度、定期的な静止画を撮影を開始するようにしてみました。(“sudo nano /etc/rc.local”)
まずは、15分間隔で試してみました。結果はNG、いつの間にかUSBポートからデバイスが見えなくなりました。
その後、撮影間隔をいくつか試してみた結果、撮影間隔が60秒辺りであれば数時間、静止画を撮ることができましたが、何時間かすると、やはりUSBポートからデバイスが見えなくなりました。んんん、原因は不明ですが、USB仕様のWebカメラを使う場合は、実践で使う前に、ある程度、連続した時間、動作テストをしてみた方が良いかもしれませんね。
今回、不発に終わってしまったUSB仕様のWebカメラは、以前、改造した一体型マックにでも使ってみようかなあ。その辺りは、また後日。
(2) Raspberry Pi Camera V2で静止画を撮影してみた
というわけで、USB仕様のWebカメラで、定期的に静止画を撮影する、という取り組みは失敗に終わりましたが、折角のRaspberry Piを、ADS-B信号の受信だけに使うっていうのも、何とも勿体無いので、Raspberry Piの公式カメラモジュールを使ってみることしました。
公式カメラモジュールの最新バージョンはV2.1で、イギリスでは昨年6月から”発売“になっているようなのですが、日本国内ではV2というバージョンとして販売されています。(カメラモジュールのプリント基板には、Camera V2.1 と刻印されています。)
で、こちらのカメラモジュールを購入する際、気を付けておきたいのが、”Daylight“と”NoIR“の2種類のモデルがあるという点です。日中、普通に使う範囲であれば”Daylight”版で良いのですが、暗闇や夜間の撮影で使う場合は、赤外線フィルターが搭載されていない”NoIR”版を購入すると良いそうです。”NoIR”版も気になったものの、今回は”Daylight”版を購入してみました。余談ですが、公式カメラモジュールは、かなりお高めの料金設定になっているため、購入する際は、いろいろな販売チャネルで探してみると良さそうです。POOHの場合は、アマゾンで購入したのですが、アマゾンでもいろいろなお店が販売していて、販売価格にかなりの差がありました。で、POOHは、3,800円ぐらいで購入しました。
カメラモジュールの基盤部分が赤いやつが”Daylight”版、黒いやつが”NoIR”版です。パッケージに、”V2″と”element14″という記述があることも最新版であることを示しています。
(a) Raspberry Piにカメラモジュールを取り付けてみる
パッケージには、セットアップに関するマニュアルは同封されていません。とは言え、手探りで取り付け作業をスムースに進めるのも難しいので、YouTubeを検索して、取り付け手順を教えてもらいました。例えば、こちら。
Raspberry Piをケースに入れている場合は、カメラモジュールのケーブルが取り回せるかどうかがポイント。
最後に、カメラ・レンズに付いているフィルムを外せば、取り付け完了です。
(b) Raspberry Piのシステム環境を準備してみる
まずは、Raspberry Piのシステム環境を最新の状態にしておきます。
“sudo apt-get update && sudo apt-get upgrade”。
続いて、Raspberry Piの設定メニューから、”Raspberry Piの設定”項目を選択後、”インターフェイス”パネルで”カメラ”を”有効”にしてリブート。
または、ターミナル上で設定したければ、
“sudo raspi-config”を実行後、以下の手順で、”カメラ”機能を有効にすることもできます。
Raspberry Piの再起動後、
“raspistill -o image.jpg”を実行すれば、
このように、静止画を撮影することができました。んんん、さすがに純正モノだけあって簡単だなあ。
(c) ターミナルから撮影済の静止画を閲覧できるようにしてみた
ま、このまま次の工程に進んでもいいのですが、撮影した静止画をターミナル上で、その都度チェックできると、今後のデバッグが楽になるので、”fbi”というアプリをインストールしてみました。
インストールは、”sudo apt-get install fbi”を実行するだけ。
早速、実行してみると、
“sudo fbi -a -image.jpg”。
どうも、macOS上のターミナルから実行すると、アプリ側が実行環境として想定していないみたいです。
それでは、”Real VNC“を介して、実行してみると、Raspberry Piがフリーズ!
というわけで、”fbi”を一旦アンインストールして、次の工程に進むことにしました。
(3) Raspberry Pi Camera V2で静止画を定期的に撮影してみた
さて、当初の目的だった静止画の定時点撮影を試してみます。
これまで使ってきたPythonスクリプトを編集します。(スクリプトの詳しい内容は過去のTALKを参照して下さい。)
“nano raspberry_report.py”。
“raspistill -0 /home/pi/Pictures/image.jpg”をスクリプトに追記して、撮影した静止画をツィートするようにしました。
このスクリプトを実行してみると、撮影した静止画のファイルサイズが大きすぎというエラーが発生しました。
デフォルトのままで撮影すると、800万画素で、3280 × 2464の解像度で写真を撮ることができます。実際に撮影した静止画のファイル容量をチェックしてみたところ、何と3.8MBでした。これだと、さすがにツィートできませんね。
兎にも角にも、ファイル容量を減らさないとツィートできないので、
“raspistill -w 420 -h 360 -q 80 -0 /home/pi/Pictures/image.jpg”に変更。静止画の縦横のサイズを420 x 360にし、jpegの画質を80%にしてみました。
このぐらいの静止画サイズにしてみると、約140KBぐらい。もうちょっと大きな静止画でも良さそうなので、後で地道にオプションの値をチューニング。
それから、カメラモジュールの設置方向により、上下左右に画像が反転してしまいます。そんな時は、”-hf”で水平反転、”-vf”で垂直反転させることができます。
数日間、ランニングさせてみましたが、エラーが発生したりすることもなく、順調に定期実行ができました。これなら、本番環境でも大丈夫そうだなあ。
ELECOM USB2.0ハブ ACアダプター付 セルフパワー サイドポート付き 4ポート ブラック U2H-A4SBK |
Raspberry Pi カメラモジュール V2 |
Raspberry Pi カメラモジュール V2:UD-RPCAMERA(アイオーデータ) |
ホームページ”THE POOH FILES”にも是非お立ち寄り下さい。