近年「IoT」という言葉を聞く機会が増えてきました。「IoT」は「Internt of Things」の略で,日本語に直訳すると「モノのインターネット」。その名の通りモノがインターネットにつながっている仕組みのことです。

色々なモノが常時インターネットに接続されると,接続されたモノをネットワークを通じて操作したり,センサーの情報をリアルタイムで取得・分析することができます。代表的な例に,自動車の自動運転技術などがあるでしょうか。

ビジネスで何らかのデータを分析して経営判断の材料にすることは,日常的に行われていると思います。これからは,今までなかなか扱うことができなかったデータを取ってそれをクラウド上に集め,より高度かつ詳細な分析を行うことができるかもしれません。

筆者が注目しているIoTプラットフォームの一つに「SORACOM Air」があります。SORACOM社の概要についての説明は省きますが,一言で言うと,誰もが気軽にIoTを自分ごととして活用するための,安価なプラットフォームを提供している会社と言えます。

SORACOMの利用者は右肩上がりで,なんと今年になって回線契約数が100万を突破したそうです。

【新発表】SORACOMのIoT回線契約数、100万突破!!(2019/06/19)
https://blog.soracom.jp/blog/2019/06/19/one-million-announce/

今回は,そんなSORACOMのサービスとみんな大好き「Raspberry Pi」を使って,IoT遠隔環境監視システムを作ってみました。IoTのひとつの事例として,この記事をトリガーに応用できる分野が広がればと思います。

取り組みイメージ

今回取り組んだのは,「SORACOM Air」と「Raspberry Pi 3 B+」を使って,ある決まった場所の温湿度と画像をツイートするというものです。この決まった場所とは,Wi-Fiが飛んでいる都心ではなく,携帯電話回線しかないような僻地を想定しています。学校で見たことがある人もいるかもしれませんが,百葉箱を使った定点観測や環境監視に近い用途と言えるかもしれません。

Raspberry PiにはSORACOMのSIMカードを挿したUSBモデムを取り付けます。

https://dev.soracom.io/jp/start/device_setting/#raspi_usb

僻地で動かす場合,本当は電源をどうやって取るかが最大の課題なのですが,ソーラーパネルを使った太陽電池の自作にはもう少しお金が掛かりそうだったので断念しました。次回挑戦したいと思います。

完成イメージはこんな感じです。「ボードもセンサーもむき出しじゃねぇか!」というツッコミはあると思いますが,とりあえずスルーしておいて下さい。あくまでデモですので…😅
Raspberry PiでSORACOMのSIMが使えるようにし,Twitter APIを通じてRaspberry Piに接続された温湿度計の情報とカメラの画像をツイートします。
これにより,いつどこからでもTwitterクライアントからリアルタイムで情報を拾えるようにします。

このシステムのいいところ

  1. SORACOM AirのSIMはドコモのエリアをカバーしているので(plan-Dの場合),日本全国あらゆるところに展開できる
    参考リンク:https://www.nttdocomo.co.jp/area/
  2. ランニングコストが非常に安い
    Raspberry Piの電気代とSORACOMのSIM利用料を合わせても月額ワンコインでお釣りが来る
  3. かなり精度の高い情報を定期的に取得できる
    今回,カメラにはRaspberry Pi公式対応のカメラモジュールV2(センサーはソニー製)と,少数第二位まで計れる温湿度計を使いました。これによって非常に鮮明な画像と温湿度の取得に成功しました。

細かい中の仕組みについてはこの後順番に解説していきますが,SORACOMのSIMは非常に安価で利用できるので,そこまで大きくないデータを断続的に送るのにはもってこいです。今回は写真をアップロードするので決して小さいデータではありませんが,IoTデバイスが取得したデータをcsvファイルなどのテキストデータに加工し,クラウド側で処理させるなどの使い方ができます。詳しくはSORACOMの公式ブログ導入資料を見ていただくと良いかと思います。

使った道具

それでは実際に使ったものを見ていきましょう。

Raspberry Pi 3 B+

先日「Raspberry Pi 4」が発表されたばかりですが,このモデルは現在買える最もハイスペックなRaspberry Piです(2019年8月現在)。別に今回の用途ではハイスペックである必要はないのですが…国内で使うなら技適を通っているものの方が良いでしょう。

ABiT AK-020(USBモデム)

USBドングル AK-020

SORACOMのSIMを入れて使うUSBモデムです。こちらはSORACOMのユーザーコンソールからSIMとセットで購入しました。接続状態を示すインジケーターがわかりやすくて,とても使いやすい製品です。

USB温度・湿度計モジュール

5年前に書いた当ブログの記事でも使ったモジュールです。GithubにLinuxで値を取得するためのソースが上がっていますので,引き続き利用してみました。実際に温度と湿度が計れると結構テンション上がりますよ!

USB温度・湿度計モジュール(完成品)|ストロベリー・リナックス
https://strawberry-linux.com/catalog/items?code=52002

Raspberry Pi カメラモジュール V2

ソニーのセンサーが搭載された公式カメラモジュールの2代目です。結構性能が上がっています。そして結構高いのがネックです。。
※筆者はカメラのピント合わせの調整に失敗し,1台目の赤外線遮断フィルタを割ってしまいました。

こいつを使ってピントを合わせる際は,回しすぎないようにご注意ください!↓↓😫

Raspbianのインストールメディア

巷で売っているMicro SDカードであれば何でも良いかと思います。筆者はよく隣の「あきばお〜」さんでSandiskの32GBを買って使っています。

環境構築手順

1.Raspbianのインストール

これはここであえて詳しく書くまでもなく,Google先生に聞いていただければと思います。筆者はNOOBSを使ってインストールしました。OSのインストールが終わったら,アップデートをかけておくと良いでしょう。

NOOBS

2.SORACOMのSIMを有効化する

こちらはSORACOMの公式サイトでわかりやすく解説されています。

各種デバイスで SORACOM Air を使用する
https://dev.soracom.io/jp/start/device_setting/

curlでダウンロードしたシェルスクリプトを実行するだけでOKです。次回から起動時に自動的にSORACOM経由でネットワークに繋がるようになります。ネットワークに繋がると,下のようにUSBモデムが0.5秒ごとに点滅します。

3.カメラモジュールのセットアップ

次にカメラモジュールを使えるようにします。カメラモジュールはRaspberry Piにただ挿しただけでは機能しません。GUIもしくはCUIで,カメラが機能するように設定してあげます。

「Raspberry Pi の設定」からインターフェースの挙動を変更します

raspi-configコマンドでも設定できます

4.USB温度・湿度計モジュールのセットアップ

Linux上で使うためのソースをインストールします。下記いずれかのリポジトリを使うのが良いかと思います。

https://github.com/kimata/usbrh

https://github.com/osapon/usbrh-linux

筆者は前者のリポジトリを利用しました。コマンド一発で温湿度を取得できます。

$ usbrh
28.42 42.19

5.Twitter API接続情報の取得

Twitterに自動的にTweetするための情報を取得します。Twitterアカウントが無い場合は,新たに作成します。

Twitter API 登録 (アカウント申請方法) から承認されるまでの手順まとめ ※2019年8月時点の情報
https://qiita.com/kngsym2018/items/2524d21455aac111cdee

https://developer.twitter.com/en.html

6.PythonでTweetするためのプログラムを設置

以下のブログ記事を参考にさせていただきました。

PicameraによるRaspberry Pi 3カメラモジュールのカメラ設定

第67回「Twythonを使ってラズベリーパイからツイート投稿!(後編)」
https://deviceplus.jp/hobby/raspberrypi_entry_067/

7.crontabで定時に投稿させる

# crontab -e
*/30 * * * * /path/to/script

実際にTweetしてみる

だいぶ端折ったところもありますが,ここまでで最低限の下準備は整いました。それでは実際にTwitterのタイムラインを表示してみましょう!SORACOMの通信速度は,写真があるためか「s1.minimum」だとうまくいかなかったので,「s1.standard」に設定しています。画像解像度は1920×1080です。

おまけでタイムラプスムービーを作ってみました。

店頭に置いて展示してます

プライバシーの関係上弊社の看板と植え込みしか映っていないですが,実際に組み立てたものを弊社店頭で展示しています。もしSORACOMのSIMを使った遠隔監視に興味がありましたら,お気軽にお声がけください。

次回はSORACOM経由でRaspberry PiにSSHでログインしたり,取得した温湿度の値でグラフを描いたりしてみたいと思います!AWS Iot 1-Clickとの連携なども模索中です。どうぞお楽しみに!

参考文献:『公式ガイドブック SORACOMプラットフォーム』株式会社ソラコム著.日経BP社.2018年