ラズパイでカメラ安定化バージョン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の結果が連続して出ているように見える。なぜ?