Wio LTE ハンズオン

Kohei MATSUSHITA edited this page Aug 14, 2018 · 44 revisions

LTEモデム搭載プロトタイプ向けデバイス 「Wio LTE」 を用いたハンズオンテキストです

概要

※本ハンズオンは90分程度を見込みます (開発環境の準備は+60分です)

手順

Appendix(付録)

準備するもの

  • パソコン / 1台
    • ※タブレット等の下記に当てはまらないPCでの受講は自己責任としております
    • Wi-Fi 接続可能
    • USB Type-A ポートが最低1つ以上あり、利用可能なこと
      • 電力供給が1A以上であること (USB 3.0対応していれば概ね安心です)
      • USB Type-C のみの機種につきましては、Type-A への変換アダプタのご用意をお願いいたします
    • OS: macOS(10.11 El Capitan 以上) もしくは Windows(8.1 以上)
    • ブラウザ: Google Chrome
    • ※ソフトウェアをインストールするため、PCに対する管理者権限を持っている事 と ブラウザでのアクセス制限(HTTPプロキシ等)がかかっていない事
  • 有効なSORACOMアカウント / 1つ
    • 持っていない場合: 有効なクレジットカード(1枚) と この場で確認可能なメールアドレス(1つ) を利用し SORACOM アカウントの作成 の手順に沿って作成します
  • SORACOMアカウントに登録済みの SORACOM Air SIM (nanoサイズ) / 1つ
  • Wio LTE (本体、 アンテナ2本、 電源兼シリアルコンソール用microUSBケーブル) / 1式
  • Grove デジタル温湿度センサー (DHT11) / 1つ
  • Grove コネクタケーブル / 1つ

受講における注意点

  • 本ハンズオンで利用するサービスには有料のものを含んでおります
  • ハンズオンに伴い発生した費用(ハンズオン中、ハンズオン後問わず)は原則として受講者にご負担いただいております。係る費用について確認・ご理解いただいたうえでの受講をお願いしております
  • 本ドキュメントで発生した不具合等につきましては弊社は一切責任を負いません

開発環境の準備

Wio LTE を使うためには、開発環境の準備を行います
OS 毎に準備がありますので、下記を参照の上開発環境を準備してください

ハンズオン

《知識》Wio LTE ハードウェア解説

Wio LTE は Seeed Studio が開発・販売しているマイコンモジュールです
Grove コネクタと STM32F4 マイコン、LTE Cat.1 モジュールが搭載されており、 Arduino IDE で素早くプロトタイピングができます

Wio LTE

USB 電源・アンテナ・ Grove コネクタピンの番号

Wio LTE 本体

Grove IoT スターターキット for SORACOM

「Grove IoT スターターキット for SORACOM」は、 Wio LTE 本体に加え、7つのセンサーと SORACOM Air SIM (日本向け) と SORACOM クーポンが一つにパッケージされたキットです

本ハンズオンでは デジタル温湿度センサー を利用します

Grove IoT スターターキット for SORACOM

《知識》Wio LTE の電源 ON/OFF の方法

Wio LTE には電源スイッチがありませんので、下記作業で ON / OFF してください

電源 ON

microUSB ケーブルを Wio LTE の microUSB ポートに接続すると自動的にONになります

Wio LTE と PC を microUSBケーブルで取り付けたところ

電源 OFF

microUSB ケーブルを抜きます。いきなり抜いて OK です

※シャットダウン処理は存在しません

《知識》Wio LTE の "通常モード" と "DFUモード"

Wio LTE は2つのモードを持っています この操作は Wio LTE の開発で何度も行うことになりますので、必ず覚えてください

  • 書き込まれたプログラムを実行する「通常モード」
  • プログラムを書き込むことができる「DFUモード」

フロー

これらのモードの切り替えは Wio LTE 上の RSTボタンBOOTボタン の組み合わせで行います
各ボタンの位置は下記のとおりです( Wio LTE の表裏にボタンがあるため、横からみた図で確認ください)

Wio LTE を横からみた図

Wio LTE の動作モードを変更する・確認する

Wio LTE の動作モードの確認の仕方は、環境構築の準備でご確認ください

【作業】ステップ 1: LED点灯

Wio LTE ライブラリに付属しているスケッチ例から、内蔵のLEDを点灯してみましょう

※Wio LTE 開発ツールの使い方を学びます

ステップ1 ovewview

最初に. Wio LTE の電源を OFF にする

Wio LTE の microUSB ケーブルを抜き、電源を OFF にしてください

※いきなり抜いてOKです。また、すでに OFF になっている場合は次に進んでください

1. スケッチを作成する

1-1. Arduino IDE を起動する

  • Windowsの場合: スタートメニュー等から Arduino を起動します
  • macOSの場合: アプリケーションフォルダ等の中から Arduino を起動します

1-2. メニューの [ツール] > [ボード: "Arduino/Genuino UNO] で表示される一覧から Wio Tracker LTE を選択

1-3. メニューの [ファイル] > [スケッチ例] > [Wio LTE for Arduino] > [basic] > [LedSetRGB]

1-4. Wio LTE を PC を接続して DFUモード にする

1-5. 新しく開いたウィンドウの マイコンボードに書き込むアイコン(マイコンボードに書き込む) をクリック

1-6. Arduino IDE のウィンドウ下部に、下記のように表示されたら書き込み完了です

DFU end
can't detach

   もしくは

Resetting USB to switch back to runtime mode
DFU end

1-7. Wio LTE を 通常モードにする (RSTボタンを押せば通常モードになります)

2. 確認

下図のように Wio LTE 内蔵のLEDがカラフルに光ります

Wio LTE / LedSetRGB

ここまでの手順の動画です (画面は Windows ですが、 macOS でも同様の手順です)

Wio LTE / LedSetRGB

3. やってみよう (LEDの変更周期)

スケッチ※を編集して LED の色が変わる周期を変えてみましょう
※Arduino IDE では、プログラムのことを「スケッチ」と呼びます

スケッチ3行目の INTERVAL が周期を指定しています。ミリ秒(ms)単位になっており、 50 から変更してみましょう

変更前

#define INTERVAL  (50)

変更後

#define INTERVAL  (10)

スケッチを変更したら、先ほどの 1-4 ~ 1-7 の手順を行って、LEDの発行色の周期が変わっていることを確認してみてください

4. Wio LTE の動作を止める

止める方法は Wio LTE の電源を OFF (= microUSBケーブルを抜く) してください

うまく動かなかったら(トラブルシュート)

[ファイル] > [スケッチ例] の中に "Wio LTE for Arduino" が表示されない

  • 原因: "ボード" が "Wio Tracker LTE" になっていません
  • 対策: メニューの [ツール] > [ボード: XXXX] から Wio Tracker LTE を選択してください

「マイコンボードに書き込む」を実行した結果、ウィンドウに下記のように表示された

exit status 1
ボードArduino/Genuino Unoに対するコンパイル時にエラーが発生しました。
  • 原因: "ボード" が "Wio Tracker LTE" になっていません
  • 対策: メニューの [ツール] > [ボード: XXXX] から Wio Tracker LTE を選択してください

「マイコンボードに書き込む」を実行した結果、ウィンドウに下記のように表示された

No DFU capable USB device available
DFU end
  • 原因: Wio LTE が「通常モード」で書き込もうとした
  • 対策: Wio LTE を「DFU モード」にしてから、再度「マイコンボードに書き込む」を実行してください

「マイコンボードに書き込む」を実行した結果、ウィンドウに下記のように表示された

java.io.IOException: jssc.SerialPortException: ....
    ... 色々表示されて ...
    ... 4 more もしくは ... 6 more
  • 原因: おもに Windows でシリアルモニタ―を表示した後に発生します。シリアルポートの解放に失敗しています
  • 対策: Arduino IDE 終了&再度立ち上げてください。また Arduino IDE のシリアルモニターは使わずに TeraTerm を使うことで回避しやすくなります

「マイコンボードに書き込む」を実行した結果、ウィンドウに下記のように表示された

dyld: Library not loaded: /opt/local/lib/libusb-1.0.0.dylib
  Referenced from: /Users/user1/Library/Arduino15/packages/Seeeduino/tools/stm32_dfu_upload_tool/1.0.0/macosx/dfu-util/dfu-util
  Reason: image not found
/Users/user1/Library/Arduino15/packages/Seeeduino/tools/stm32_dfu_upload_tool/1.0.0/macosx/dfu_upload: line 5: 15851 Abort trap: 6           $(dirname $0)/dfu-util/dfu-util -d $2 -a $1 -D $3 -s $4 -R
DFU end

【作業】ステップ 2: デバイス稼働時間を SORACOM Harvest で可視化

Wio LTE の稼働時間を SORACOM Harvest で可視化してみましょう

※Wio LTE 単体の構成でモバイル通信の活用を学びます

ステップ2 ovewview

最初に. Wio LTE の電源を OFF にする

Wio LTE の microUSB ケーブルを抜き、電源を OFF にしてください

※いきなり抜いてOKです。また、すでに OFF になっている場合は次に進んでください

1. Wio LTE にアンテナを取り付ける

※Wio LTE から microUSB ケーブルを抜いた状態にしてください

Wio LTE に 添付されているアンテナ2本を取り付けます (※アンテナは必ず2本取り付けてください)

Wio LTE にアンテナを取り付けたところ

2. Wio LTE に SIM を取り付ける

Wio LTE に SIM (nanoサイズ) を取り付けます

SIM の取り出し

SIM の取り出し方も一緒に紹介いたします

抜く際フックを引っ張りすぎると金具が取れてしまうため、図示されている程度まで引っ張り出したらSIMを取り出し、金具を元に戻してください

3. SORACOM Harvest の設定をする

※ SORACOM のアカウントをお持ちでない方: SORACOM アカウントの作成 の手順に沿って作成してください
(有効なクレジットカード(1枚) と この場で確認可能なメールアドレス(1つ)が必要です)

※ SORACOM アカウントを持っているが SIM を登録していない場合: Air SIM の登録 の手順に沿って登録してください

3-1. SORACOM Webコンソール で 左上[Menu] > [SIM グループ]

soracom-menu soracom-menu-sim-group

3-2. [追加] で、SIMグループを作成します (グループ名 harvest もしくは任意でかまいません)

soracom-menu-sim-group-create

soracom-menu-sim-group-create-dialog

3-3. 先ほど作成した SIMグループ をクリックし、 SORACOM Harvest の設定を ON にして保存をクリック

soracom-menu-sim-group-list

soracom-harvest-on

3-4. SORACOM Webコンソール で 左上[Menu] > [SIM 管理]

soracom-menu soracom-sim-mgr

3-5. Wio LTE に取り付けている SIM を選択 > [操作] > [所属グループ変更]

soracom-select-sim

3-6. 先ほど作成した SIMグループ に所属させる

sim-group-select

以上で SORACOM Web コンソール上での作業は終了です

下記のように Wio LTE に取り付けている SIM の "グループ" が、先ほど作った SIM グループ名になっていれば成功です

sim-list

4. スケッチを作成する

4-1. Arduino IDE を起動する

4-2. メニューの [ツール] で [ボード: "Wio Tracker LTE"] と表示されていることを確認する

なっていなければ一覧から "Wio Tracker LTE" を選んでください

4-3. Arduino IDE の [ファイル] > [スケッチ例] > [Wio LTE for Arduino] > [soracom] > [soracom-harvest]

新しいウィンドウが開きます

4-4. Wio LTE と PC を接続して DFUモード にする

4-5. 新しく開いたウィンドウの マイコンボードに書き込むアイコン(マイコンボードに書き込む) をクリック

4-6. 書き込みが完了したら、Wio LTE を 通常モードにする (RSTボタンを押せば通常モードになります)

通常モードで起動次第 SORACOM Harvest へデータを送信し始めます (電源投入から送信開始までは20~25秒程度かかります)

5. 確認

5-1. SORACOM Webコンソール で 左上[Menu] > [SIM 管理]

soracom-menu soracom-sim-mgr

5-2. Wio LTE に取り付けている SIM を SORACOM Webコンソール上で選択し [操作] > [データを確認]

harvest-view

下図のように SORACOM Harvest 上で稼働時間が表示されるようになります
※自動更新を ON にすると、画面の再描画が自動的に行われます
※グラフ種類を折れ線グラフや棒グラフに変更することができます

SORACOM Harvest で表示している様子

6. やってみよう(送信間隔の変更)

スケッチを編集して稼働時間の送信間隔を変えてみましょう

スケッチ4行目の INTERVAL が周期を指定しています。ミリ秒(ms)単位になっており、 60000 (= 60秒) から変更し、マイコンボードに書き込んでみましょう

#define INTERVAL  (60000)

#define INTERVAL  (5000)

7. Wio LTE の動作を止める

止める方法は Wio LTE の電源を OFF (= microUSBケーブルを抜く) してください

うまく動かなかったら(トラブルシュート)

データが表示されない場合は、下記を確認してください

  • Wio LTE へアンテナが正しく取り付けられているか?
  • SIM が正しく挿入されているか?
  • SIM が SORACOM に登録されているか?
  • SORACOM Harvest が ON なグループに SIM が所属しているか?

以上を確認しても、まだ尚データ送信されない場合は RST ボタンを押して Wio LTE の再起動を行ってみてください

また、Arduino IDE のシリアルモニターで接続やデータ送信状況が確認できます

※注意: Windows の Arduino IDE のシリアルモニタは、 Wio LTE 開発においては動作が不安定になることがあるため、Windows の方は TeraTerm を使用してください

【作業】ステップ 3: 温湿度センサーのデータを SORACOM Harvest で可視化

デジタル温湿度センサーのデータを SORACOM Harvest で可視化してみましょう

※センサーを組み合わせた開発を学びます

ステップ3 ovewview

最初に. Wio LTE の電源を OFF にする

Wio LTE の microUSB ケーブルを抜き、電源を OFF にしてください

※いきなり抜いてOKです。また、すでに OFF になっている場合は次に進んでください

1. Wio LTE にデジタル温湿度センサーを取り付ける

※Wio LTE から microUSB ケーブルを抜いた状態にしてください

Grove デジタル温湿度センサーを Wio LTE に取り付けます

Wio LTE の D38 に取り付けてください

Wio LTE にデジタル温湿度センサーを取り付けたところ

2. スケッチを作成する

2-1. Arduino IDE を起動する

2-2. メニューの [ツール] で [ボード: "Wio Tracker LTE"] と表示されていることを確認する

なっていなければ一覧から "Wio Tracker LTE" を選んでください

2-3. Arduino IDE の [ファイル] > [スケッチ例] > [Wio LTE for Arduino] > [soracom] > [soracom-harvest]

※上記の通り新規に始めても、ステップ2の続きから始めても構いません

2-4. スケッチの8行目の行頭 // を取り除きます (アンコメントする)

変更前

// #define SENSOR_PIN    (WIOLTE_D38)

変更後

#define SENSOR_PIN    (WIOLTE_D38)

2-5. Wio LTE と PC を接続して DFUモード にする

2-6. 新しく開いたウィンドウの マイコンボードに書き込むアイコン(マイコンボードに書き込む) をクリック

2-7. 書き込みが完了したら、Wio LTE を 通常モードにする (RSTボタンを押せば通常モードになります)

通常モードで起動次第 SORACOM Harvest へデータを送信し始めます (電源投入から送信開始までは20~25秒程度かかります)

※標準では送信間隔が60秒です。早めたい場合は ステップ2 のやってみようを参考に INTERVAL5000 などに変えてください

3. 確認

SORACOM Harvest 上で温度(temp)・湿度(humi)が表示されるようになります
※SORACOM Harvest の操作方法は ステップ2 で確認してください

harvest-all-plot

4. Wio LTE の動作を止める

止める方法は Wio LTE の電源を OFF (= microUSBケーブルを抜く) してください

うまく動かなかったら(トラブルシュート)

Wio LTE を通常モードで動かして1分経ってもデータが表示されない

  • 原因: 電波状況などによりセルラー通信に失敗している
  • 対策: RST ボタンを押して Wio LTE を再度起動しなおしてください

SORACOM Harvest でデータ表示がされない

  • 原因: ステップ2 で行った稼働時間のデータが原因で、データのY軸が大きすぎて表示されない場合があります
  • 対策: SORACOM Harvest 上で下記操作を行ってください
    • 凡例をクリックすることで当該のデータを非表示できる機能
    • 他の形式で表示する機能
    • 最大値/最小値の設定ができる機能

harvest-exclude-plot

harvest-alt-plot

【作業】ステップ 4: 温湿度センサーのデータを SORACOM Funnel 利用して AWS IoT へ転送

本格的なデータ収集 IoT システムの構築として、クラウド側のデータ処理に AWS IoT を活用する構成を学びます

※本ハンズオンでは AWS IoT までとしていますが、下図は実際のシステム構成例としてIoT向けアーキテクチャパターンを盛り込んでいます

ステップ4 overview

最初に. Wio LTE の電源を OFF にする

Wio LTE の microUSB ケーブルを抜き、電源を OFF にしてください

※いきなり抜いてOKです。また、すでに OFF になっている場合は次に進んでください

1. SORACOM へ認証情報を保管する

1-1. SORACOM Webコンソール で 左上[Menu] > [セキュリティ]

soracom-menu soracom-menu-security

1-2. [認証情報ストア] > [認証情報を登録] で 認証情報入力画面を開きます

soracom-cred-store

1-3. 認証情報を登録する画面では下記の通り入力し、保存してください

  • 認証情報ID: awsiot-dataaccess
  • 概要: AWS IoT DataAccess
  • 種別: AWS 認証情報 (これを選択すると、下記IDを入力するテキストボックスが増えます)
  • AWS Access Key ID: ハンズオン運営から入手 (aws-accesskey-id)
  • AWS Secret Access Key ID: ハンズオン運営から入手 (aws-secret-accesskey-id)

soracom-cred-save

2. SORACOM Funnel 設定

2-1. SORACOM Webコンソール で 左上[Menu] > [SIM グループ]

[追加] で、SIMグループを作成します (グループ名 funnel もしくは任意でかまいません)

2-2. 先ほど作成した SIMグループ をクリックし、 SORACOM Funnel の設定を開きます

2-3. SORACOM Funnel の設定では、下記の通り入力し、保存してください

  • 転送先サービス: AWS IoT
  • 転送先URL: ハンズオン運営から入手 (endpoint-url)
  • 認証情報: awsiot-dataaccess (AWS IoT DataAccess) (先ほど作成した認証情報を選ぶ)
  • 送信データ形式: JSON

soracom-funnel

2-4. 左上[Menu] > [SIM 管理]

  • Wio LTE に取り付けている SIM を選択 > [操作] > [所属グループ変更]
  • 先ほど作成した SIMグループ に所属させる

3. スケッチを作成する

3-1. Arduino IDE を起動する

3-2. メニューの [ツール] で [ボード: "Wio Tracker LTE"] と表示されていることを確認する

なっていなければ一覧から "Wio Tracker LTE" を選んでください

3-3. Arduino IDE の [ファイル] > [スケッチ例] > [Wio LTE for Arduino] > [soracom] > [soracom-harvest]

※上記の通り新規に始めても、ステップ3 の続きから始めても構いません

3-4. スケッチの7行目の行頭 // を取り除きます (アンコメント)

7行目が下記の通りになっていることを確認してください。なっていない場合は先頭の // を取り除いて、下記と同じようにしてください

#define SENSOR_PIN    (WIOLTE_D38)

3-5. スケッチの69行目の harvest.soracom.io8514 の2か所を funnel.soracom.io23080 へ変更します

変更前

  connectId = Wio.SocketOpen("harvest.soracom.io", 8514, WIOLTE_UDP);

変更後

  connectId = Wio.SocketOpen("funnel.soracom.io", 23080, WIOLTE_UDP);

3-6. Wio LTE と PC を接続して DFUモード にする

3-7. 新しく開いたウィンドウの マイコンボードに書き込むアイコン(マイコンボードに書き込む) をクリック

3-8. 書き込みが完了したら、Wio LTE を 通常モードにする (RSTボタンを押せば通常モードになります)

通常モードで起動次第 SORACOM Funnel へデータを送信し始めます (電源投入から送信開始までは15~20秒程度かかります)

※標準では送信間隔が60秒です。早めたい場合は ステップ2 のやってみようを参考に INTERVAL5000 などに変えてください

4. 確認

AWS IoT 上でのデータ着信は、運営側で行います
Wio LTE に挿した SIM の IMSI を運営に伝えてください。 IMSI は SORACOM Web コンソールで確認することができます

正しく送信されていれば、運営側で表示している AWS IoT のデータモニターツールに表示されます

awsiot-monitor

4. Wio LTE の動作を止める

止める方法は Wio LTE の電源を OFF (= microUSBケーブルを抜く) してください

うまく動かなかったら(トラブルシュート)

利用可能なツールは「シリアルモニター」「SORACOM Webコンソール上のSIMのログ」です
※運営側は CloudWatch や AWS IoT ダッシュボードも利用できます

(シリアルモニターを見ると) 1回しかデータを送っていない

  • 原因: SORACOM Funnel へのホスト名やポート番号が違う
    • 対策: スケッチ69行目の SORACOM Funnel へのホスト名やポート番号を確認し、再度マイコンへ書き込んでください

データは送られているが AWS IoT 上で確認できない

  • 原因: SORACOM Funnel が ON なグループに SIM が所属していない
    • 対策: SIM を SIM グループへ所属させるようにしてください

【作業】ステップ 5: SORACOM Beam を用いた MQTT Pub/Sub 双方向通信

本格的な IoT システムの構築として、データ収集だけでなく、クラウド側からのデータをデバイス側で受信し処理する仕組みを学びます。

今回はオープンソースの MQTT ブローカー(サーバ) である Eclipse Mosquitto を利用します。
注意: MQTT 試験用の公開サーバを利用します。誰でも読み書きが可能であるため、実システムでの利用はおやめください

ステップ5 全体構成 / step5 MQTT PubSub with Mosquitto / overview

最初に. Wio LTE の電源を OFF にする

Wio LTE の microUSB ケーブルを抜き、電源を OFF にしてください

※いきなり抜いてOKです。また、すでに OFF になっている場合は次に進んでください

1. SORACOM へ認証情報を保管する

1-1. SORACOM Webコンソール で 左上[Menu] > [セキュリティ]

soracom-menu soracom-menu-security

1-2. [認証情報ストア] > [認証情報を登録] で 認証情報入力画面を開きます

soracom-cred-store

1-3. 認証情報を登録する画面では下記の通り入力し、保存してください

  • 認証情報ID: mosquitto-cred
  • 概要: test.mosquitto.org 接続用証明書
  • 種別: X.509 証明書 (これを選択すると、下記を入力するテキストボックスが増えます)

秘密鍵;

-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAvCqmO1+ADKcxRs+AldaUDxX9GPdUPoIDz61s8y9jqKImY4Qv
EY4e927HAPiQb2rLZlSIHTEpEHXduOCBdqayafHmQW9VCRm9wQbffw6oP3cZhsfr
nKGiE81Ejnru7dEdrxgm9DfwHJRj9l1lw5ENF5ojn0Gmgqx4fW1W6OMbVJmvceTH
fabkybKAPd1SMglY12PEn+l7rTq7U2YzhEcI2p8C5w7YjtOU/1sd/BbQsnzwlQ0w
MJP1ci2Ou/Q8Z+BLiObNHqgVh6EAgbn/S4M7l+4wCfcAvd+zrBZ2EKOL8W6MVjKi
UPeEphLg4G7n1baj707NuggQ40zg3sOl8/xkbwIDAQABAoIBAQCKQGvSw+A5a75w
4JUBgp9WVjmX1mE3bB+Qv0OFihQXGsxJ4h0TMPDfq6zbscWtlzHLBeDcUfpx9afq
5kk4/FGqNemPulUoUplw8bPUjthfiQpgVRNwCfIjynXMmdZjNXox4/T7Cv6IgR7R
LN5QSorsBHyXzoyhBkehIGzyv6qdBOudz+6E371zL+Mccjo6bXn27PgybYnq1OG/
kCyi7ksOGGt468ZCOcSMK7hlCsmBCa3LiXF435fU4jnC8x5u67iCrPIatM82rCrH
SdxvkuCH6aBDmjC8OQ95cndxTfN7X1CjBRKhh02gnNclZiPNWYAKwbDpuF5VvAW8
Rvxwta1BAoGBAODh3Kus7QtcpxSR4QUZrnwfMsWh9uHxg/Fr3G3mDKHEdhN8hjCI
wy3MkTwp3Zu+g/sdJtwct4PzMxwfMY823FHJUOyWsO79lMTsc/JG8zFeJqFXtp8p
9EIlXzA83nwgbvWhPR+kdNzs3pB4nm7qOQA+3z9Ez70/566PizG6061tAoGBANY0
L67Spi/rokpjhnO7Ya+9Ys5A57BxgIk7cYyGDezIpe2qSxMLdyq6l3/+WtCZiFci
96ej/w+FY8Obtre6go3EqQiZHJGH/P+jHUkQuv8nDdG9zqCpQt6bgPRmpYUntMvR
IJua5FAminwzmXjb2nVDoTbdzKKsOrss/+zYePvLAoGBANpPqbAnsf9jtPetHqua
4N6yUtG1iDyT/6jxMw6lVAH+/Tmxm3umaQQfIacsZWx6qRmwlTb90dIQ2L8mMTB8
66miLCNhruZz2mbJvU2oPxLf+dSLmEgvrGZCbYQgs0QBIHboTrRXLPQEJ5RM5FF8
pFVus79yB9ILJdk6lMB0RGaJAoGAfu05fAxScX7dEdtbpmRYhDxiufj30TPQiIDy
zeP5iF91Axmvlr9qg6VBdJSR153Cjm+n9GxXDSlrblNst/4KslrgFrozlYDRR+Gt
zsfdJqhLpgck00q41xOqHChe2EIo/cUT32Cu/Vd5JBOnU1hjYK0McGiJg7Musg7+
L6guOHUCgYAHrGzZgUaRZDSBXQECihtGI5imWWSqJZs7VtT11sDsBIB1fKb0Yuv6
PF/O7Ojnri6eQ3/Ki3nBgBXXFIwFd6YwPvJ2ZrWQlD0O0vatRI/UJ1bWLGvjhL84
LOOGVJ38amZag5hvFbfHEHhLoi6VsyW69ch6QIAfZeRfryeOKvgq1A==
-----END RSA PRIVATE KEY-----

証明書;

-----BEGIN CERTIFICATE-----
MIIC7zCCAligAwIBAgIBADANBgkqhkiG9w0BAQsFADCBkDELMAkGA1UEBhMCR0Ix
FzAVBgNVBAgMDlVuaXRlZCBLaW5nZG9tMQ4wDAYDVQQHDAVEZXJieTESMBAGA1UE
CgwJTW9zcXVpdHRvMQswCQYDVQQLDAJDQTEWMBQGA1UEAwwNbW9zcXVpdHRvLm9y
ZzEfMB0GCSqGSIb3DQEJARYQcm9nZXJAYXRjaG9vLm9yZzAeFw0xODA4MTIxNTIx
MTFaFw0xODExMTAxNTIxMTFaMEoxCzAJBgNVBAYTAkpQMQ4wDAYDVQQIDAVUb2t5
bzEWMBQGA1UECgwNU09SQUNPTSwgSU5DLjETMBEGA1UEAwwKc29yYWNvbS5pbzCC
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALwqpjtfgAynMUbPgJXWlA8V
/Rj3VD6CA8+tbPMvY6iiJmOELxGOHvduxwD4kG9qy2ZUiB0xKRB13bjggXamsmnx
5kFvVQkZvcEG338OqD93GYbH65yhohPNRI567u3RHa8YJvQ38ByUY/ZdZcORDRea
I59BpoKseH1tVujjG1SZr3Hkx32m5MmygD3dUjIJWNdjxJ/pe606u1NmM4RHCNqf
AucO2I7TlP9bHfwW0LJ88JUNMDCT9XItjrv0PGfgS4jmzR6oFYehAIG5/0uDO5fu
MAn3AL3fs6wWdhCji/FujFYyolD3hKYS4OBu59W2o+9OzboIEONM4N7DpfP8ZG8C
AwEAAaMaMBgwCQYDVR0TBAIwADALBgNVHQ8EBAMCBeAwDQYJKoZIhvcNAQELBQAD
gYEAKlnfzDxcC37KT7iXO2xTjUYfwUyn6PJF4qAWx46KjzZ5RbWiV74bXrgYMT01
Gcm6Nmjp9b0+tZ8jhN4JnJQcflcB7Wtc3697gnqd6IbmbC9GPipNPHF9CGfPSO6V
N6hRBMwzBIJhu+bdZ4f7rDYINWBxq3ThJhSKuF/PA+pmC08=
-----END CERTIFICATE-----

CA 証明局;

-----BEGIN CERTIFICATE-----
MIIC8DCCAlmgAwIBAgIJAOD63PlXjJi8MA0GCSqGSIb3DQEBBQUAMIGQMQswCQYD
VQQGEwJHQjEXMBUGA1UECAwOVW5pdGVkIEtpbmdkb20xDjAMBgNVBAcMBURlcmJ5
MRIwEAYDVQQKDAlNb3NxdWl0dG8xCzAJBgNVBAsMAkNBMRYwFAYDVQQDDA1tb3Nx
dWl0dG8ub3JnMR8wHQYJKoZIhvcNAQkBFhByb2dlckBhdGNob28ub3JnMB4XDTEy
MDYyOTIyMTE1OVoXDTIyMDYyNzIyMTE1OVowgZAxCzAJBgNVBAYTAkdCMRcwFQYD
VQQIDA5Vbml0ZWQgS2luZ2RvbTEOMAwGA1UEBwwFRGVyYnkxEjAQBgNVBAoMCU1v
c3F1aXR0bzELMAkGA1UECwwCQ0ExFjAUBgNVBAMMDW1vc3F1aXR0by5vcmcxHzAd
BgkqhkiG9w0BCQEWEHJvZ2VyQGF0Y2hvby5vcmcwgZ8wDQYJKoZIhvcNAQEBBQAD
gY0AMIGJAoGBAMYkLmX7SqOT/jJCZoQ1NWdCrr/pq47m3xxyXcI+FLEmwbE3R9vM
rE6sRbP2S89pfrCt7iuITXPKycpUcIU0mtcT1OqxGBV2lb6RaOT2gC5pxyGaFJ+h
A+GIbdYKO3JprPxSBoRponZJvDGEZuM3N7p3S/lRoi7G5wG5mvUmaE5RAgMBAAGj
UDBOMB0GA1UdDgQWBBTad2QneVztIPQzRRGj6ZHKqJTv5jAfBgNVHSMEGDAWgBTa
d2QneVztIPQzRRGj6ZHKqJTv5jAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUA
A4GBAAqw1rK4NlRUCUBLhEFUQasjP7xfFqlVbE2cRy0Rs4o3KS0JwzQVBwG85xge
REyPOFdGdhBY2P1FNRy0MDr6xr+D2ZOwxs63dG1nnAnWZg7qwoLgpZ4fESPD3PkA
1ZgKJc2zbSQ9fCPxt2W3mdVav66c6fsb7els2W2Iz7gERJSX
-----END CERTIFICATE-----
step5 MQTT PubSub with Mosquitto / mosquitto-cred

2. SORACOM Beam 設定

2-1. SORACOM Web コンソール で 左上[Menu] > [SIM グループ]

[追加] で、SIMグループを作成します (グループ名 beam もしくは任意でかまいません)

2-2. 先ほど作成した SIMグループ をクリックし、 SORACOM Beam の設定を開きます

2-3. SORACOM Beam の「+」をクリックし、一覧の中から MQTT エントリポイント をクリック

beam-menu

2-4. SORACOM Beam の設定では、下記の通り入力し、保存してください

  • 設定名: to-mosquitto
  • 種別: Other MQTT Broker
  • プロトコル: MQTTS
  • ホスト名: test.mosquitto.org
  • ポート番号: 8884
  • ユーザ名 と パスワード: (空のままで OK です)
  • 証明書: ON
  • 認証情報: mosquitto-cred (手順 1 で作成した証明書を選択)
  • IMSI 付与: ON
step5 MQTT PubSub with Mosquitto / beam-setting

2-5. 左上[Menu] > [SIM 管理]

  • Wio LTE に取り付けている SIM を選択 > [操作] > [所属グループ変更]
  • 先ほど作成した SIMグループ に所属させる

3. PubSubClient ライブラリのインストール

MQTT 通信を行うにあたり PubSubClient というライブラリを利用します

3-1. Arduino IDE を起動する

3-2. Arduino IDE の [スケッチ] > [ライブラリをインクルード] > [ライブラリを管理…]

一覧の中から PubSubClient を選択しインストールをクリックします

mqtt pubsub で検索すると見つけやすいです

4. スケッチを作成する

4-1. Arduino IDE を起動する

4-2. メニューの [ツール] で [ボード: "Wio Tracker LTE"] と表示されていることを確認する

なっていなければ一覧から "Wio Tracker LTE" を選んでください

4-3. Arduino IDE の [ファイル] > [スケッチ例] > [Wio LTE for Arduino] > [mqtt] > [mqtt-client]

4-4. スケッチを下記の通りに変更します (変更例は後述)

  • 10行目: hostnamebeam.soracom.io に変更
  • 13行目: WioLTEハンズオン運営から入手した値 (mqtt-iid) に変更
  • 14行目: outTopicハンズオン運営から入手した値 (mqtt-pub-topic) に変更
  • 15行目: inTopicハンズオン運営から入手した値 (mqtt-sub-topic) に変更
  • 17行目: 600005000 に変更

スケッチの変更例

変更前 (10行目 ~ 17行目までを一括で表示)

#define MQTT_SERVER_HOST  "hostname"
#define MQTT_SERVER_PORT  (1883)

#define ID                "WioLTE"
#define OUT_TOPIC         "outTopic"
#define IN_TOPIC          "inTopic"

#define INTERVAL          (60000)

変更後 ( IDOUT_TOPICIN_TOPIC の値はハンズオン運営から入手してください)

#define MQTT_SERVER_HOST  "beam.soracom.io"
#define MQTT_SERVER_PORT  (1883)

#define ID                "sr-h0813-02"
#define OUT_TOPIC         "sroot/h0813/02/cloud"
#define IN_TOPIC          "sroot/h0813/02/device"

#define INTERVAL          (5000)

4-5. Wio LTE を PC を接続して DFUモード にする

4-6. 新しく開いたウィンドウの マイコンボードに書き込むアイコン(マイコンボードに書き込む) をクリック

4-7. 書き込みが完了したら、Wio LTE を 通常モードにする (RSTボタンを押せば通常モードになります)

通常モードで起動次第 SORACOM Beam へデータを送信し始めます (電源投入から送信開始までは15~20秒程度かかります)

5. 確認

5-1. MQTT WebSocket Client を新しいタブで開きます

下記の値を入力して [Connect] をクリックしてください

  • Host: test.mosquitto.org
  • Port: 8080

※その他は変更する必要はありません

step5 MQTT PubSub with Mosquitto / ws-client

5-2. Subscribe と Publish の設定

Subscribe (Wio LTE → クラウド)

  • Add New Topic Subscription をクリック
  • 表示されたダイアログで Topicハンズオン運営から入手した値 (ws-sub-topic) を入力
    例: sroot/h0813/02/#
  • [Subscribe] をクリック
step5 MQTT PubSub with Mosquitto / ws-sub

Messages に Wio LTE からのデータが表示され始めます。 (表示されている様子は後述します)

Publish (クラウド → Wio LTE)

  • Topicハンズオン運営から入手した値 (ws-pub-topic) を入力
    例: sroot/h0813/02/device
  • Message に任意の文字を入力する
  • [Publish] をクリック

Wio LTE 側のシリアルモニターに Message で入力した文字が受信できていることが確認できます (同時に monitor の Subscribe の方にも表示されます)

step5 MQTT PubSub with Mosquitto / ws-result

6. やってみよう

MQTT Subscribe メッセージを受信すると、23 行目の void callback() という関数が実行されます。 ここを修正することで、クラウドからのコマンドを処理することができるようになります。

今回は「 #xxxxxx という文字列を受信したら、 LED の発光色として使う」としてみましょう

変更前;

void callback(char* topic, byte* payload, unsigned int length) {
  SerialUSB.print("Subscribe:");
  for (int i = 0; i < length; i++) SerialUSB.print((char)payload[i]);
  SerialUSB.println("");
}

変更後;

void callback(char* topic, byte* payload, unsigned int length) {
  char c[length];
  for (int i = 0; i < length; i++) c[i] =  (char) payload[i];
  SerialUSB.print("Subscribe:");
  SerialUSB.println(c);
  unsigned long r = 0;
  unsigned long g = 0;
  unsigned long b = 0;
  if ('#' == c[0] && length == 7) {
    char rx[2] = {c[1], c[2]};
    r = strtoul(rx, NULL, 16);
    char gx[2] = {c[3], c[4]};
    g = strtoul(gx, NULL, 16);
    char bx[2] = {c[5], c[6]};
    b = strtoul(bx, NULL, 16);
  }
  Wio.LedSetRGB(r, g, b);
}

試験用カラーコード

  • 赤 : #300000
  • 緑 : #002000
  • 青 : #000018
  • SORACOM カラー : #001410
  • オレンジ : #481400
  • 消灯 : #000000

※ SORACOM カラーを送っている様子

step5 MQTT PubSub with Mosquitto / ws-result-w-led

その他の色も試してみてください

7. Wio LTE の動作を止める

止める方法は Wio LTE の電源を OFF (= microUSBケーブルを抜く) してください

うまく動かなかったら(トラブルシュート)

「マイコンボードに書き込む」を実行した結果、ウィンドウに下記のように表示された

 #include <PubSubClient.h>  // https://github.com/knolleary/pubsubclient
                                                                        ^
compilation terminated.

exit status 1
ボードWio Tracker LTEに対するコンパイル時にエラーが発生しました。
  • 原因: PubSubClient ライブラリが不足しています
  • 対策: ステップ5 の本文を読み PubSubClient をインストールした後、再度書き込みを行ってください

(シリアルモニターで) ### Connecting to "soracom.io". で止まってしまう

--- START ---------------------------------------------------
### I/O Initialize.
### Power supply ON.
### Turn on or reset.
### Connecting to "soracom.io".
  • 原因: 電波状況などによりモバイル通信に失敗している
  • 対策: RST ボタンを押して Wio LTE を再度起動しなおしてください

(シリアルモニターで) ### ERROR! ### と表示されてしまう

--- START ---------------------------------------------------
### I/O Initialize.
### Power supply ON.
### Turn on or reset.
### Connecting to "soracom.io".
### Connecting to MQTT server "beam.soracom.io"
### ERROR! ###
Publish:{"uptime":23}
  • 原因: SORACOM Beam の設定に不備があります
  • 対策: よくある原因は以下の通りです。確認してみてください
  1. SORACOM Beam の設定で MQTTS にするところを MQTT のままにしている → Beam の設定を見直してみてください
  2. 認証情報に埋めるべき文字列が間違っている → 認証情報を新たに作り、Beam の設定で新しい方を指定してみてください
  3. SORACOM Beam が有効になっている SIM グループに SIM を所属させることを忘れている → SIM の設定から SIM グループに所属しているか確認してみてください

最初の数回だけ Websockets Client 側で受信ができて、その後の受信が確認できない / Websockets Client 側からの Publish が Wio LTE に届かない

  • 対策: 下記手順を実施してみてください
    1. (Wio LTE の電源が入ったままで) SORACOM Webコンソール上で、当該の SIM のセッションを切断
    2. Wio LTE を再起動 (RST ボタンなど)

送信しているように見えるが Websocket Client に全く送信されない

  • 原因: PubSubClient のバッファサイズが不足している場合があります
  • 対策: PubSubClient.hMQTT_MAX_PACKET_SIZE128 から大きい数字 (e.g. 512) に変更して再コンパイルしてください

おわりに

おつかれさまでした
Wio LTE ハンズオンは以上で終了です。最後に注意点の確認をお願いいたします

《知識》今後の費用について

SORACOM Air SIM は実際の通信の有無に限らず日当たりの基本料金が発生いたします
詳細は ご利用料金 - 日本向け Air SIM をご覧ください

SORACOM Harvest

本ハンズオンで使用した SORACOM Harvest は、実際の通信の有無に限らず SORACOM Harvest が利用可能状態の SIM の枚数に応じて日当たりのオプション料金が発生します
詳細は SORACOM Harvest のご利用料金 をご覧ください

SORACOM Beam および SORACOM Funnel

本ハンズオンで使用した SORACOM Beam および SORACOM Funnel は、発生したリクエストに応じた課金がされるサービスです
詳細は SORACOM Beam のご利用料金 ならびに SORACOM Funnel のご利用料金 をご覧ください

クーポンの登録方法

クーポンコードの使い方をご覧ください

※その他クーポンに関する注意事項もご参照ください

長期利用割引

Air SIM のご契約期間をお約束いただくことで、基本料金が割引になる仕組みをご検討ください

MQTT ブローカーについて

今回利用した Mosquitto の MQTT ブローカーは、試験用の公開サーバです。誰でも読み書きが可能であるため、実システムでの利用はおやめください。

代替するプロダクトは以下の通りです

※ すべてが MQTT の機能をサポートしているわけでは無いので要件に応じてご選択ください。

【作業】Wio LTE を片付ける

Wio LTE の初期化

Wio LTE を初期化しておくことで、次回起動時に不用意な通信などを防ぐことができます

作業としては「空っぽのスケッチ」を書き込むことで、初期化できます

  1. Arduino IDE を起動する
  2. メニューの [ツール] で [ボード: "Wio Tracker LTE"] と表示されていることを確認する
    • なっていなければ一覧から "Wio Tracker LTE" を選んでください
  3. Arduino IDE の [ファイル] > [新規ファイル]
  4. Wio LTE を PC を接続して DFUモード にする
  5. 新しく開いたウィンドウの マイコンボードに書き込むアイコン(マイコンボードに書き込む) をクリック
  6. 書き込みが完了したら、Wio LTE を 通常モードにする (RSTボタンを押せば通常モードになります)

SIM の取り出し

抜く際フックを引っ張りすぎると金具が取れてしまうため、図示されている程度まで引っ張り出したらSIMを取り出し、金具を元に戻してください

箱へ戻す

手渡された時同様に箱へ格納してください

  • アンテナは取り外して Wio LTE 本体が格納されていた白いトレーのミゾに入れてください
  • microUSB ケーブルは白いトレーを取り外した中に入れてください

本コンテンツについて

本コンテンツの著作は株式会社ソラコムに帰属します。再利用についてはソラコムへお問合せください。

Appendix(付録): ハンズオンで使用した環境の構築方法

AWS IoT Core

  • IAM
    • IAM で専用ユーザ作成 (e.g. awsiot-dataaccess-for-handson)
    • awsiot-dataaccess-for-handson の Access Key ID 発行
    • awsiot-dataaccess-for-handsonAWSIoTDataAccess ポリシー割り当て

※ "モノ" や "ポリシー" の作成や設定は不要です

運営の方へ

これらを準備、運営側シートへ書き込んでください

  • ハンズオンID (e.g. h0813 など)
  • IAM Access Key ID
  • IAM Secret Access Key ID

ステップ 4 における AWS IoT Core へのデータ着信確認

いづれかの方法を使ってください

  • AWS IoT Core 管理画面のテストツール
  • AWS IoT Monitor (AWS Cognito の設定が別途必要です)

トラブルシュート

  • IAM 確認
    • IAM アカウントに紐づいている Access Key ID
    • IAM アカウントへの割り当てポリシー ( AWSIoTDataAccess ポリシーが必要 )
  • AWS IoT Core 確認
    • カスタムエンドポイント (リージョン違い等)
    • Subscribe しているトピック名
  • AWS IoT Monitor を使っての確認の場合
    • Cognito と AWS IoT のリージョン
    • ID プールの ID
    • 認証されていないロールへの割り当てポリシー ( AWSIoTDataAccess ポリシーが必要 )
    • Subscribe しているトピック名

EoT

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.