SORACOM の IoT 体験キット 〜距離測定センサー〜 のハンズオンをやってみたらとても手軽に楽しめた
こちらは、 “ゆるWeb勉強会@札幌 Advent Calendar 2020” の 20日目の記事です。
最終的には25日のネタに繋がるのですが、それに向けて購入した (個人的に大好きな) SORACOM さんの体験キットのハンズオンを実際にやってみた話を書いてみたいと思います。
IoT 体験キット 〜距離測定センサー〜
ハンズオン資料
目次
ハンズオン開始
では、実際にやっていきましょう。
基本はハンズオン資料通りに進めるので、正確な情報はハンズオン資料でご確認ください。
ステップ 1: ユーザーコンソールを利用して SORACOM IoT SIM を管理する
私はアカウント作成済みだったので、ここは特に作業は発生しませんでした。
登録アカウントで購入すると、 SIM も登録済みで手元に届くのでオススメです。
ステップ 2: Raspberry Pi の設定
OS(Raspbian) のインストール
ここはハンズオン資料と違うやり方が必要なので、ご注意ください。
また、OSの名称も Raspbian
だったものが Raspberry Pi OS
と呼ぶように変わっています。
(2020年12月17日現在)
現在は Raspberry 財団から公式のイメージ書き込みツールがリリースされているようです。(この情報は知らなくて、私も少し前までは Ethcer を使っていました。)
そのため、ここではこの公式イメージ書き込みツールを使っていきます。
まず、事前にSDカードをお手持ちのカードリーダーに差しておいてください。
ツールをダウンロードして起動します。
Operating System
で書き込むイメージを選択します。(ダウンロードまでやってくれます。)
今回は Raspberry Pi OS (32-bit)
を選択します。
続けて、 SD Card
で書き込むSDカードを選択します。正しく認識されていると、下記のような画面になります。
設定完了すると、 Write
ボタンで書き込みができるようになります。 Write
ボタンをクリックすると確認ダイアログが出るので、 YES
をクリックしてしばらく待ちましょう。
もしかしたら、権限確認のためにOS側のダイアログが出てくるかもしれません。その場合は、権限を許可するようにして進めてください。
SSH の有効化と WiFi の設定
ここからはハンズオンの資料の流れに戻ります。
SSH の有効化と WiFi の設定のためのファイルを事前に準備し、SDカードに保存しておきます。
ファイルのテンプレートはハンズオン資料内に記載されているので、そちらからダウンロードし、資料の指示に従って必要なファイル編集をしてください。
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 を差し込みます。
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 で可視化してみる
いよいよ、 SORACOM のサービスを使っていきます。今回は SORACOM Harvest Data
という、データの可視化を手軽に実現してくれるサービスです。ちょっとした状態確認レベルのグラフやリストであれば、十分に活用できるサービスです。
では、コンソールから SORACOM Harvest Data
を有効にしましょう。
保存ボタンをクリックしたら、設定完了です。簡単ですね。
SORACOM Harvest Data
は非常に安価ですが有料となります。詳しくは下記ページを参照してください。
ハンズオンが終わったら、OFFにしておきましょう。
こちらも、ハンズオン通りにテスト用プログラムをダウンロードして実行してみます。
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
を体験するハンズオンがあるので、ぜひ引き続き試してみてください。
実際にやってみた感想として、センサーとデータの収集基盤を、キット類の準備から含めてとても手軽にできて本当にすごいと思いました。
データを送信するところって、一般的な基盤を使う時は送信側(ここだと Raspberry Pi )に送信先の認証情報を持っておいてそれを使った送信プログラムを書いて、、、という手間があるんですが、 SORACOM の SIM を使うとそういった手間なく「送信するだけ」のプログラムで実現できてしまうのは、本当に感動しました。
SORACOM Beam
を使って他のサービスの WebHook へ転送したり、クラウド向けなら SORACOM Func
を使ったり、といった応用もできそうなので、そういったものも試してみたいと思います。