ラズパイでカメラ安定化バージョン2 安定化試験中
前に作ったラズパイカメラを使ったカメラなんですが、何日かで止まってしまうので
安定化するための措置を行います。
前の記事でジェシーのままやりたかったんですが、ダメだったみたいなので
新しいやつを使います。
新しいのはラズパイをインストールするシキタリが変わっていて、
OSの名前もRaspbianではなくて
SDに書き込むツールが本家の財団から出ていて、
インストールするOSの名前もRaspberry Pi OS(32-bit)とかになってたりします。
ツールをインストールしたら起動して
入れるOSはドロップダウンリストから選ぶだけで、簡単に
SDカード作ってくれたりします。
普通のデスクトップ向けのraspberryPi用のOSを選んでみたところ、
初回の起動でWIFIのSSIDとかパスワード、国の名前や言語とか選べば
普通にネットにつながってくれましたので、その状態からやります。
ちなみに、unameの結果は
Linux raspberrypi 5.10.60+ #1449
ってなっておりました。
■今回の方針。
OSがVersionUPしているので、
これで、安定するかも!!
と甘い期待を抱きまして、今回は最新バージョンのまま小細工しないで
カメラ撮影して保存する部分だけを実装したいと思います。
カメラ画像(静止画)を日付と時刻で保存するプログラムを
crontabで一定周期で呼び出す。
画像の解像度と保存先の容量を計算して
ctontabに設定する周期を調整。
ディスクがいっぱいにならないように一定期間経過したファイルを削除する
sshでログインしてメンテナンス可能にする
sambaで取得した画像を確認可能にする
■まずはなにはともあれ、sshが使えないと・・・なので、sshを有効化
sudo raspi-config
interfaceing Options → SSH
Wold you the SSH server to be enables?
Yes
Finish
reboot
→前回躓いたpythonにカメラモジュールを入れるところから始めます。
■カメラを使えるようにする
sudo raspi-config
Interfacing Options → Camera
Yes
Ok
rebootされる
■カメラ関連のモジュールを入れる
sudo apt-get install python-picamera
python-picamera はすでに最新バージョン (1.13) です。
最初から入っている。うーんなんもすることないね。
■一枚撮ってみる。
pi@raspberrypi:~ $ python
Python 2.7.16 (default, Oct 10 2019, 22:02:15)
[GCC 8.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import picamera
>>> camera = picamera.PiCamera()
>>> camera.capture('image.jpg')
>>> quit()
pi@raspberrypi:~ $ ls
Bookshelf Documents Music Public Videos picamera
Desktop Downloads Pictures Templates image.jpg
pi@raspberrypi:~ $
image.jpgができている。
画像を表示すると普通に撮れて要るっぽい
もうね、何にもしなくても普通につないてプログラムちょいちょいでカメラが動くって
おもしろ。
■動画
ラズパイカメラの場合?(パイソンの場合かも)、
動画は拡張子h264形式で保存されるので
mp4にするためにgpacってのがいるみたいです。
sudo apt-get install -y gpac
■動画撮影
import picamera
import time
camera=picamera.PiCamera()
camera.hflip = True
#camera.vflip = True
camera.resolution = (640,480)
camera.start_recording('record.h264')
time.sleep(10)
camera.stop_recording()
camera.close()
MP4Box -fps 30 -add record.h264 record.mp4
ちなみに、ラズパイに入っている再生ソフトVLCプレイヤーではh264のままでも再生できる
■cronに設定を入れて定期的に画像を保存する
sudo crontab -e
* * * * * for i in `seq 0 5 59`;do (sleep ${i}; /home/pi/picamera/camera.sh) & done;
0 * * * * /home/pi/picamera/file_del.sh
#0 0 * * * sudo reboot
1行目は5秒に一回camera.shを起動
2行目はfile_del.shを毎時0分に起動
3行目は1日一回00:00にrebootする
3行目はコメントしといたほうが良いと思うのでコメント
ま、やっぱ安定しないときはこれをやる
シェルに実行権を付ける
chmod +x camera.sh file_del.sh
→シェルとプログラムの中身
■file_del.sh
find /home/pi/picamera/data/* -name '*.jpg' -ctime +7 -exec rm -f {} ¥;
find /home/pi/picamera/data/* -type d -ctime +7 -exec rm -rf {} ¥;
■camera.sh
python /home/pi/picamera/camera.py
■camera.py
import picamera
import datetime
import os
now = datetime.datetime.now()
base_directory = '/home/pi/picamera/data/'
YYYYMMDD = now.strftime('%Y%m%d')
output_directory = base_directory + YYYYMMDD
if not os.path.exists(output_directory):
os.makedirs(output_directory)
os.chmod(output_directory, 0777)
filename = now.strftime('%H%M%S')
filename_fullpath = output_directory + '/' + filename + '.jpg'
camera=picamera.PiCamera()
camera.hflip = True
camera.vflip = True
#camera.resolution = (640,480)
camera.resolution = (1024,768)
camera.capture(filename_fullpath)
■file_del.shの調整
画像の1ファイルが500㌔バイト。
ディスクの空きが残り11GB
半分の5ギガをこのシステムで使うとして
(5 × 1000 × 1000 × 1000 ) / 500000
= 10000枚
1万枚の写真を保存するとして、
5秒間隔とすれば
期間は
5万秒
ってことは、時間(H)にすると
50000 ÷ 3600
= 13.88888889
って、それしか撮れないのかよ。
みたいな。
crontabを10秒間隔として
削除までの期間を1日で調整。っと。
■smabaでwindowsから見えるようにする
sudo apt-get install -y samba
設定
sudo vi /etc/samba/smb.conf
[pi]
comment = Welcome to pi Server
path = /home/pi/picamera/data
browseable = yes
wriable = yes
guest ok = no
force create mode = 0666
force directory mode = 0777
read only = no
create mask =0777
directory mask = 0777
sudo smbpasswd -a pi
sudo service smbd restart
■完成
この状態で2か月ぐらい動くかテストすることにする。
1週間経過しないぐらいで動かなくなった。ログを見るとpsの結果が連続して出ているように見える。なぜ?