Soracom

Users

スタートガイド

SORACOM Napter で Raspberry Pi を Web カメラとして使う

Raspberry Pi に USB のカメラ (いわゆる Web カメラ) を接続してみましょう。本キットでは Buffalo 社の BSWHD06M シリーズを使用しています。

セットアップ

接続

USB カメラは、Raspberry Pi の USB スロットに接続してください。

カメラの設定 カメラの設定

パッケージのインストール

fswebcam というパッケージを使用します。apt コマンドでインストールしてください。

実行コマンド

sudo apt install -y fswebcam
トラブルシュート
E: Unable to fetch some archives, maybe run apt update or try with --fix-missing? と表示されたら、sudo apt update を行ってから、再度 apt install を実行してください。

コマンドラインによるテスト撮影

実際に撮影してみましょう。-r オプションで解像度を指定できます。

実行コマンド

fswebcam -r 640x480 test.jpg

実行例

pi@raspberrypi:~ $ fswebcam -r 640x480 test.jpg
--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
--- Capturing frame...
Captured frame in 0.00 seconds.
--- Processing captured image...
Writing JPEG image to 'test.jpg'.

scp コマンドなどを使って、PC にファイルを転送して開いてみましょう。

Mac の場合

この操作はお手元の Mac で行ってください。Raspberry Pi にログインする必要はありません。

新しい Terminal ウィンドウを開き以下のコマンドを実行します。

実行コマンド

scp pi@raspberrypi.local:test.jpg .

実行例

~$ scp pi@raspberrypi.local:test.jpg .
pi@raspberrypi.local's password:
test.jpg                                      100%  121KB 121.0KB/s   00:00

~$ open test.jpg

観察画像 観察画像

Windows の場合

WinSCP など、SCP できるアプリケーションをインストールすると、手元の PC に画像を転送できます。

SORACOM Napter で Raspberry Pi を Web カメラとして使う

この操作は Raspberry Pi にログインして行います。Raspberry Pi に SSH 接続したウィンドウでコマンドを実行してください。

SORACOM Napter とは

SORACOM Napter (以下、Napter) は、IoT SIM を使用したデバイスへ簡単にセキュアにリモートアクセス (Web アクセス、SSH 接続、RDP 接続) できます。サーバー環境を用意したり、IoT デバイス側にエージェントなどをインストールしたりする必要はありません。

SORACOM Napter 概要 SORACOM Napter 概要

SORACOM Napter を使うには追加の費用がかかります。詳しくは、SORACOM Napter のご利用料金 を参照してください。

パッケージのインストール

Raspberry Pi を Web サーバにして、アクセスしたときにリアルタイムの画像を確認できるようにしてみましょう。

まず apache2 パッケージをインストールします。

実行コマンド

sudo apt install -y apache2

インストールができたら、CGI が実行できるようにします。

実行コマンド

sudo ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/
sudo gpasswd -a www-data video
sudo service apache2 restart

実行例

pi@raspberrypi:~ $ sudo ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/

pi@raspberrypi:~ $ sudo gpasswd -a www-data video
Adding user www-data to group video

pi@raspberrypi:~ $ sudo service apache2 restart

最後に CGI プログラムをダウンロードして設置します。

実行コマンド

sudo wget -O /usr/lib/cgi-bin/camera https://soracom-files.s3.amazonaws.com/camera
sudo chmod +x /usr/lib/cgi-bin/camera

実行例

pi@raspberrypi:~ $ sudo wget -O /usr/lib/cgi-bin/camera https://soracom-files.s3.amazonaws.com/camera
--2019-10-01 16:33:36--  https://soracom-files.s3.amazonaws.com/camera
Resolving soracom-files.s3.amazonaws.com (soracom-files.s3.amazonaws.com)... 52.219.4.73
Connecting to soracom-files.s3.amazonaws.com (soracom-files.s3.amazonaws.com)|52.219.4.73|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 374 [text/plain]
Saving to: ‘/usr/lib/cgi-bin/camera’

/usr/lib/cgi-bin/camera                   100%[=====================================================================================>]     374  --.-KB/s    in 0.001s

2019-10-01 16:33:36 (401 KB/s) - ‘/usr/lib/cgi-bin/camera’ saved [374/374]

pi@raspberrypi:~ $ sudo chmod +x /usr/lib/cgi-bin/camera

SORACOM Napter を有効にする

この操作は必ず USB ドングルを挿した状態で行ってください

SORACOM Napter を使うには、IoT SIM の設定で、リモートオンデマンドアクセス を有効にする必要があります。 SIM 管理画面で、アクセスする IoT SIM を選択し [操作] > [オンデマンドリモートアクセス] を選択してください。

オンデマンドリモートアクセスの選択 オンデマンドリモートアクセスの選択

"デバイス側ポート" を 80 に設定し、"TLS"のチェックボタンを有効にして"OK" を選択します。

オンデマンドリモートアクセスの設定 オンデマンドリモートアクセスの設定

以下のような画面が出ていれば有効化に成功しています。"HTTPS: " に表示されている文字列 https://[Napter のホスト名]:[ポート番号] をコピーします。

※SORACOM Napter ではデバイスの IP アドレス・ポート番号を SORACOM 側で変換して異なる IP アドレス・ポート番号でアクセスできるようにしています。下図の場合はユーザーからの 39105 番ポートへのアクセスをデバイスの 80 番ポートに変換します。

※"TLS" を有効にすることでアクセス元の端末 (PC など) から SORACOM プラットフォームまでを TLS で接続できます。SORACOM プラットフォームからデバイスは閉域網接続なため、セキュアなリモートアクセスを実現できます。

デバイスへアクセスするための URL デバイスへアクセスするための URL

お手元の PC のブラウザからパス /cgi-bin/camera を加えて https://[Napter のホスト名]:[ポート番号]/cgi-bin/camera にアクセスしてみましょう。リアルタイムな静止画が確認できます。

リロードをするたびに、新しく画像を撮影しますので、撮影する対象の位置決めをする際などに使えると思います。 一度位置を固定したら、カメラの位置や対象物の下にビニールテープなどで位置がわかるように印をしておくとよいでしょう。 なお、SORACOM Napter のアクセス可能時間はデフォルトで 30 分です。アクセス可能時間を過ぎた場合は再度有効にしてアクセスしてください。

定点観測を行う

毎分カメラで撮影した画像を所定のディレクトリに保存してみましょう。

準備

まず保存するディレクトリを作成して、ディレクトリの所有者を変更します。

実行コマンド

sudo mkdir /var/www/html/images
sudo chown -R pi:pi /var/www/html/

スクリプトのダウンロードと実行

次にスクリプトをダウンロードしてテスト実行してみましょう。

実行コマンド

sudo wget http://soracom-files.s3.amazonaws.com/take_picture.sh
sudo chmod +x take_picture.sh
./take_picture.sh

実行例

pi@raspberrypi:~ $ sudo wget http://soracom-files.s3.amazonaws.com/take_picture.sh
--2016-07-19 02:19:01--  http://soracom-files.s3.amazonaws.com/take_picture.sh
Resolving soracom-files.s3.amazonaws.com (soracom-files.s3.amazonaws.com)... 54.231.228.9
Connecting to soracom-files.s3.amazonaws.com (soracom-files.s3.amazonaws.com)|54.231.228.9|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 444 [text/plain]
Saving to: ‘take_picture.sh’

take_picture.sh           100%[====================================>]     444  --.-KB/s   in 0.001s

2016-07-19 02:19:01 (451 KB/s) - ‘take_picture.sh’ saved [444/444]

pi@raspberrypi:~ $ sudo chmod +x take_picture.sh

pi@raspberrypi:~ $ ./take_picture.sh
checking current temperature ... 29.75 [c]
taking picture ...
--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
--- Capturing frame...
Captured frame in 0.00 seconds.
--- Processing captured image...
Setting title "Temperature: 29.75 (c)".
Writing JPEG image to '201607190219.jpg'.

現在の温度を取得して、温度をキャプションとした画像を保存することに成功しました。 同じく SORACOM Napter でアクセスしてみましょう。/images/ パスを加えて

https://[Napter のホスト名]:[ポート番号]/images/

にアクセスするとファイルができていると思います。

あとはこれを定期的に実行するように設定しましょう。

cron 設定

定点観測をするために、cron を設定して定期的に画像を撮影しましょう。

以下のコマンドを実行し、crontab の編集画面を開きます。

実行例

pi@raspberrypi:~ $ crontab -e
no crontab for pi - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.tiny
  3. /bin/ed
Choose 1-3 [1]]: 1  (1を選択します)
crontab: installing new crontab

編集画面が開いたら、以下のように追記すると、毎分撮影されます。

* * * * * ~/take_picture.sh &> /dev/null

画像サイズは場合にもよりますが、640 x 480 ピクセルでだいたい 150 KiB 前後です。毎分撮影した場合のデータ容量は、1 日に約 210 MiB 程度です。

画像を撮影する間隔が狭ければ狭いほど、タイムラプス動画にした際に滑らかな動画になります。一方で、SD カードの容量には限りがありますので、もし長期に渡り撮影をするのであれば、以下の例 1 のように 5 分ごとに撮影を行ったり、例 2 のように毎時 0 分に撮影を行ったりして、間隔を調整するとよいでしょう。

例 1:

*/5 * * * * ~/take_picture.sh &> /dev/null

例 2:

0 * * * * ~/take_picture.sh &> /dev/null

設定を書き込んだら、[Ctrl+X] を押して保存し、[y] => [Enter] を押して crontab 編集画面を閉じてください。