SORACOM Users

IoT 体験キット

IoT 体験キット 〜簡易監視カメラ〜をセットアップする

ステップ 4: 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 に画像を転送できます。 もし難しければ、次に進んで Web ブラウザ経由でも確認出来ますので、スキップして構いません。

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

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

SORACOM Napter とは

SORACOM Napter (以降、Napter) は、IoT SIM を使用したデバイスへ簡単にセキュアにリモートアクセスすることができます。お客様はサーバー環境を用意することなく、また IoT デバイス側にエージェント等をインストールすることなく、IoT SIM を利用している IoT デバイスにリモートからセキュアな Web アクセスや SSH, RDP 接続が可能になります。

SORACOM Napter 概要

注意 SORACOM Napter を使うには追加の費用がかかります SIM 1 枚当たり 300 円 (月額) ※月に 1 度でもリモートアクセスを行った場合、月額費用が発生します。当月内は月額費用内で何度でもご利用できます。

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

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

“デバイス側ポート” を 80 に設定し、"TLS"のチェックボタンを有効にして“OK” を選択します。 オンデマンドリモートアクセスの設定

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

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

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

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

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

画像サイズは場合にもよりますが、640x480 ドットでだいたい 150 キロバイト前後になります。 もし毎分撮った場合には、1日に約 210MB 程度の容量となります。 画像を撮る感覚が狭ければ狭いほど、タイムラプス動画にした際より滑らかになりますが、SD カードの容量には限りがありますので、もし長期に渡り撮影をするのであれば、

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

のように5分毎に撮影を行ったり、

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

のように毎時0分に撮影を行ったりする事で、間隔を間引いてあげるとよいでしょう。

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


Getting Started

SORACOM Air for セルラー

SORACOM Air for LoRaWAN

SORACOM Air for Sigfox

SORACOM Beam

SORACOM Canal/Direct/Door

SORACOM Endorse

SORACOM Funnel

SORACOM Funk

SORACOM Gate

SORACOM Harvest

SORACOM Inventory

SORACOM Junction

SORACOM Krypton

SORACOM Lagoon

SORACOM Mosaic

SORACOM Napter

SORACOM LTE-M Button

GPS マルチユニット SORACOM Edition

IoT 体験キット

Device

サービス機能詳細

Developer Tools

Design Patterns

pagetop