0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

高解像度タイムラップス撮影にRaspberry piで大容量USBメモリ(1TB)を使ってみる

Last updated at Posted at 2018-08-07

#はじめに
Raspberry piでモニタリングする際、どうしても大容量のハードディスクやメモリを使いたくなるときがあります。例えば長時間、静止画・動画を撮り続けたいだとか、高解像度の写真をストックさせたいなど・・・。
このとき、USB HDを使用した場合、USBメモリに比べ消費電力が大きいため、Raspi側のデフォルトの状況だと電流能力に制限をかけていることから、動作不安定になりやすいことが分かっています。特に遠隔地に設置する場合、HDの不安定さは致命的のため、何よりも安定さが求められます。
そこで、大容量のUSBメモリ(1TB)を使って、タイムラップス撮影を行ってみました。

#材料
・ELP WebカメラLinux/Windows HD画質 800万画素 Sony IMX179 sensor ウェブカメラ
・キングストン Kingston USBメモリ 1TB USB 3.1
・Raspberry pi 3 Model B

USBメモリはKingstone製(海外製)を用いました。少々高額ですが、市販されている1TBのUSBメモリで入手できるのは、今のところこれぐらしかないようです。
Dg0wvZXUYAUg0Js.jpg

#想定した環境
今回は取得した膨大なデータをWindows端末で吸い上げることを想定しました。タイムラプス撮影では、蓄積されるデータは膨大になるため、すべてのデータをIotで転送することはできません。そのため、モニタリング状況の確認は、一部のデータ(低解像度)のみにしておいて、すべてのデータ(高解像度)を吸い上げるには、ノートPCを用いることを想定しました(現場に定期的に吸い上げに行くような場合を想定・・・)。

#USBメモリの初期化
通常、Raspi側でext4形式でフォーマットを行うと、Windows側では認識しません。
また、今回使用したUSBメモリは、Windows側でNTFS等のフォーマットを行うと、Raspi側でうまく認識しない現象がでてしまいました。以前、同一メーカの512GBを使用したときは、そのような現象はでませんでした。どうやら1TBになると少々勝手が違うようです。
そのため、RaspiとWindowsの両方認識できるUSBメモリを作成しなくてはなりませんでした。

Windows側でフォーマットする方法は以下です。
【フォーマットの方法】
Windows機にメモリを挿入し、フォーマットを行う。ファイルシステム:exFAT、アロケーションユニットサイズ:標準のアロケーションサイズを選択する。
キャプチャ.JPG

この方法で、Raspi側とWindows側の両方で認識できるUSBメモリが出来上がります。
ただし、Windows側では読み取り専用になってしまいます。

#Raspi側の認識方法
Raspi側に上記でフォーマットしたUSBメモリを装着したら、まずは、以下のコマンドで認識の確認を行います。

sudo fdisk -l

いろいろ表示されますが、以下のように/dev/sda1が表示され、exFatの文字があれば認識している証拠です。

Device     Boot  Start        End    Sectors  Size Id Type
/dev/sda1       131072 1933574143 1933443072  922G  7 HPFS/NTFS/exFAT

さて次にmountですが、実はこのUSB、通常のmountコマンドでは認識してくれません。いろいろ探した結果、以下をインストールすれば認識することが分かりました。

sudo apt-get install exfat-fuse

そのあとmountコマンドを実行します。マウント先はそれぞれの環境に応じて変更してください。

sudo mount /dev/sda1 /media/usbmem1

これでいよいよ大容量USBメモリを認識したはずです。次のコマンドでドライブを確認してみましょう。お~認識している。これでディスクへの書き込みもできるはずです。

pi@raspberrypi:~ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       7.2G  2.8G  4.1G  40% /
devtmpfs        458M     0  458M   0% /dev
tmpfs           462M     0  462M   0% /dev/shm
tmpfs           462M   47M  415M  11% /run
tmpfs           5.0M  8.0K  5.0M   1% /run/lock
tmpfs           462M     0  462M   0% /sys/fs/cgroup
/dev/mmcblk0p1   63M   21M   42M  34% /boot
/dev/sda1       922G    0G  922G   0% /media/usbmem1

#タイムラプス撮影
タイムラプス撮影には、800万画素のUSBカメラを用いて、motionで撮影しました。

sudo apt-get install motion

今回は、毎正時(1時間毎)1秒ごとの写真を30分間撮影する仕様にしました。そのため、crontabに1時間ごとにmotionを起動するようにしました。
記述するとこんな感じです。

#--撮影開始--
00 0-18 * * * sudo motion -n -m >/dev/null 2>&1

motionの停止は、以下のスクリプトで自動的に行いました。サービスでmotionが起動している場合は、motionサービスを停止するものです。

#!/bin/bash
echo "Shell START"
count=`ps -ef | grep -e motion | grep -e -n | grep -v grep | awk '{ print $2 }'`
for VAL in $count
do
   echo "Kill process : $VAL"
   sudo kill $VAL
done
#--
count=`ps -ef | grep -e /usr/bin/motion | grep -v grep | awk '{ print $2 }'`
if [$count = ""]; then
   echo "process NULL";
else
   echo "kill process : $count";
   sudo kill $count
fi
echo "Shell END"

#撮影時間
この仕様で撮り続けた場合、約1ヶ月持ちます。特に遠隔地の場合、頻繁にわざわざ出向かなくても済みます。交通費を考えた場合、USBメモリが少々高くても、場合によってはPAYするかもです。

#おわりに
今回は静止画でしたが、もちろん動画でも行えます。motionを使っているので、解像度や圧縮率など任意に変更できるため、さまざまな環境に応じことも可能のため、長期のモニタリングに有効であることが分かりました。今後、USBメモリの低価格化や、USBカメラの高解像度化が更に進めば、より精度の高いモニタリングも可能になってきます。
現在、実際にこれを使って海岸のモニタリングを行っております。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?