2014年7月19日土曜日

Raspberry Pi カメラモジュールを使って監視カメラを作る – 其の二

この投稿は、2014/07/19 0:00:39 に 趣味と技術のノート に再発行されました
Raspberry Pi カメラモジュールを使って監視カメラを作る – 其の二


前回の更新から非常に間隔があいてしまいました。まとめるのって無づかしいです。
それでは、今回の内容はmotion-mmal(以下motionとする)の起動スクリプトと、ホームサーバーとの同期です。

motionを起動するのは簡単です。いつものように適当なディレクトリに移動します。
私はめんどっちぃので、ホームディレクトリに作ってしまいました。

sudo nano start_with_args
と打ち込んで、起動ファイルを作成します。中身はこんな感じです
pi@PI01 ~ $ cat start_with_args
cd /opt/motion-mmal
sudo ./motion -n -c motion-mmalcam.conf
cd ~/
移動先などは、前回インストールしたディレクトリに設定してください。
起動ファイル単体では、自動起動を実現できませんので、設定を変更します。

以下のように設定してみてください。※1
sudo nano /etc/ rc.local
#exit 0 の手前に以下を追加。スクリプトのディレクトリを確認すること
/home/pi/start_with_args&
exit 0
こんな感じで追加できたら再起動してサービスを確認してみてください。Motionが動いていると思います。

設定ができたら次は、ホームサーバーとの自動同期です。
Raspberry Pi本体に大量の記憶領域がある人は、意味がないかもしれません。私のように、最低限の容量しかない場合、SDカードの容量を節約したいと思うはずです(一日稼動していると1GB超えますんで・・・)。というわけで、cronとsambaを使って自動バックアップを行いたいと思います。
取り合えず、スクリプトをシコシコ書いていきます。
ただし、今回は元ファイルを削除してしまいます。注意してください。
下準備をします。
#適当なディレクトリにスクリプトを置きます。
sudo mkdir  /opt/common-scrypts
sudo nano daily_work_scrypts.sh
次に、スクリプト本体を書きます。
pi@PI01 /opt/common-scrypts $ cat daily_work_scrypts.sh
#!/bin/sh
FILENAME=`date +%Y-%m-%d`.zip
#prevent command
cd /home/pi/motion
mkdir  `date +%Y-%m-%d`

#move files into data folder
for var in *.jpg
do
     mv $var `date +%Y-%m-%d`
done

for arr in *.avi
do
     mv $arr `date +%Y-%m-%d`
done

#Compress folder into zip-file for reduce size
zip -T -r ${FILENAME} `date +%Y-%m-%d`

#Mount SAMBA server as samba on /home/pi/
mount -t cifs -o username='USER',password='PASS' //SERVER(IPアドレスなど)/(マウントしたいディレクトリ)/ /home/pi/samba
cp ${FILENAME} /home/pi/samba/
cp `date +%Y-%M-%d` /home/pi/samba/

#Un-mount samba server
umount //SERVER(IPアドレスなど)/(マウントしたいディレクトリ)/

#delete not in need zip file and folder
rm -rf ${FILENAME}
rm -rf `date +%Y-%m-%d`

#exit scrypt
exit
と、こんな感じにスクリプトを書きます。勿論、マウントするサーバーなどは、自分の環境に合わせて書き換えてください。
スクリプトを自動実行するに当たって、実行権を付与しなければなりませんので、以下を実行。
#スクリプトと同じディレクトリで
sudo chmod +X dail_work_scrypt
次に、cronの設定をします。詳しい設定は外部サイトなどを参考にしてください(個人的には日経LINUXなどを買うのが一番かと思いますが、この程度なら必要はないでしょう)。
sudo crontab –e

#一番最後に以下を追加。

#Sync server scrypt.
59 23 * * * /opt/common-scrypts/dail_work_scrypt&

これで、毎晩23時59分に同期処理が行われます。
どうですか?簡単でしょうか。僕は、結構苦労しました。実行権とかぜんぜん知らなかったので、よい勉強になったとおもいます。

次回はHC-06を使ったワイヤレスRS232C(9pinじゃないよ・・・)通信を実現したいと思います。

つづく。
参考サイト
※1 : 「http://homebrew.jp/show?page=1445

2014年7月18日金曜日

近況報告 - 2014/7/18

ここのところ非常に時間が割きづらくなっております。

院生さんに頼まれている課題をこなす方法も考えているのですが、いまいちです。

そうこうしているうちに、名古屋大学さんは雲同定の方法を見つけたようで、先を越されてしまったなぁと、非常に苦い思いをする羽目に。
どういう方法をとっているかは、定かではありませんが、おそらくは形状マッチングなどを使用しているのではないかと思われます(他にも、ハード面でいくつかの方法が考えられるが・・・)。

他にも、雲の中心を求める方法を考えているのですが、これには彩度が有効そうだなぁと思っています。雲が中心に行くにつれて日光が遮られる割合が高くなるならば、閾値を設定してやれば簡単にわかりそう。

他に、面積から中心を求められるんじゃないかとか、いろいろ考えましたが、彩度を使った方法が一番有効そうです(保障なしw)。

ていうか、研究室のみんなもうちょっとがんばってくださいよ!DSPで止まってないで、最低でもFPGAやろうよ!ラズパイぐらい安いんだから、買ってこようよ!!!

愚痴ばっかり言ってもしょうがないですけどね。