Wio Terminal を Microsoft Azure IoT Central に接続する
この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues
Wio Terminal を Microsoft Azure IoT Central に接続する
はじめに
このチュートリアルでは、Wio Terminal を Microsoft Azure IoT Central に接続し、Wio Terminal のオンボードセンサーやハードウェア(3軸加速度センサー、光センサー、3つのボタンなど)からテレメトリデータを送信する手順を説明します。その後、インタラクティブなダッシュボードでセンサーデータを視覚化できるようになります。また、Azure IoT Central を使用して、Wio Terminal のオンボードブザーを鳴らすなどのハードウェア制御も可能です。Microsoft Azure IoT Central は HTTP、MQTT、AMQP プロトコルをサポートしていますが、このチュートリアルでは MQTT プロトコルを使用します。
Microsoft Azure とは?
Microsoft Azure は、Microsoft が提供するパブリッククラウドコンピューティングプラットフォームです。Microsoft Azure を使用して、アプリケーションやサービスを構築、テスト、デプロイ、管理することができます。
また、コンピューティング、分析、ストレージ、ネットワーキングなど、さまざまなクラウドサービスを提供しています。Microsoft Azure は、ソフトウェア・アズ・ア・サービス (SaaS)、プラットフォーム・アズ・ア・サービス (PaaS)、インフラストラクチャ・アズ・ア・サービス (IaaS)、およびサーバーレスを提供します。さらに、多くのプログラミング言語、ツール、フレームワークをサポートしています。
Microsoft Azure IoT とは?
Microsoft Azure IoT は、Microsoft が管理するクラウドサービスのコレクションで、数十億の IoT 資産を接続、監視、制御します。これには、デバイスや機器のセキュリティおよびオペレーティングシステム、データと分析が含まれ、企業が IoT アプリケーションを構築、展開、管理するのを支援します。
Microsoft Azure IoT Central とは?
Microsoft Azure IoT Central は、完全に管理されたグローバル IoT SaaS(ソフトウェア・アズ・ア・サービス)ソリューションで、大規模な IoT 資産を簡単に接続、監視、管理できるようにします。高いセキュリティを備え、ビジネスの成長に応じてスケールし、投資の再利用性を確保し、既存のビジネスアプリケーションと統合します。また、ビジネスアプリケーションと IoT データの間のギャップを埋めます。さらに、デバイスの再構成や更新を集中管理する機能を提供します。
IoT Plug and Play とは?
IoT Plug and Play は、ソリューションビルダーがスマートデバイスを手動設定なしでソリューションに統合できるようにします。IoT Plug and Play の中心には、デバイスが IoT Plug and Play 対応アプリケーションにその機能を通知するために使用するデバイスモデルがあります。このモデルには以下が含まれます:
- プロパティ: デバイスやその他のエンティティの読み取り専用または書き込み可能な状態を表します
- テレメトリ: デバイスから送信されるデータ
- コマンド: デバイスで実行可能な機能や操作を記述します
IoT Plug and Play 認定デバイスは、Azure IoT Central でのデバイス設定(テンプレートの作成や機能・インターフェースの追加など)の手間を省きます。
IoT Plug and Play 認定デバイス
IoT Plug and Play 認定デバイスは、Azure Certified Device Catalog に IoT Plug and Play バッジ付きで掲載されているデバイスです。
Wio Terminal は IoT Plug and Play 認定デバイスです。
IoT Plug and Play 認定を受けるには、いくつかの基準をクリアする必要があります。その一つとして、デバイスの機能を定義する DTDL(Digital Twins Definition Language)モデルを GitHub 上の Azure/iot-plugandplay-models (DMR) に公開する必要があります。
これにより、IoT Plug and Play 認定デバイスを使用するクラウドサービスが、このリポジトリからデバイスの機能を学習できるようになります。
Wio Terminal を Microsoft Azure IoT Central に MQTT を使用して接続する
前述の通り、Wio Terminal と Microsoft Azure IoT Central 間の通信には MQTT を使用します。ただし、必要に応じて HTTP ブリッジを使用することも可能です。
Microsoft Azure IoT Central のセットアップ
まず、Microsoft Azure IoT Central にアクセスし、Microsoft アカウントにログインしてプロジェクト用の新しいアプリケーションを作成します。
STEP 1: こちら にアクセスして新しいアプリケーションを作成します。
STEP 2: 左側のナビゲーションメニューから Build をクリックし、Custom apps を選択します。
注意: ログインを求められた場合は、Microsoft アカウントにログインしてください。
- STEP 3: Application name を入力し、Pricing plan で Free を選択します。
注意: アプリケーション名を入力すると、アプリケーション URL が自動的に作成されます。
- STEP 4: Create をクリックして新しいアプリケーションを作成します。
これで Azure IoT Central のセットアップが完了しました!
Wio Terminal のセットアップ
RTL8720 ファームウェアの更新
Wio Terminal の Realtek RTL8720 ワイヤレスコアのファームウェアを更新する必要があります。この Wiki に従って RTL8720 ファームウェアを更新してください。
注意: 指定されたバージョンに従って ファームウェア を更新してください。
デモコードをダウンロードして Wio Terminal にアップロードする
まず、Wio Terminal のオンボードセンサーから Microsoft Azure IoT Central にテレメトリデータを送信するデモコードを使用します。
デモコードのダウンロード
- STEP 1: GitHub の このリポジトリ にアクセスします。
- STEP 2: Releases をクリックします。
- STEP 3: Latest release の下で wioterminal-aziot-example.uf2 をクリックして .uf2 ファイルをダウンロードします。
デモコードを Wio Terminal にアップロードする
- STEP 1: Wio Terminal を PC に接続して電源を入れます。
- STEP 2: 電源スイッチを「ON」位置からさらに下げてリリースし、再度スライドしてリリースすることで Bootloader モード に入ります。
注意: Wio Terminal が Bootloader モードに入ると、青色の LED が点滅とは異なる呼吸のような動作を開始します。
STEP 3: PC のファイルエクスプローラーを開くと、Arduino という名前の新しい外部ドライブが表示されます。
STEP 4: 先ほどダウンロードした .uf2 ファイル をこの Arduino ドライブ にドラッグします。
STEP 5: Wio Terminal の電源をオフにします。
これでデモコードを Wio Terminal に正常にアップロードしました。
Wi-Fi と Azure IoT の設定
次に、Wi-Fi と Azure IoT の接続を設定します。
- STEP 1: 3 つのボタンを押しながら Wio Terminal の電源を入れて設定モードに入ります。
STEP 2: PUTTY などのシリアルコンソールアプリケーションを開きます。
STEP 3: 正しいシリアル COM ポート を入力し、9600 をボーレートとして設定して Wio Terminal に接続します。
STEP 4: キーボードで ENTER を押してシリアルターミナルに help と入力し、設定の使用方法を確認します。
STEP 5: set_wifissid
your_WI-Fi_network_name
と入力して Wi-Fi SSID を設定します。
注意: フィールド間にスペースを 1 つ追加してください。
- STEP 6: set_wifipwd
your_WI-Fi_network_password
と入力して Wi-Fi パスワードを設定します。
注意: フィールド間にスペースを 1 つ追加してください。
STEP 7: Azure IoT Central で以前作成したアプリケーションにアクセスして Azure IoT の接続情報を設定します。
STEP 8: 左側のナビゲーションメニューから
Administration > Device Connection
に移動し、ID scope を notepad にコピーします。STEP 9: SAS-IoT-Devices をクリックして primary key を notepad にコピーします。
STEP 10: 以前開いたシリアルターミナルに移動し、set_az_iotc
your_ID_scope
your_primary_key
your_device_name
と入力します。
注意: 各フィールド間にスペースを 1 つ追加してください。また、device name
は任意で決定できます。
- STEP 11: スイッチを「ON」位置からさらに下げてリリースすることで Wio Terminal をリセットします。
これで Wio Terminal の LCD に Wi-Fi 接続中、次に Azure IoT Hub 接続中と表示され、その後 Azure IoT Central に送信されるテレメトリデータが表示されます。
Microsoft Azure IoT Central にテレメトリデータを表示する
次に、Wio Terminal の 3 軸加速度センサー、光センサー、3 つのボタンからの受信テレメトリデータを Azure IoT Central Dashboard に表示します。
STEP 1: 以前アクセスした Azure IoT Central Dashboard を開きます。
STEP 2: 左側のナビゲーションメニューから Devices をクリックします。
STEP 3: Seeed Wio Terminal が Devices の下に表示されます。それをクリックします。
STEP 4: 以前設定した device name のエントリをクリックします。
これで、オンボードの3軸加速度計からのデータをインタラクティブなダッシュボードで視覚化できるようになります。
これはデフォルトのビューであり、他のテレメトリデータも表示するためにいくつか変更を加える必要があります。
- STEP 5: 左側のナビゲーションメニューから Device templates をクリックし、Seeed Wio Terminal をクリックしてテンプレートを設定します。
- STEP 6: 左側のナビゲーションメニューから Overview をクリックします。
- STEP 7: select a telemetry ドロップダウンメニューを展開し、視覚化したいテレメトリを選択します。
- STEP 8: Add tile をクリックすると、Azure IoT Central Dashboard にタイルが追加されます。
注意: タイルのサイズ変更や視覚化の変更は好みに応じて行うことができます。
- STEP 9: 左、中央、右の3つのボタンについても同じ手順を繰り返します。
注意: 以下のように設定しました:
タイル名 | タイルサイズ | タイル視覚化 |
---|---|---|
光強度 | 2 x 2 | 折れ線グラフ |
左ボタン | 1 x 1 | KPI |
右ボタン | 1 x 1 | KPI |
中央ボタン | 2 x 2 | KPI |
- STEP 10: Save と Publish をクリックします。
- STEP 11: Azure IoT Central ダッシュボードに戻ると、Wio Terminal から送信されるすべてのデータを視覚化できるようになります。
- STEP 12: Raw data タブをクリックすると、すべてのテレメトリデータをリアルタイムで確認することもできます。
ルールを追加してメールを送信する
IoT Central のルールは、接続されたデバイスからの監視イベントに基づいてカスタマイズ可能な応答をトリガーするツールです。 例えば、このデモでは、光強度レベルが50未満の場合にメールを送信するように IoT Central を設定できます。
STEP 1: Azure IoT Central の左側のナビゲーションメニューから Rules をクリックします。
STEP 2: +New または Create a rule をクリックします。
STEP 3: ルールの名前を入力します。
STEP 4: Device template の下で Seeed Wio Terminal を選択します。
- STEP 5: Conditions の下で time aggregation をオンにし、任意の time window を選択します。ここでは 5分 に設定します。
注意: 毎 xx 分ごとに、ルールは過去 xx 分間のデータを評価します。
STEP 6: Telemetry の下で任意のテレメトリを選択します。ここでは 光強度 を設定します。
STEP 7: Aggregation の下で Average を選択します。これにより、設定した time window の間の平均値が取得されます。
STEP 8: Operator の下で任意の条件を選択します。ここでは is less than 条件を使用します。
STEP 9: Value の下で値を入力します。ここでは 50 を入力します。
STEP 10: Actions の下で Email をクリックします。
STEP 11: Display name、To address、Note を入力します。
注意: ここで使用する メールアドレス は、この Azure IoT Central アプリケーション に追加され、少なくとも一度サインインしている必要があります。
Administration > Users
に移動し、Assign user をクリックして Email を入力し、Role を割り当てて Save をクリックします。
STEP 12: Done をクリックします。
STEP 13: 最後に Save をクリックします。
これでメールを送信するルールが正常に作成されました。
Microsoft Azure IoT Central からハードウェアを制御する
Azure IoT Central でテレメトリデータを表示するだけでなく、それを使用してハードウェアを制御することもできます。このデモでは、Wio Terminal の内蔵ブザーを制御し、指定した時間の間ブザーを鳴らすことができます。
STEP 1: Command タブをクリックします。
STEP 2: Duration 列の下に値を入力します。
注意: 値はミリ秒単位です。例: 1000 = 1000ms = 1秒
- STEP 3: Run をクリックすると、指定した時間の間ブザーから音が鳴るのを聞くことができます。
他のセンサーを追加する方法
Wio Terminal に任意のセンサーを追加し、接続されたセンサーからのテレメトリーデータを Azure IoT Central に送信することができます。ここでは、Grove - Temperature & Humidity Sensor (DHT11) を Wio Terminal に接続し、温度と湿度のデータを Azure IoT Central に送信してダッシュボードで可視化する方法を説明します。
Microsoft Visual Studio Code のセットアップ
Visual Studio Code のダウンロード、インストール、設定
Wio Terminal にさらにセンサーを追加してテレメトリーデータを Azure IoT Central に送信する場合、以前使用した .uf2 ファイルを簡単に使用することはできません。なぜなら、その .uf2 ファイルにはコードがすでにコンパイルされているためです。そのため、デモにコードを追加したい場合は、Microsoft Visual Studio Code という IDE を使用して必要なコードを追加し、最終的に Wio Terminal にアップロードする必要があります。
では、まずコンピュータに Microsoft Visual Studio Code をインストールする手順を進めましょう。
- STEP 1: code.visualstudio.com にアクセスし、Download をクリックします。
注意: オペレーティングシステムに応じたインストーラーを選択してください。
STEP 2: インストールウィザードを進めてインストールを完了します。
STEP 3: Visual Studio Code を開きます。
STEP 4: 左側のナビゲーションメニューから Extensions をクリックし、検索ボックスに platformIO と入力します。
- STEP 5: install をクリックします。
Visual Studio Code でのデモ用コード
STEP 1: このリンク にアクセスして、SeeedJP/wioterminal-aziot-example リポジトリ 内の利用可能なリリースを確認します。
STEP 2: Latest release に移動し、Assets の下で Source code (zip) をクリックします。これにより、ソースコードが .zip ファイルとしてダウンロードされます。
STEP 3: .zip ファイル を解凍します。
STEP 4: Visual Studio Code に戻り、
File > Open Folder...
に移動します。STEP 5: 解凍したフォルダーを選択し、Select Folder をクリックします。
STEP 6: 左側のナビゲーションメニューから
wioterminal-aziot-example-0.10 > include > config.h
に移動します。STEP 7: config.h を開いたら、"dtmi:seeedkk:wioterminal:wioterminal_aziot_example;5" を探し、"dtmi:local:wioterminal_aziot_example;5" に変更します。
注意: dtmi:local:wioterminal_aziot_example;5 はモデル ID です。
STEP 8: 左側のナビゲーションメニューから
wioterminal-aziot-example-0.10 > seeedkk-wioterminal-wioterminal_aziot_example.json
に移動します。STEP 9: seeedkk-wioterminal-wioterminal_aziot_example.json を開いたら、"dtmi:seeedkk:wioterminal:wioterminal_aziot_example;5" を探し、"dtmi:local:wioterminal_aziot_example;5" に変更します。
注意: seeedkk-wioterminal-wioterminal_aziot_example.json は以前に説明した DTDL モデルです。
現在、このモデルは 加速度、光強度、ボタンカウント データ用に定義されています。これに 温度と湿度 を追加します。
- STEP 10: 以下のコードを "contents": [ の下に追加します。
"contents": [
{
"@type": [
"Telemetry",
"Temperature"
],
"name": "temp",
"unit": "degreeCelsius",
"displayName": {
"en": "Temperature (C)",
"ja": "温度"
},
"schema": "integer"
},
{
"@type": "Telemetry",
"name": "humi",
"displayName": {
"en": "Humidity (%RH)",
"ja": "湿度"
},
"schema": "integer"
},
注意: name は後でコード内で特定のテレメトリーデータを識別するために使用される名前です。unit はデータに対応する単位、displayName は Azure IoT Central に表示される名前("en" は英語、"ja" は日本語)、schema はデータ型を示します。
STEP 11: 左側のナビゲーションメニューから
wioterminal-aziot-example-0.10 > platformio.ini
に移動します。STEP 12: platformio.ini を開いたら、lib_deps の下に以下を追加します。
lib_deps =
https://github.com/Seeed-Studio/Grove_Temperature_And_Humidity_Sensor
注意: これは Grove - Temperature and Humidity Sensor (DHT11) のライブラリです。
STEP 13: 左側のナビゲーションメニューから
wioterminal-aziot-example-0.10 > src > main.cpp
に移動します。STEP 14: main.cpp を開いたら、#include "CliMode.h" の後に DHT11 ライブラリを追加します。
#include "CliMode.h"
#include "DHT.h"
- STEP 15: LIS3DHTR AccelSensor; の後に DHT11 の定義と初期化を追加します。
LIS3DHTR<TwoWire> AccelSensor;
#define DHTPIN 0 //DHTセンサーの信号ピンを定義
// #define DHTPIN PIN_WIRE_SCL //I2Cポートをデジタルポートとして使用
#define DHTTYPE DHT11 //DHTセンサーのタイプを定義
DHT dht(DHTPIN, DHTTYPE); //DHTセンサーの初期化
注意: DHT11 センサーは Wio Terminal の Grove ポートのどちらにも接続できます。Digital Port を使用する場合、ピンは 0 と定義され、I2C port を使用する場合、ピンは PIN_WIRE_SCL と定義されます。ポート図は後でこのドキュメントに示されます。
- STEP 16: SendTelemetry() 関数の下に以下のコードを追加して、テレメトリーデータとともに JSON ファイルを解析します。
static az_result SendTelemetry()
{
float accelX;
float accelY;
float accelZ;
AccelSensor.getAcceleration(&accelX, &accelY, &accelZ);
int light;
light = analogRead(WIO_LIGHT) * 100 / 1023;
int temp; //温度を格納する変数を割り当て
int humi; //湿度を格納する変数を割り当て
temp = dht.readTemperature(); //温度を読み取る
humi = dht.readHumidity(); //湿度を読み取る
char telemetry_topic[128];
if (az_result_failed(az_iot_hub_client_telemetry_get_publish_topic(&HubClient, NULL, telemetry_topic, sizeof(telemetry_topic), NULL)))
{
Log("Failed az_iot_hub_client_telemetry_get_publish_topic" DLM);
return AZ_ERROR_NOT_SUPPORTED;
}
az_json_writer json_builder;
char telemetry_payload[200];
AZ_RETURN_IF_FAILED(az_json_writer_init(&json_builder, AZ_SPAN_FROM_BUFFER(telemetry_payload), NULL));
AZ_RETURN_IF_FAILED(az_json_writer_append_begin_object(&json_builder));
AZ_RETURN_IF_FAILED(az_json_writer_append_property_name(&json_builder, AZ_SPAN_LITERAL_FROM_STR("temp")));
AZ_RETURN_IF_FAILED(az_json_writer_append_int32(&json_builder, temp));
AZ_RETURN_IF_FAILED(az_json_writer_append_property_name(&json_builder, AZ_SPAN_LITERAL_FROM_STR("humi")));
AZ_RETURN_IF_FAILED(az_json_writer_append_int32(&json_builder, humi));
- STEP 17: ntp.begin の行の後に以下のコードを追加して、DHT11センサーを起動します。
dht.begin(); //DHTセンサーを起動
これで、このデモのコードはすべて完成しました。
- STEP 18: 左のナビゲーションメニューから PlatformIO アイコン をクリックし、Build をクリックします。
以下のメッセージが表示された場合、コードのコンパイルに成功しています。
================================== [SUCCESS] Took 30.56 seconds ==================================
Microsoft Azure IoT Central のセットアップ
次に、Wio Terminal からのデータを Azure IoT Central Dashboard 上で可視化するために、カスタムデバイステンプレートを作成する必要があります。
新しいデバイステンプレートの作成
STEP 1: Azure IoT Central にアクセスし、左のナビゲーションメニューから
Device templates
をクリックします。STEP 2: + New をクリックし、IoT device を選択して Next:Customize をクリックします。
STEP 3: Device template name ボックスに名前を入力し、Next:Review をクリックします。
STEP 4: Create をクリックします。
カスタムデバイスモデルのインポート
STEP 1: Import a model をクリックします。
STEP 2: 以前使用した wioterminal-aziot-example-0.10 フォルダに移動し、seeedkk-wioterminal-wioterminal_aziot_example.json ファイルを見つけてクリックします。
STEP 3: Open をクリックします。
STEP 4: 左メニューから Views をクリックし、Generate default views をクリックします。
STEP 5: Generate default dashboard view(s) をクリックします。
STEP 6: 左メニューから Overview に移動し、ダッシュボードを好みに合わせてカスタマイズします。
注意: このドキュメントでは以前、ダッシュボードのカスタマイズ方法について説明しました。
- STEP 7: 以下の設定を行います。
タイル名 | タイルサイズ | タイルの可視化 |
---|---|---|
光の強度 | 2 x 2 | 折れ線グラフ |
光の強度 | 1 x 1 | 最終値 |
温度 (C)、湿度 (%RH) | 2 x 2 | 折れ線グラフ |
温度 (C) | 1 x 1 | 最終値 |
湿度 (%RH) | 1 x 1 | 最終値 |
左ボタン | 1 x 1 | KPI |
中央ボタン | 1 x 1 | KPI |
右ボタン | 1 x 1 | KPI |
- STEP 8: Save と Publish をクリックします。
Wio Terminal のセットアップ
ハードウェアセットアップ
- Grove - 温度と湿度センサー (DHT11) を Wio Terminal の Grove Digital Port に接続します。
ソフトウェアセットアップ
コードを Wio Terminal にアップロードする
次に、Wio Terminal にコードをアップロードして、Azure IoT Central にテレメトリデータを送信します。
- STEP 1: VS Code に戻り、PlatformIO アイコン をクリックして Upload をクリックします。
Wi-Fi と Azure IoT の設定
次に、以前と同様に Wi-Fi と Azure IoT の接続を設定します。
- STEP 1: 3つのボタンを押しながら Wio Terminal をオンにして、設定モードに入ります。
STEP 2: PUTTY などのシリアルコンソールアプリケーションを開きます。
STEP 3: 正しいシリアル COM Port を入力し、9600 をボーレートとして設定して Wio Terminal に接続します。
- STEP 4: キーボードで ENTER を押し、シリアルターミナルで help を入力して設定の使用方法を確認します。
注意: Wi-Fi SSID とパスワードは以前の設定で保存されているため、再入力する必要はありません。
STEP 5: Azure IoT Central で以前作成したアプリケーションにアクセスし、Azure IoT の接続情報を設定します。
STEP 6: 左のナビゲーションメニューから
Administration > Device Connection
に移動し、ID scope を notepad にコピーします。STEP 7: SAS-IoT-Devices をクリックして、primary key を notepad にコピーします。
STEP 8: 以前開いたシリアルターミナルに移動し、set_az_iotc
your_ID_scope
your_primary_key
your_device_name
を入力します。
注意: 各フィールドの間にスペースを1つ追加してください。また、device name
は任意で決めることができます。
- STEP 9: スイッチを ON の位置からさらに下げてリリースすることで Wio Terminal をリセットします。
これで、Wio Terminal の LCD に Wi-Fi と Azure IoT Hub に接続していることが表示され、その後 Azure IoT Central に送信されるテレメトリデータが表示されます。
Azure IoT Central での可視化
Azure IoT Central に戻り、左のナビゲーションメニューから Devices をクリックし、Device name をクリックします。
これで、Wio Terminal からのすべてのセンサーデータを Microsoft Azure IoT Central Dashboard 上で可視化できるようになります!
技術サポートと製品ディスカッション
技術的な問題がある場合は、フォーラムに問題を投稿してください。
弊社製品をお選びいただきありがとうございます!お客様が弊社製品をスムーズにご利用いただけるよう、さまざまなサポートを提供しております。異なる好みやニーズに対応するため、複数のコミュニケーションチャネルをご用意しています。