にゃんCAM再構築
ことの経緯 以前、raspberry piにて猫カメラ(にゃんCAM)を構築しました。 普段はTapoを使っていたので全然出番が無かったのですが、久々に起動しようとしたら起動を繰り返す変な動作をしていました(デスクトップ表示→左上にアンダーバー点滅→再起動の繰り返し) 直そうと適当にやっていたらSDカードを割ってしまいました(物理的に)。 というわけで、再構築しようとしたのですが環境が変わってつまずいたので新たに記事にしました。 教訓 SDカードは色んな意味ですぐ死ぬ。クローンを作っておくこと ハード raspberry pi 3B(3B+ではない) 32GBのSDカード 5.1V出力のACアダプタ これはlow voltage errorの対策です 機能、ファイルの置き場など OpenCVでUSBカメラ(webカメラ等)2台を制御し、30分ごとにLINEで撮影画像を送信します 2台用でプログラムを書いてあるため、2台以外(1台or3台〜)ではプログラムがエラーになり、動作しません。(具体的にはプログラムエラー→再起動のループ)) 1台分にコメントアウトすれば1台でも動作します saikidou.serviceとsaikidou.timerによってラズパイを定期再起動させますが、ラズパイの安定性向上やUSBが死んでカメラが認識しなくなることが偶にあり、それを復帰させるために実施します USBが死ぬ(例えば、カメラが1台しか繋がってないような状態になります)と上記した通りnyancam.pyがエラーになり、nyancam.serviceによってプログラムの再起動を繰り返しますが、少なくとも定期再起動のタイミング(6時間ごと)で復帰するため長期にカメラが機能しなくなることはなくなります 死亡したときはプログラムの再起動が繰り返されるため、USBカメラのLEDが点滅します(LEDは撮影時に点灯) ラズパイのそばで対応できるなら再起動を待たずともUSBの抜き差しで再認識します(USBが復帰し、nyancam.serviceによる再起動でカメラが2台認識します) GPIO26に接続したスイッチを単押しするとテスト撮影、5秒以上長押しするとラズパイをシャットダウンします Filename Path Note nyancam.py /home/USERNAME/Desktop/ プログラム本体 nyancam.service /lib/systemd/system/ nyancam.pyを自動起動する エラー時にnyancam.pyを再起動する saikidou.service /lib/systemd/system/ ラズパイを定期再起動する saikidou.timer lib/systemd/system/ saikidou.serviceとセット githubにあげてあります プログラムの実行結果 nyancam.pyを実行した結果例を載せます カメラ検索でワーニングが出ますが、動作に問題ないためそのままにしています。 camera number 0 Find! [ WARN:0] global /tmp/pip-wheel-a8gfdc_n/opencv-python_13563f08137a4b20bc4dfee05bcbf854/opencv/modules/videoio/src/cap_v4l.cpp (893) open VIDEOIO(V4L2:/dev/video1): can't open camera by index camera number 1 None camera number 2 Find! [ WARN:0] global /tmp/pip-wheel-a8gfdc_n/opencv-python_13563f08137a4b20bc4dfee05bcbf854/opencv/modules/videoio/src/cap_v4l....