SORACOM の IoT 体験キット 〜距離測定センサー〜 のハンズオンをやってみたらとても手軽に楽しめた

こちらは、 “ゆるWeb勉強会@札幌 Advent Calendar 2020” の 20日目の記事です。

最終的には25日のネタに繋がるのですが、それに向けて購入した (個人的に大好きな) SORACOM さんの体験キットのハンズオンを実際にやってみた話を書いてみたいと思います。

IoT 体験キット 〜距離測定センサー〜

 soracom.jp

ハンズオン資料

 dev.soracom.io

ハンズオン開始

では、実際にやっていきましょう。

基本はハンズオン資料通りに進めるので、正確な情報はハンズオン資料でご確認ください。

ステップ 1: ユーザーコンソールを利用して SORACOM IoT SIM を管理する

 dev.soracom.io

私はアカウント作成済みだったので、ここは特に作業は発生しませんでした。

登録アカウントで購入すると、 SIM も登録済みで手元に届くのでオススメです。

登録済みなので、名前やグループを設定すればすぐに使える。

ステップ 2: Raspberry Pi の設定

 dev.soracom.io

OS(Raspbian) のインストール

ここはハンズオン資料と違うやり方が必要なので、ご注意ください。

また、OSの名称も Raspbian だったものが Raspberry Pi OS と呼ぶように変わっています。

(2020年12月17日現在)

現在は Raspberry 財団から公式のイメージ書き込みツールがリリースされているようです。(この情報は知らなくて、私も少し前までは Ethcer を使っていました。)

Raspberry Pi OS – Raspberry PiThe Raspberry Pi is a tiny and affordable computer that you can use to learn programming through fun, practical projects. Join the global Raspberry Pi community.
Raspberry Pi OS – Raspberry Pi www.raspberrypi.org
Raspberry Pi OS – Raspberry Pi

そのため、ここではこの公式イメージ書き込みツールを使っていきます。

まず、事前にSDカードをお手持ちのカードリーダーに差しておいてください。

ツールをダウンロードして起動します。

ツール起動。

Operating System で書き込むイメージを選択します。(ダウンロードまでやってくれます。)

今回は Raspberry Pi OS (32-bit) を選択します。

OS選択画面。。

続けて、 SD Card で書き込むSDカードを選択します。正しく認識されていると、下記のような画面になります。

SDカードの選択。

設定完了すると、 Write ボタンで書き込みができるようになります。 Write ボタンをクリックすると確認ダイアログが出るので、 YES をクリックしてしばらく待ちましょう。

書き込みの確認ダイアログが出る。

もしかしたら、権限確認のためにOS側のダイアログが出てくるかもしれません。その場合は、権限を許可するようにして進めてください。

SSH の有効化と WiFi の設定

ここからはハンズオンの資料の流れに戻ります。

SSH の有効化と WiFi の設定のためのファイルを事前に準備し、SDカードに保存しておきます。

ファイルのテンプレートはハンズオン資料内に記載されているので、そちらからダウンロードし、資料の指示に従って必要なファイル編集をしてください。

boot にファイル保存。

SDカードを安全に取り外したら、 Raspberry Pi へ差し込んで起動しましょう。

起動。。

うまく起動できると、 SSH が有効で WiFi も使える状態になっているので、PCから SSH で接続してみてください。

うまくログインできたら、このように表示されるはずです。

$ ssh pi@raspberrypi.local
The authenticity of host 'raspberrypi.local (fe80::XXXX:XXXX:XXXX:XXXX%en0)' can't be established.
ECDSA key fingerprint is SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'raspberrypi.local,fe80::XXXX:XXXX:XXXX:XXXX%en0' (ECDSA) to the list of known hosts.
pi@raspberrypi.local's password: 
Linux raspberrypi 5.4.51-v7+ #1333 SMP Mon Aug 10 16:45:19 BST 2020 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Aug 20 11:54:50 2020

SSH is enabled and the default password for the 'pi' user has not been changed.
This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.

pi@raspberrypi:~ $ 

ハンズオンの指示を参考に、パスワードを適宜変更しておいてください。

ホスト名も、必要あれば変更しておきましょう。(今回は変更せずに進めます。)

USB ドングルの準備

これもハンズオン資料の通りに進めましょう。

まずは、ドングルに SIM を差し込みます。

白いSIMをドングル内に差し込む。

Raspberry Pi にドングルを差し込み、下記のようにコマンドを実行してうまく動いているか確認しましょう。

pi@raspberrypi:~ $ curl https://soracom-files.s3.amazonaws.com/setup_air.sh | sudo bash

pi@raspberrypi:~ $ ifconfig ppp0
ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 10.180.34.183  netmask 255.255.255.255  destination 10.64.64.64
        ppp  txqueuelen 3  (Point-to-Point Protocol)
        RX packets 83  bytes 380 (380.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 85  bytes 1827 (1.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

pi@raspberrypi:~ $ 

このように inet のところにIPアドレスが正しく表示された OK です。

ステップ 3: 超音波センサーを使って距離を計測する

次は超音波センサーを使ってみましょう。私の購入したセットでは HC-SR04 だったので、そちらに従って配線します。

Raspberry Pi の GPIO ピンのどこに挿せば良いかが図でしか書いていないので、ピン番号をここで書いておきます。

ケーブル赤2 (5V)
ケーブル黒20 (GND)
ケーブル青11 (GPIO17)
ケーブル黄13 (GPIO27)

ピン番号の配置については、下記サイトの図などをご確認ください。

接続できたら、ハンズオン通りにテスト用プログラムをダウンロードして実行します。

pi@raspberrypi:~ $ curl -O http://soracom-files.s3.amazonaws.com/sensor_test.py
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1641  100  1641    0     0    739      0  0:00:02  0:00:02 --:--:--   739
pi@raspberrypi:~ $ python sensor_test.py
距離: 11.4 cm
距離: 10.9 cm
距離: 6.4 cm
距離: 4.8 cm
(snip)
^CTraceback (most recent call last):
  File "sensor_test.py", line 59, in 
    time.sleep(wait)
KeyboardInterrupt
pi@raspberrypi:~ $ 

無事に動いているようですね。

ステップ 4: SORACOM Harvest Data で可視化してみる

 dev.soracom.io

いよいよ、 SORACOM のサービスを使っていきます。今回は SORACOM Harvest Data という、データの可視化を手軽に実現してくれるサービスです。ちょっとした状態確認レベルのグラフやリストであれば、十分に活用できるサービスです。

では、コンソールから SORACOM Harvest Data を有効にしましょう。

保存ボタンをクリックしたら、設定完了です。簡単ですね。

こちらも、ハンズオン通りにテスト用プログラムをダウンロードして実行してみます。

pi@raspberrypi:~ $ sudo apt install -y python-pip libssl-dev

pi@raspberrypi:~ $ pip install requests
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: requests in /usr/lib/python2.7/dist-packages (2.21.0)
pi@raspberrypi:~ $ curl -O http://soracom-files.s3.amazonaws.com/send_to_harvest.py
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2443  100  2443    0     0    921      0  0:00:02  0:00:02 --:--:--   921
pi@raspberrypi:~ $ python send_to_harvest.py
- 距離を計測します
距離: 5.4 cm
- データを送信します
<Response [201]>

- 距離を計測します
距離: 12.6 cm
- データを送信します
<Response [201]>

^CTraceback (most recent call last):
  File "send_to_harvest.py", line 79, in 
    time.sleep(wait)
KeyboardInterrupt
pi@raspberrypi:~ $ 

成功しているようですね。

きちんと SORACOM Harvest Data 側で可視化できているか、確認していきましょう。下記のように、コンソールのメニューから SORACOM Harvest Data を選択します。

画面が表示されたら左上から SIM を選択し、検索する日付を選択します。

検索はアクセスした日時が両方に入っているので、開始日時(左側) の時間を少し前の時間に設定すれば良いです。

設定できたら検索ボタンをクリックしましょう。このように、画面にグラフやリストが表示されたら成功です。

送信したデータを基にしたグラフが表示される。

下の方にスクロールすると、リストから具体的な数値も確認できます。

実際に送信したデータもリストで確認できる。

まとめ

長くなったので、記事としてはここまでにしておきます。資料ではこの次に SORACOM Lagoon を体験するハンズオンがあるので、ぜひ引き続き試してみてください。

 dev.soracom.io

実際にやってみた感想として、センサーとデータの収集基盤を、キット類の準備から含めてとても手軽にできて本当にすごいと思いました。

データを送信するところって、一般的な基盤を使う時は送信側(ここだと Raspberry Pi )に送信先の認証情報を持っておいてそれを使った送信プログラムを書いて、、、という手間があるんですが、 SORACOM の SIM を使うとそういった手間なく「送信するだけ」のプログラムで実現できてしまうのは、本当に感動しました。

SORACOM Beam を使って他のサービスの WebHook へ転送したり、クラウド向けなら SORACOM Func を使ったり、といった応用もできそうなので、そういったものも試してみたいと思います。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください