コピペで簡単!スマホからも見れる!ラズパイとUSBカメラで定点観測 

2022年4月23日ものづくり

raspi board
当サイトにはアフェリエイト広告が含まれております。

こんにちは、ぶっちょです。

以前はポータブルラジオの修理の記事を書きましたが、今回は、とある理由で、すぐにスマホからもみれる定点観測システムが必要になり、コストと時間をかけずに作ることになり、その忘備録をかねてのアップデートです。

以前のポータブルラジオの修理の記事は以下からどうぞ

コンセプト

定点観測カメラとは、決まった場所や位置で、一定の時間軸で写真を撮影するシステムです。監視カメラのようなリアルタイムの動画ではなく、あくまで決まった時間での、その瞬間の写真になります。

コストをかけれないので、入手性の観点からも、自宅に転がっていたRaspi3を使用します。

次に、外部からも見れるようにとのことでdropboxを使うようにしました。理由は、アップロード用のシェルスクリプト(プログラム)が準備されていること、無償でクラウドを使えることになります。

カメラですが、個人持ちのロジクールC270を使用します。こちらも入手性も非常に良いと思います。

Dropbox、ラズパイ、カメラ、fswebcam(写真を撮るプログラム)、corntab(定期的に実行するプログラム)で定点観測の記事は多数あるのですが、カメラがラズパイ専用を使用していたり、Dorpboxを使用せずに、USBメモリに保存していたり、ラズパイとUSBカメラさえ準備できればコピペで、さくっと定点監視システムができると考えていたのですが、一部システム構成が違うのでコピペはできません。

つなぎ合わせれば、簡単にできるだろうと思い、はじめましたが、意外と注意する点があるので、ほとんどコピペでできるように手順を書きました。ご参考にしていただけばと思います。

大まかな流れは以下

1、ラズパイにOSをインストール
2、USBカメラを接続してきちんと認識しているか確認
3、fswebcam(写真を撮るプログラム)をインストール
4、dropbox uploader(Dropboxにアップロードするプログラム) をダウンロード
5、写真を撮るプログラムとdropbox uploaderを合わせて動作させるシェルスクリプトを記述する。
6、crontab(定期的に実行するプログラム)でラズパイに登録する

それでは、見ていきましょう。

スポンサーリンク

ラズパイにOSをインストール

ラズパイにOSをインストールします。数年前までは、ラズパイのOSをSDに書き込む際には、別のフリーソフトを使用するのが一般的だったのですが、ラズパイ専用のイメージ書き込みツールできたのですね。
便利になったもんだ^^;

で本題に戻りますが

まずは、以下URLからラズパイのSDにOSを書き込むツール、raspberry pi imager をダウンロードします。

https://www.raspberrypi.com/software/

imager top

私は32GBのSDを使用しています。
そのSDをPCに差し込み、先ほどDLしたツールで、SD領域を一度削除します。
ツールの”OSを選ぶ”を選択して下から2番目の”削除”を選択します。
”ストレージを選ぶ”で差し込んだSD を選択します。
”書き込む”を選択して、SDの領域を削除します。

imager del


続いて、OSを書き込みます。
”OSを選ぶ”で、一番上の”RASPBERRY PI OS(32-BIT)”を選択して
”ストレージを選ぶ”はSDを選択して、”書き込む”をクリックします。10分程度で書き込めます。

imager os
imager writing

書き込みが終了したら、PCからSDを取り出し、取り出したSDをSDの上下を間違わないようにしてラズパイのSDポートに差し込みます。

ラズパイにはキーボード、マウス、モニタを接続していただき、ラズパイには電源ボタンがないので電源を投入してください。ラズパイが起動します。起動して設定画面にて設定を行います。

raspi setup top
raspi upgread

上記の、セットアップ途中の”Update Software”は、”Skip”してください。dropbox uploader.shでエラーが出て動作しませんでした。

raspi os finished

ちなみに、私がインストールしたOSのバージョンは、Raspbian 11でした。
バージョンの確認方法は、Raspiのターミナルで

$ lsb-release -a

で確認ができます。

次に、キーボードで日本語入力ができるように以下コマンドを使って日本語入力対応にして下さい
※インストール後、再起動が必要です。

$ sudo apt install ibus-mozc

スポンサーリンク

USBカメラの確認

手持ちのUSBカメラを接続していただき以下のコマンドをうって、USBカメラが認識しているか?確認してください。

$ lsusb

lsusb

$ ls /dev/video*
video 0があれば問題ないです

ls dev

スポンサーリンク

写真を撮るプログラムのインストール

次にコマンドでカメラのシャッターをきれる、fswebcamというプログラムをインストールします。
以下コマンドでインストールしてください

$ sudo apt-get install fswebcam

先ほど接続確認したUSBカメラを使い、実際にfswebcamで写真が撮れるか?確認になります。
以下コマンドで試してみてください

$ fswebcam -r 680×480 -S 100 tmp.jpg

無事に写真が撮れていれば、その写真は、以下のフォルダーにあります。

/home/ユーザー名/ の直下

fswebcam capthre
capture result

dropbox_uploaderのインストール

dropbox_uploader.shとは、Dropbox.comに写真(またはFile)をアップロードするためのプログラムです。

アクセスの際にGoogleか、Apple IDか、メールでログインを選択できますが、今回はGoogleのIDでログインをしますので、あらかじめ、Googleのアカウントを取得しておいてください。

以下コマンドで、dropbox_uploader.shをDLしてください。

$ curl “https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh

fswebcam dl

dropbox_uploader.shのパーミッション(権限)を変更します。

$ sudo chmod 777 dropbox_uploader.sh

chmod 777

初回に下記のコマンドをうつと、Dropbox.comにファイルをUploadするための設定が始まります。

$sudo ./dropbox_uploader.sh

スクリーンショットのように、App key の確認部分で止まりますので、ターミナは、閉じないでそのままにしておいてください。

dropbox setting

下記URLに、Raspiのブラウザーでアクセスしてください。

https://www.dropbox.com/developers/apps

dropbox google sign in

アクセスすると、ログインをきいてきますので、冒頭で準備したGoogleのアカウントでログインします。

ログインすると、右上の Creat appをクリックします。

dropbox creat app

creat app setting

1. Choose an API 

”Scoped access New” を選択

2.Choose the type of access you need

”Full Dropbox -Access to all files and folders in a user’s Dropbox.”  を選択

3.Name your app

 “test_camera_raspi” のような適当な名前を入力してください。
Creat app をクリックすると中段に,App keyとApp secureがありますので、先ほどペンディングしておいたターミナルの方にもどり、App keyとApp secureを入力してください。

app key app secure

terminal appkey app secure input

ここで、注意点あり。
App keyはコピーして、ターミナルに貼り付けしても大丈夫ですが、App Secureはコピーして貼り付けるとなぜか、改行されることが多く、間違った入力になるので、私はApp Secureは、手で入力しました。

間違った入力をしてた場合、一度ターミナルを閉じて、再度$sudo ./dropbox_uploader.sh を実行してください。
Secureまで入力すると、ターミナル側で認証用のURLがでてきますので、そのURLを右クリックしてコピーして、ブラウザーに貼り付け、承認してください。

web 認証 
Web 認証 許可
Web 認証 アクセスコード生成
Terminal setting 完了

認証をすると、アクセスコードが生成されるので、それをコピーしてターミナルの方へ貼り付けてください。
そして、 Looks ok ? [y/N]: でyをおしてください。

完了すると、ログインの際に使用したGmailにDropboxからのメールが届ききます。

次に、Raspiのブラザー側でApp keyとApp secureをコピーした画面にもどり、左端上にPermisstionsというタブがありますので、そのタブをクリックして、

files.metadata.write
files.content.write
files.content.read

にチエックを入れて、下の方にある Submitをしてください。

Dropbbox Permission 設定

最後に、きちんとアップロードできたか以下コマンドで試してみましょう。
先ほど、fswebcamでとった写真、tmp.jpgがありますので、それを使いましょう。
※下記コマンドの"test"は、皆さまのユーザ名に置き換えてください。

$sudo ./dropbox_uploader.sh upload /home/test/tmp.jpg tmp.jpg

シェルスクリプト作成

以下コマンドをターミナルで実行して、下記をそのままコピーして、シェルスクリプトを作成してください。

$ sudo nano

nanoとういうテキストエディターが起動します。

以下のシェルスクリプトをコピーして

ターミナルの上で右クリックしてペーストしてはりつけてください。

Crtl x -> y -> File名(ここでは、camerashot_upload.shとしておきます。)を記入すると、保存されます。※下記スクリプトで、testと記載の部分は、皆様のユーザ名に置き換えてください。

#! /bin/bash

bash /home/test/dropbox_uploader.sh -s -f
DATE=$(date +"%Y%M%D_%H%M.jpg")
sudo fswebcam /home/test/temp.jpg   -r 640×480 -S 100
sudo -u root  ./dropbox_uploader.sh upload /home/test/temp.jpg  /${DATE}
exit 0

セーブして、Permission(権限)変更をしておいてください。

$sudo chmod 777 camerashot_load.sh

では、スクリプトで写真を撮り、Dropbox.comにアップロードできるか?やってみましょう

$ sudo ./camerashot_upload.sh

Dropbox.comにアップロードできたでしょうか?この前のセッションまでできていて、もしアップロードできない場合、上記スクリプトがまちがっていないか?確認してください。

corntabへの登録

最後の設定になりますが、Raspiには、crontabという、定期的に何かを実行してくれるスケジューラがあります。

以下コマンドで、登録します。

$ sudo crontab -e

2を選択して

vimというエディターが立ち上がりますが、nanoと同じエディターだが、操作方法が異なるので、以下のように操作方法をまねてください。立ち上がったら

i ー> 一番最後の行に以下を記入

*/10 * * * * sudo sh /home/test/camerashot_upload.sh

※10の右側の*と*の間はスペースを空けること。
※上記コマンドの”test"は、皆さまのユーザ名で置き換えてください。

入力完了ー> Esc -> :w ->:q! で

crontab:installing new crontabとでれば、セーブできているはずです。それ以外であれば、セーブできていないので、再度 sudo crontab -eから行ってください。

ちなみに、このコマンドは、10分ごとにcamerashot_upload.sh(USBカメラで写真をとり、Dropboxc.comにアップロード)を実行してくださいの意味です。1分にしたい場合、10を1に変更してください。

少し長い説明でしたが、お疲れ様でした。定点の写真は、Dropboxにアップロードできたでしょうか?

まとめ

いかがでしたでしょうか?
コピペで行う大前提なので、fewebcamのパラメータの説明や各Linuxのコマンドの説明は省きましたが、RaspiのOSはまっさらな状態から、各プログラムをインストールしています。もしエラーがでて困っている場合、RaspiへのOSのインストールからされることを推奨します。

にほんブログ村 にほんブログ村へ PVアクセスランキング にほんブログ村

Posted by ぶっちょ