Bluetooth Low Energy デモアプリケーション - 無料RTOS

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Bluetooth Low Energy デモアプリケーション

重要

このデモは、非推奨の Amazon-FreeRTOS リポジトリでホストされています。新しいプロジェクトを作成するときは、ここから始めることをお勧めします。現在非推奨の Amazon-FreeRTOS リポジトリをベースにした既存の FreeRTOS プロジェクトが既にある場合は、「Amazon-FreeRTOS Github リポジトリ移行ガイド」を参照してください。

概要

FreeRTOS Bluetooth Low Energy には 3 つのデモアプリケーションがあります。

  • MQTT over Bluetooth Low Energy デモ

    このアプリケーションは、MQTT over Bluetooth Low Energy サービスの使用方法を示します。

  • Wi-Fi プロビジョニング デモ

    このアプリケーションは、Bluetooth Low Energy Wi-Fi プロビジョニングサービスの使用方法を示します。

  • 汎用属性サーバー デモ

    このアプリケーションは、FreeRTOS Bluetooth Low Energy ミドルウェア API を使用して単純な GATT サーバーを作成する方法を示します。

注記

FreeRTOS デモをセットアップして実行するには、無料利用開始RTOS の手順に従います。

前提条件

これらのデモを観るには、Bluetooth Low Energy 機能を備えたマイクロコントローラーが必要です。また、FreeRTOS Bluetooth デバイス用の iOS SDK または FreeRTOS Bluetooth デバイス用の Android SDK も必要です。

FreeRTOS Bluetooth Low Energy 用の AWS IoT と Amazon Cognito のセットアップ

MQTT AWS IoT 間でデバイスを に接続するには、 AWS IoT と Amazon Cognito を設定する必要があります。

を設定するには AWS IoT
  1. https://aws.amazon.com/ で AWS アカウントを設定します。

  2. AWS IoT コンソールを開き、ナビゲーションペインから [管理]、[モノ] の順に選択します。

  3. [作成]、[単一のモノを作成する] の順に選択します。

  4. デバイスの名前を入力し、[次へ] を選択します。

  5. モバイルデバイスを使用して、マイクロコントローラーをクラウドに接続する場合は、[証明書なしでモノを作成] を選択します。Mobile SDK は Amazon Cognito を使用してデバイス認証を行っているため、Bluetooth Low Energy を使用するデモのためにデバイス証明書を作成する必要はありません。

    Wi-Fi を使用してマイクロコントローラーをクラウドディレクトリに接続する場合は、[証明書の作成]、[有効化] の順に選択し、モノの証明書、パブリックキー、プライベートキーをダウンロードします。

  6. 登録したモノのリストから、先ほど作成したモノを選択し、モノのページから [操作] を選択します。 AWS IoT REST API エンドポイントを書き留めます。

設定の詳細については、「 の開始方法 AWS IoT」を参照してください。

Amazon Cognito ユーザープールを作成するには
  1. Amazon Cognito コンソールを開き、[Manage User Pools] (ユーザープールの管理) を選択します。

  2. [Create a user pool] を選択します。

  3. ユーザープールに名前を付け、[デフォルトを確認する] を選択します。

  4. ナビゲーションペインから、[アプリクライアント]、[アプリクライアントの追加] の順に選択します。

  5. アプリクライアントの名前を入力し、[アプリクライアントの作成] を選択します。

  6. ナビゲーションバーから、[Review]、[プールの作成] の順に選択します。

    ユーザープールの [全般設定] に表示されるプール ID を書き留めます。

  7. ナビゲーションペインから、[アプリクライアント]、[詳細を表示] の順に選択します。アプリクライアント ID およびアプリクライアントシークレットを書き留めます。

Amazon Cognito アイデンティティプールを作成するには
  1. Amazon Cognito コンソールを開き、[Manage Identity Pools] (ID プールの管理) を選択します。

  2. ID プールの名前を入力します。

  3. [認証プロバイダー] を展開して [Cognito] を選択し、ユーザープール ID およびアプリクライアント ID を入力します。

  4. [プールの作成] を選択します。

  5. [詳細を表示] を展開し、2 種類の IAM ロール名を書き留めます。[Allow] (許可) を選択し、認証済み ID および未認証 ID の Amazon Cognito へのアクセスを認可する IAM ロールを作成します。

  6. [Edit identity pool] (ID プールの編集) をクリックします。ID プールの ID を書き留めます。形式は us-west-2:12345678-1234-1234-1234-123456789012 です。

Amazon Cognito のセットアップの詳細については、Amazon Cognito の使用開始方法を参照してください。

IAM ポリシーを作成して、認証済み ID にアタッチするには
  1. IAM コンソールを開き、ナビゲーションペインで [Roles] (ロール) を選択します。

  2. 認証された ID のロールを検索して選択し、[Attach policies (ポリシーのアタッチ)]、[Add inline policy (インラインポリシーの追加)] の順に選択します。

  3. [JSON] タブを選択し、次の JSON を貼り付けます。

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "iot:AttachPolicy", "iot:AttachPrincipalPolicy", "iot:Connect", "iot:Publish", "iot:Subscribe", "iot:Receive", "iot:GetThingShadow", "iot:UpdateThingShadow", "iot:DeleteThingShadow" ], "Resource":[ "*" ] } ] }
  4. [ポリシーの確認] を選択してポリシーの名前を入力し、[ポリシーの作成] を選択します。

AWS IoT と Amazon Cognito の情報は手元に保管してください。 AWS クラウドでモバイルアプリケーションを認証するには、エンドポイントと IDs が必要です。

Bluetooth Low Energy 用の FreeRTOS 環境をセットアップする

ご利用の環境をセットアップするには、Bluetooth Low Energy ライブラリ を使用してマイクロコントローラーに FreeRTOS をダウンロードし、FreeRTOS Bluetooth デバイス用 Mobile SDK をご利用のモバイルデバイスにダウンロードして設定する必要があります。

FreeRTOS Bluetooth Low Energy でマイクロコントローラーの環境をセットアップするには
  1. から FreeRTOS をダウンロードまたはクローンしますGitHub。手順については、README.md ファイルを参照してください。

  2. マイクロコントローラーに FreeRTOS をセットアップします。

    FreeRTOS の資格を満たしたマイクロコントローラーで FreeRTOS の使用を開始する方法については、ご利用のボードの FreeRTOS の使用開始ガイドを参照してください。

    注記

    デモは、FreeRTOS と移植された FreeRTOS Bluetooth Low Energy ライブラリを搭載した Bluetooth Low Energy 対応マイクロコントローラーで実行できます。現在、FreeRTOS MQTT over Bluetooth Low Energy デモプロジェクトは、以下の Bluetooth Low Energy 対応デバイスに完全に移植されます。

共通コンポーネント

FreeRTOS デモアプリケーションには、2 つの共通のコンポーネントが含まれています。

  • Network Manager

  • Bluetooth Low Energy Mobile SDK デモアプリケーション

Network Manager

Network Manager は、マイクロコントローラーのネットワーク接続を管理します。demos/network_manager/aws_iot_network_manager.c の FreeRTOS ディレクトリにあります。Network Manager が Wi-Fi と Bluetooth Low Energy の両方に対応している場合、デフォルトでは Bluetooth Low Energy を使ってデモが開始されます。Bluetooth Low Energy 接続が中断され、ボードが Wi-Fi に対応している場合、Network Manager は使用可能な Wi-Fi 接続に切り替えてネットワークからの切断を回避します。

Network Manager でネットワーク接続タイプを有効にするには、vendors/vendor/boards/board/aws_demos/config_files/aws_iot_network_config.hconfigENABLED_NETWORKS パラメータにネットワーク接続タイプを追加します (vendor はベンダーの名前で、board はデモを実行するために使用中のボードの名前です)。

たとえば、Bluetooth Low Energy と Wi-Fi の両方が有効な場合、aws_iot_network_config.h にある #define configENABLED_NETWORKS で始まる行は次のようになります。

#define configENABLED_NETWORKS ( AWSIOT_NETWORK_TYPE_BLE | AWSIOT_NETWORK_TYPE_WIFI )

現在サポートされているネットワーク接続タイプのリストを取得するには、aws_iot_network.h#define AWSIOT_NETWORK_TYPE から始まる行を参照してください。

FreeRTOS Bluetooth Low Energy Mobile SDK デモアプリケーション

FreeRTOS Bluetooth Low Energy Mobile SDK デモアプリケーションは、 GitHub の Android SDK for FreeRTOS Bluetooth デバイスamazon-freertos-ble-android-sdk/appと の iOS SDK for FreeRTOS Bluetooth デバイスにありますamazon-freertos-ble-ios-sdk/Example/AmazonFreeRTOSDemo。この例では、iOS バージョンのデモモバイルアプリケーションのスクリーンショットを使用します。

注記

iOS デバイスを使用している場合は、デモ用モバイルアプリケーションを構築するために Xcode が必要です。Android デバイスを使用している場合、Android Studio を使用してデモ用モバイルアプリケーションを構築できます。

iOS SDK デモアプリケーションを設定するには

設定変数を定義する場合は、設定ファイルで指定されているプレースホルダー値の形式を使用します。

  1. FreeRTOS Bluetooth デバイス用の iOS SDK がインストールされていることを確認します。

  2. amazon-freertos-ble-ios-sdk/Example/AmazonFreeRTOSDemo/ から次のコマンドを発行します。

    $ pod install
  3. Xcode で amazon-freertos-ble-ios-sdk/Example/AmazonFreeRTOSDemo/AmazonFreeRTOSDemo.xcworkspace プロジェクトを開き、署名している開発者アカウントを自分のアカウントに変更します。

  4. リージョンに AWS IoT ポリシーを作成します (まだ作成していない場合)。

    注記

    このポリシーは、Amazon Cognito 認証済み ID 用に作成された IAM ポリシーとは異なります。

    1. AWS IoT コンソールを開きます。

    2. ナビゲーションペインで、[Secure] (保護) を選択し、[Policies] (ポリシー) を選択してから [Create] (作成) を選択します。ポリシーを識別するための名前を入力します。[Add statements] (ステートメントを追加) セクションで、[Advanced mode] (アドバンストモード) を選択します。次の JSON をポリシーエディタウィンドウにコピーして貼り付けます。aws-regionaws-account を自分の AWS リージョンとアカウント ID に置き換えます。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Connect", "Resource":"arn:aws:iot:region:account-id:*" }, { "Effect": "Allow", "Action": "iot:Publish", "Resource": "arn:aws:iot:region:account-id:*" }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": "arn:aws:iot:region:account-id:*" }, { "Effect": "Allow", "Action": "iot:Receive", "Resource": "arn:aws:iot:region:account-id:*" } ] }
    3. [Create] (作成) を選択します。

  5. amazon-freertos-ble-ios-sdk/Example/AmazonFreeRTOSDemo/AmazonFreeRTOSDemo/Amazon/AmazonConstants.swift を開き、次の変数を再定義します。

    • region: AWS リージョン。

    • iotPolicyName: AWS IoT ポリシー名。

    • mqttCustomTopic: 発行する MQTT トピック。

  6. amazon-freertos-ble-ios-sdk/Example/AmazonFreeRTOSDemo/AmazonFreeRTOSDemo/Support/awsconfiguration.json を開きます。

    CognitoIdentity で、次の変数を再定義します。

    • PoolId: Amazon Cognito ID プール ID。

    • Region: AWS リージョン。

    CognitoUserPool で、次の変数を再定義します。

    • PoolId: Amazon Cognito ユーザープール ID。

    • AppClientId: アプリクライアント ID。

    • AppClientSecret: アプリクライアントシークレット。

    • Region: AWS リージョン。

Android SDK デモアプリケーションを設定するには

設定変数を定義する場合は、設定ファイルで指定されているプレースホルダー値の形式を使用します。

  1. FreeRTOS Bluetooth デバイス用の Android SDK がインストールされていることを確認します。

  2. リージョンに AWS IoT ポリシーを作成します (まだ作成していない場合)。

    注記

    このポリシーは、Amazon Cognito 認証済み ID 用に作成された IAM ポリシーとは異なります。

    1. AWS IoT コンソールを開きます。

    2. ナビゲーションペインで、[Secure] (保護) を選択し、[Policies] (ポリシー) を選択してから [Create] (作成) を選択します。ポリシーを識別するための名前を入力します。[Add statements] (ステートメントを追加) セクションで、[Advanced mode] (アドバンストモード) を選択します。次の JSON をポリシーエディタウィンドウにコピーして貼り付けます。aws-regionaws-account を自分の AWS リージョンとアカウント ID に置き換えます。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Connect", "Resource":"arn:aws:iot:region:account-id:*" }, { "Effect": "Allow", "Action": "iot:Publish", "Resource": "arn:aws:iot:region:account-id:*" }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": "arn:aws:iot:region:account-id:*" }, { "Effect": "Allow", "Action": "iot:Receive", "Resource": "arn:aws:iot:region:account-id:*" } ] }
    3. [Create] (作成) を選択します。

  3. https://github.com/aws/amazon-freertos-ble-android-sdk/blob/master/app/src/main/java/software/amazon/freertos/demo/DemoConstants.java を開き、次の変数を再定義します。

    • AWS_IOT_POLICY_NAME: AWS IoT ポリシー名。

    • AWS_IOT_REGION: AWS リージョン。

  4. https://github.com/aws/amazon-freertos-ble-android-sdk/blob/master/app/src/main/res/raw/awsconfiguration.json を開きます。

    CognitoIdentity で、次の変数を再定義します。

    • PoolId: Amazon Cognito ID プール ID。

    • Region: AWS リージョン。

    CognitoUserPool で、次の変数を再定義します。

    • PoolId: Amazon Cognito ユーザープール ID。

    • AppClientId: アプリクライアント ID。

    • AppClientSecret: アプリクライアントシークレット。

    • Region: AWS リージョン。

Bluetooth Low Energy 経由でマイクロコントローラーとの安全な接続を検出して確立するには
  1. マイクロコントローラーとモバイルデバイスを安全にペアリングするには (ステップ 6)、入出力機能 ( など) の両方を備えたシリアルターミナルエミュレータが必要です TeraTerm。ターミナルエミュレーターをインストールする の手順に従って、ターミナルをシリアル接続でボードに接続するよう設定します。

  2. マイクロコントローラーで Bluetooth Low Energy デモプロジェクトを実行します。

  3. モバイルデバイスで Bluetooth Low Energy Mobile SDK デモアプリケーションを実行します。

    コマンドラインから Android SDK のデモアプリケーションを開始するには、次のコマンドを実行します。

    $ ./gradlew installDebug
  4. Bluetooth Low Energy Mobile SDK デモアプリの [デバイス] にマイクロコントローラーが表示されていることを確認します。

    一意の識別子を持つ ESP32 デバイスを示すデバイス管理ページ。
    注記

    このリストには、 FreeRTOS を搭載したすべてのデバイスと、範囲内にあるデバイス情報サービス (freertos/.../device_information) が表示されます。

  5. デバイスのリストからマイクロコントローラーを選択します。アプリケーションがボードとの接続を確立し、接続されたデバイスの横に緑色の線が表示されます。

    ESP32 デバイス ID が表示されます。

    マイクロコントローラーとの接続を切断するには、その線を左へドラッグします。

    ESP32 デバイス ID と別のデバイス ID を示すデバイスページ。
  6. プロンプトが表示されたら、マイクロコントローラとモバイルデバイスをペアリングします。

    FreeRTOS ボード

    BLE デバイスの切断、MQTT サービスの切断、アドバタイズ開始、リモートデバイスへの BLE 接続、数値比較のプロンプトを示すコンソール出力。

    モバイルデバイス

    デバイス「ESP32」の Bluetooth ペアリングリクエストダイアログ。「ESP32」で確認するためのコード「465520」が表示されています。

    数値比較用のコードが両方のデバイスで同じである場合は、デバイスをペアリングします。

注記

Bluetooth Low Energy Mobile SDK デモアプリケーションは、ユーザー認証に Amazon Cognito を使用します。Amazon Cognito ユーザーおよび ID プールが設定されていることと、認証済み ID に IAM ポリシーがアタッチされていることを確認します。

MQTT over Bluetooth Low Energy

MQTT over Bluetooth Low Energy デモでは、マイクロコントローラーは MQTT プロキシを介してメッセージを AWS クラウドに発行します。

デモ MQTT トピックをサブスクライブするには
  1. AWS IoT コンソールにサインインします。

  2. ナビゲーションペインで、[テスト] を選択し、[MQTT テストクライアント] を選択して MQTT クライアントを開きます。

  3. [Subscription topic] (トピックのサブスクリプション) で thing-name/example/topic1 と入力し、[Subscribe to topic] (トピックへのサブスクライブ) を選択します。

Bluetooth Low Energy を使用してマイクロコントローラーとモバイルデバイスのペアリングを行う場合、MQTT メッセージは、モバイルデバイスの Bluetooth Low Energy Mobile SDK デモアプリケーションを通じてルーティングされます。

Bluetooth Low Energy 経由でデモを有効にするには
  1. vendors/vendor/boards/board/aws_demos/config_files/aws_demo_config.h を開き、CONFIG_MQTT_BLE_TRANSPORT_DEMO_ENABLED を定義します。

  2. を開きdemos/include/aws_clientcredential.h、 AWS IoT ブローカーエンドポイントclientcredentialMQTT_BROKER_ENDPOINTで を設定します。BLE マイクロコントローラーデバイスのモノの名前で clientcredentialIOT_THING_NAME を設定します。 AWS IoT ブローカーエンドポイントは、左側のナビゲーションペインで 設定 を選択して AWS IoT コンソールから取得するか、 コマンド を実行して CLI から取得できますaws iot describe-endpoint --endpoint-type=iot:Data-ATS

    注記

    AWS IoT ブローカーエンドポイントとモノの名前はどちらも、シークレットアイデンティティとユーザープールが設定されているのと同じリージョンに存在する必要があります。

デモを実行するには
  1. マイクロコントローラーでデモプロジェクトを構築し、実行します。

  2. ボードとモバイルデバイスが、FreeRTOS Bluetooth Low Energy Mobile SDK デモアプリケーション を使ってペアリングされていることを確認します。

  3. デモモバイルアプリの [デバイス] リストからマイクロコントローラーを選択し、[MQTT プロキシ] を選択して MQTT プロキシ設定を開きます。

    以下の MQTT Proxy、Network Config、カスタム GATT MQTT オプションを含む 3 つの ESP32 デバイス IDs のリスト。
  4. MQTT プロキシを有効にすると、thing-name/example/topic1 トピックに MQTT メッセージが表示され、データが UART ターミナルに出力されます。

Wi-Fi プロビジョニング

Wi-Fi プロビジョニングは、Bluetooth Low Energy 経由でモバイルデバイスからマイクロコントローラーに Wi-Fi ネットワーク認証情報を安全に送信できる FreeRTOS Bluetooth Low Energy サービスです。Wi-Fi プロビジョニングサービスのソースコードは、freertos/.../wifi_provisioning にあります。

注記

Wi-Fi プロビジョニングデモは、現在 Espressif ESP32-DevKitC でサポートされています。

デモを有効化するには
  1. Wi-Fi プロビジョニングサービスを有効にします。vendors/vendor/boards/board/aws_demos/config_files/iot_ble_config.h を開き、#define IOT_BLE_ENABLE_WIFI_PROVISIONING1 に設定します (vendor にはベンダーの名前、board にはデモの実行に使用しているボードの名前が入ります)。

    注記

    Wi-Fi プロビジョニングサービスはデフォルトでは無効になっています。

  2. Bluetooth Low Energy と Wi-Fi の両方を有効にするよう Network Manager を設定します。

デモを実行するには
  1. マイクロコントローラーでデモプロジェクトを構築し、実行します。

  2. マイクロコントローラーとモバイルデバイスが、FreeRTOS Bluetooth Low Energy Mobile SDK デモアプリケーション を使ってペアリングされていることを確認します。

  3. デモモバイルアプリの [Devices (デバイス)] リストからマイクロコントローラーを選択し、次に [Network Config (ネットワーク構成)] を選択してネットワーク構成設定を開きます。

    以下の MQTT Proxy、Network Config、カスタム GATT MQTT オプションを含む 3 つの ESP32 デバイス IDs のリスト。
  4. ボードの [Network Config (ネットワーク構成)] を選択した後、マイクロコントローラーが近隣にあるネットワークのリストをモバイルデバイスに送信します。[Scanned Networks (スキャンされたネットワーク)] のリストに利用可能な Wi-Fi ネットワークが表示されます。

    ESP32 デバイス管理インターフェイスには、保存されたネットワークがなく、スキャンされた 2 つのオープン Wi-Fi ネットワークが表示されます。1 つは WPA2 セキュリティで RSSI が -29、もう 1 つはオープンセキュリティで RSSI が -50 です。

    [Scanned Networks (スキャンされたネットワーク)] のリストからネットワークを選択し、必要に応じて SSID とパスワードを入力します。

    空のパスワードフィールド、キャンセルおよび保存ボタンがある Wi-Fi ネットワークパスワードエントリダイアログボックス。

    マイクロコントローラーがネットワークに接続し、ネットワークを保存します。ネットワークが [Saved Networks (保存されたネットワーク)] に表示されます。

    保存されたネットワークとスキャンされた WiFi ネットワークを示すネットワークインターフェイス。一方は WPA2 で保護され、もう一方はオープンで、信号強度インジケータが付いています。

デモモバイルアプリには複数のネットワークを保存できます。アプリケーションとデモを再起動すると、[Saved Networks (保存されたネットワーク)] の上から順に、最初に利用可能なネットワークに接続します。

ネットワークの優先順位を変更したり、ネットワークを削除したりするには、[Network Configuration (ネットワーク構成)] ページで [Editing Mode (編集モード)] を選択します。ネットワークの優先順位を変更するには、該当するネットワークの右側を選択し、上下にドラッグします。ネットワークを削除するには、該当するネットワークの左側にある赤色のボタンを選択します。

保存されたネットワーク、優先度を削除または変更するための編集オプション、スキャンされたネットワークを示す Wifi ネットワーク設定画面。

汎用属性サーバー

この例では、マイクロコントローラーにあるデモの Generic Attributes (GATT) サーバーアプリケーションが単純なカウンター値をFreeRTOS Bluetooth Low Energy Mobile SDK デモアプリケーション に送信します。

Bluetooth Low Energy Mobile SDK を使用すると、モバイルデバイス用に独自の GATT クライアントを作成することができます。このクライアントは、マイクロコントローラー上の GATT サーバーに接続し、デモモバイルアプリケーションと並行して実行されます。

デモを有効化するには
  1. Bluetooth Low Energy GATT デモを有効にします。vendors/vendor/boards/board/aws_demos/config_files/iot_ble_config.h (vendor はベンダーの名前で、board はデモの実行に使用中のボードの名前です) で、define ステートメントのリストに #define IOT_BLE_ADD_CUSTOM_SERVICES ( 1 ) を追加します。

    注記

    デフォルトでは、Bluetooth Low Energy GATT デモは無効になっています。

  2. freertos/vendors/vendor/boards/board/aws_demos/config_files/aws_demo_config.h を開き、#define CONFIG_CORE_MQTT_MUTUAL_AUTH_DEMO_ENABLED をコメントアウトして CONFIG_BLE_GATT_SERVER_DEMO_ENABLED を定義します。

デモを実行するには
  1. マイクロコントローラーでデモプロジェクトを構築し、実行します。

  2. ボードとモバイルデバイスが、FreeRTOS Bluetooth Low Energy Mobile SDK デモアプリケーション を使ってペアリングされていることを確認します。

  3. アプリの [デバイス] リストからボードを選択し、[MQTT プロキシ] を選択して MQTT プロキシオプションを開きます。

    以下の MQTT Proxy、Network Config、カスタム GATT MQTT オプションを含む 3 つの ESP32 デバイス IDs のリスト。
  4. [Devices (デバイス)] リストに戻ってボードを選択し、次に [Custom GATT MQTT (カスタム GATT MQTT)] を選択してカスタムの GATT サービスオプションを開きます。

  5. [Start Counter (カウンターの開始)] を選択して your-thing-name/example/topic MQTT トピックへのデータの発行を開始します。

    MQTT プロキシを有効にした後、your-thing-name/example/topic トピックに Hello World と増分カウンターメッセージが表示されます。