演習 - Azure RTOS のリアルタイムの室内環境センサー データを IoT Hub に送信する

完了

この演習では、高レベルのアプリケーションと連携して、Azure RTOS のリアルタイムの室内環境センサー データを IoT Hub に送信します。

ステップ 1: プロジェクトを開く

  1. Visual Studio Code を起動して、プロジェクトを開きます。

  2. メニューの [ファイル] をクリックし、[フォルダーを開く] をクリックします。

  3. Azure-Sphere lab フォルダーを開きます。

  4. Lab_7_Partnering_with_RTOS_environment フォルダーを開きます。

  5. [フォルダーの選択] または [OK] ボタンをクリックしてプロジェクトを開きます。

Visual Studio Code の Peacock 拡張機能をインストールした場合、Visual Studio Code は青になります。 青色のインスタンスは、Cortex-A7 コアで実行されている高レベル アプリケーションに接続されています。

ステップ 2: 開発者ボードの構成を設定する

これらのラボによって、Avnet と Seeed Studio の開発者ボードがサポートされます。 お使いの開発者ボードと一致する構成を設定する必要があります。

既定の開発者ボードの構成は、Avnet Azure Sphere スタート キット リビジョン 1 用です。 このボードを使用している場合、追加の構成は必要ありません。

  1. CMakeList.txt ファイルを開きます。

  2. set Avnet の行の先頭に # を追加して、無効にします。

  3. お使いの Azure Sphere デバイス開発者ボードに対応する set コマンドのコメントを解除します。

    set(AVNET TRUE "AVNET Azure Sphere Starter Kit Revision 1 ")
    # set(AVNET_REV_2 TRUE "AVNET Azure Sphere Starter Kit Revision 2 ")
    # set(SEEED_STUDIO_RDB TRUE "Seeed Studio Azure Sphere MT3620 Development Kit (aka Reference Design Board or rdb)")
    # set(SEEED_STUDIO_MINI TRUE "Seeed Studio Azure Sphere MT3620 Mini Dev Board")
    
  4. ファイルを保存します。 これにより、CMake キャッシュが自動的に生成されます。

ステップ 3: Azure IoT の接続情報を構成する

  1. app_manifest.json ファイルを開きます。

  2. このアプリケーション マニフェストには新しいプロパティがあるため、メモ帳に保存した app_manifest.json をコピーしないでください

  3. Azure IoT Hub の接続のプロパティを更新します。

    • Azure IoT DPS の ID スコープで、CmdArgs を更新します。
    • Azure Sphere テナント ID を使用して、DeviceAuthentication を更新します。 これは、azsphere tenant show-selected コマンドを実行して返された数値であることを思い出してください。
  4. グローバル デバイス プロビジョニング サービス エンドポイントDPS エンドポイント、および Azure IoT Hub エンドポイントを使用して、AllowedConnections を更新します。 これらのエンドポイントの正しい形式については、以下の例を参照してください。

  5. app_manifest.json ドキュメントの書式を設定するには、ドキュメントを右クリックし、コンテキスト メニューから [ドキュメントのフォーマット] を選択します。

  6. 更新した app_manifest.json ファイルを確認します。 次のようになっているはずです。

    {
        "SchemaVersion": 1,
        "Name": "AzureSphereIoTCentral",
        "ComponentId": "25025d2c-66da-4448-bae1-ac26fcdd3627",
        "EntryPoint": "/bin/app",
        "CmdArgs": [ "--ConnectionType", "DPS", "--ScopeID", "0ne0099999D" ],
        "Capabilities": {
            "Gpio": [
            "$NETWORK_CONNECTED_LED",
            "$LED_RED",
            "$LED_GREEN",
            "$LED_BLUE"
            ],
            "PowerControls": [
            "ForceReboot"
            ],
            "AllowedConnections": [
                "global.azure-devices-provisioning.net",
                "<Your device provisioning service endpoint>",
                "<Your Azure IoT hub endpoint>"
            ],
            "DeviceAuthentication": "9d7e79eb-9999-43ce-9999-fa8888888894"
            "AllowedApplicationConnections": [ "6583cf17-d321-4d72-8283-0b7c5b56442b" ]
        },
        "ApplicationType": "Default"
    }
    

ステップ 4: InterCoreHandler コールバック関数にブレークポイントを設定する

  1. main.c を開きます。

  2. InterCoreHandler という名前の関数まで下にスクロールします。

    Note

    Visual Studio Code の [Go to Symbol in Editor](エディターでシンボルに移動) を使用します。 キーボード ショートカットの Ctrl + Shift + O キーを使用し、「InterCoreHandler」と入力し始めます。 ドロップダウンには、関数名が 2 回一覧表示されることがよくあります。 1 つ目は関数プロトタイプまたは転送シグネチャ宣言で、2 つ目は関数の実装です。

  3. switch (ic_message_block->cmd) と示されている行の InterCoreHandler 関数にブレークポイントを設定します

    Note

    ブレークポイントを設定する方法については、こちらの Visual Studio Code デバッグに関する記事を参照してください。

    The illustration shows how to set a breakpoint in the InterCoreHandler callback function.

ステップ 5: アプリのビルドとデプロイのプロセスを開始する

  1. [CMake: [Debug]: Ready](CMake: [デバッグ]: 準備完了) を Visual Studio Code のステータス バーから選択します。

  2. Visual Studio Code で F5 キーを押して、アプリケーションをビルド、デプロイ、開始し、Azure Sphere デバイスが実行されるようになったアプリケーションにリモート デバッガーをアタッチします。

ステップ 6: 高レベルおよびリアルタイム コア アプリケーションのデバッグ

  1. 高レベル アプリケーションが開始されると、リアルタイム コア アプリケーションに環境データが要求されます。

  2. 高レベル アプリケーションを閉じたり停止したりせずに、リアルタイム コアに接続したままにした Visual Studio Code のインスタンスに切り替えます。

  3. しばらくすると、リアルタイム コードに設定されたブレークポイントでコードの実行が停止します。

  4. リアルタイム コードのコードをステップ実行してから、F5 キーを押して実行を続けます。

  5. 高レベル アプリケーションに接続されている Visual Studio Code のインスタンスに戻ります。 InterCoreHandler 関数に設定したブレークポイントでコードの実行が停止しているはずです。

  6. このプロセスを数回繰り返してから、コードが引き続き実行されるようにブレークポイントを削除します

ステップ 7: 想定されるデバイスの動作

Avnet Azure Sphere スタート キット リビジョン 1 および 2 には、温度センサーが組み込まれています。 他のボードでは、摂氏 25 +/- 5 度の範囲でランダムな温度が生成されます。

Azure Sphere MT3620 スタート キット リビジョン 1 および 2

The illustration shows the Avnet Azure Sphere kit.

  • Azure に接続されている場合、WLAN LED は 5 秒ごとに点滅します。

  • 測定された温度が目標温度よりも低い場合、RGB LED は赤に、測定された温度が目標温度よりも高い場合は青に、測定温度が目標温度と同じである場合は緑になります。

Seeed Studio Azure Sphere MT3620 開発キット

The illustration shows the Seeed Studio Azure Sphere kit.

  • Azure に接続されている場合、WLAN LED は 5 秒ごとに点滅します。

  • 測定された温度が目標温度よりも低い場合、RGB LED は赤に、測定された温度が目標温度よりも高い場合は青に、測定温度が目標温度と同じである場合は緑になります。

Seeed Studio MT3620 Mini 開発ボード

The illustration shows the Seeed Studio Mini Azure Sphere kit.

  • Azure に接続されている場合、ユーザー LED は 5 秒ごとに点滅します。

ステップ 8: 目標温度を設定する

目標温度の設定は、部屋でのサーモスタットの設定と似ています。 目標温度のデバイス ツイン プロパティ メッセージが Azure Sphere に送信されて、そこで処理されます。

温度センサーが Azure Sphere で読み取られると、目標温度と比較されます。

  1. Azure IoT Explorer を開始します。

  2. [View devices in this hub](このハブのデバイスを表示する) をクリックします。

  3. デバイスをクリックします。

  4. サイド メニューから [IoT Plug and Play components](IoT プラグ アンド プレイ コンポーネント) をクリックします。

  5. [Default component](既定のコンポーネント) をクリックします。

  6. メニューから [Properties (writable)](プロパティ (書き込み可能)) を選択します。

  7. [Desired Temperature](目標温度) プロパティを設定します。

  8. [Update desired value]\(目標値の更新\) ボタンをクリックします。

Visual Studio を閉じる

ここで、Visual Studio を閉じます。