マルツTOP > APPLICATION LAB TOPページ おすすめ技術記事アーカイブス > エッジIoT設計にBluetooth5.3を迅速かつコスト効率よく追加する方法

エッジIoT設計にBluetooth5.3を迅速かつコスト効率よく追加する方法

著者 Jens Wallmann 氏
DigiKeyのヨーロッパ担当編集者の提供
2023-11-29

マルツ掲載日:2024-04-29



 絶え間ない競争により、IoTデバイスの開発者は、コストを削減し、堅牢で低消費電力かつ安全な通信を確保しながら、新しく革新的な製品を迅速に開発する必要に迫られています。

 従来のインテリジェントなIoTエンドノードは、エッジ処理を可能にするマイクロコントローラユニット(MCU)と、コネクティビティ用の無線ICで構成されていました。問題は、効果的なソリューションに必要な無線周波数(RF)のスキルが設計チームに欠けている場合に発生します。

 ワイヤレスIoTの設計を完成させ、認証を取得し、予定通りに量産に移行するためには、開発プロセスをさらに効率化する必要があります。開発プロセスの効率を高める1つの方法として、Bluetooth Low Energy(BLE)ワイヤレスインターフェースを統合した低消費電力MCUを使用することが挙げられます。

 この記事では、STMicroelectronicsの超低消費電力MCUシリーズのSTM32WBA52を紹介し、開発者がBLE評価ボード、開発ツール、アプリケーション例を使用してBLE5.3ワイヤレス設計を迅速に立ち上げ、実行する方法を示します。また、プログラミングとMCUの配線について簡単に説明します。

高いセキュリティレベルを備えた省電力ワイヤレスMCU

 BLE5.3の認証を受けたMCUシリーズのSTM32WBA52は、コスト効率の高いソリューションであり、経験の浅い開発者でもデバイスにワイヤレス通信を迅速に追加できます。100MHzクロックとTrustZoneテクノロジーを備えたArm Cortex-M33コアをベースとするこれらのマイクロコントローラは、高レベルのセキュリティを提供し、データや知的財産(IP)を保護し、ハッキングやデバイスの複製を防止します。

 STM32WBA52CEU6ワイヤレスMCUは、512Kバイトのフラッシュメモリと96KバイトのスタティックRAM(SRAM)を搭載しているのに対し、STM32WBA52CGU6には、1Mバイトのフラッシュメモリと128KバイトのSRAMを搭載しています。

 図1は、48UFQFNパッケージのICの機能スコープを示しています。ちなみに、最大20個の静電容量式タッチチャンネルにより、気密封止デバイスの操作が可能になります(メカニカルキーは不要です)。


図1:STM32WBA52の機能ブロック図では、統合されたBLE5.3無線、フラッシュとSRAM、セキュリティサポートが示されています。(画像提供:STMicroelectronics)

 BLEアプリケーションの実装とプログラミングは、豊富なSTM32Cubeエコシステムによってサポートされます。これには、STM32CubeIDE開発環境のほか、STM32CubeMXペリフェラルコンフィギュレータやコードジェネレータ、STM32CubeMonitorRFパフォーマンステスタ、人工知能(AI)向けのSTM32Cube.AIデスクトップ版およびクラウド版などのツールが含まれます。対応する評価ボードNUCLEO-WBA52CGによって試作を簡素化し、多くのBLEサンプルアプリケーションと自由に利用できるソースコードで検証を加速します。

デバイスとデータのセキュリティ

 STM32WBA52の製品ラインは、IoTセキュリティ基準であるPlatform Security Arm(PSA)認定レベル3と、Security Evaluation Standard for IoT Platforms Assurance Level 3(SESIP3)に準拠しています。サイバー保護は、セキュリティ分離、メモリ保護、改ざん防止、Arm TrustZoneアーキテクチャを備えたMCUのCortex-M33に基づくPSAセキュリティプログラムによって強化されています。

 Arm Cortex-M(TF-M)用のトラステッドファームウェアは、セキュアブート、セキュアファームウェアアップデート(X-CUBE-SBSFU)、暗号化、セキュアストレージ、ランタイム認証を含む、業界標準のPSA認定セキュリティフレームワークとPSA不変のRoot of Trust(RoT)に準拠しています。

統合無線機でBOMを最小化

 内蔵の超低消費電力無線モジュールは、1mW(dBm)RF出力電力を基準として+10デシベルを実現します。最大2Mbpsのデータレートにより、近距離(BLE 5.3)および長距離(Long Range)での信頼性の高い通信が可能になります。ディープスタンバイ低消費電力モードは、無線通信がアクティブなときに全体の電力を削減します。STM32WBA MCUは、最大20の同時接続をサポートします。

●無線モジュールの電気的性能特性

・BLE 5.3をサポートする2.4GHz RFトランシーバ
・RX感度:-96dBm(1Mbps BLE)
・プログラム可能な出力電力、1dBステップで最大+10dBm
・統合型バラン

高効率のエネルギー管理でバッテリを小型化

 STM32WBA52MCUは、STMicroelectronicsの低電力ダイレクトメモリアクセス(LPDMA)や、高速ウェイクアップ時間による柔軟な省電力状態など、多くの省エネ技術を備えています。これらの機能を組み合わせることで、MCUの消費電力を最大90%削減することができ、バッテリの大幅な小型化やバッテリ寿命の向上につながります。

●FlexPowerControlの電気的性能の特長

・1.71~3.6V電源
・140nAスタンバイモード(16本のウェイクアップピン)
・リアルタイムクロック(RTC)を備えた200nAスタンバイモード
・64KバイトSRAMを備えた2.4μAスタンバイモード
・64KバイトSRAMを備えた16.3μAストップモード
・45μA/MHzランモード(3.3V時)
・無線:受信7.4mA/0dBm時送信10.6mA

 さらに、Bluetooth5.3で低デューティサイクルと高デューティサイクルの切り替えを高速化し、旧バージョンよりもエネルギー効率を高くしています。

Bluetoothスタックとデータパケットのアーキテクチャ

 STM32WBA52のシングルコアArm Cortex-M33 MCUは、BLEスタック(コントローラとホスト)上のプロファイルやサービスを含むアプリケーションファームウェアの開発用に設計されています。

 MCUは、最下層の物理レイヤ(PHY)にある統合RFモジュールから、汎用属性プロファイル(GATT)および汎用アクセスプロファイル(GAP)へのデータフローを処理します(図2)。GAPはアドバタイジングと接続を定義・管理し、GATTはイン/アウトのデータ交換を定義・管理します。


図2:MCUは無線PHYからGATTとGAPへのデータフローを処理します。(画像提供:STMicroelectronics)

 BLEは、ビット列の固定フレーム構造として定義されたデータパケットを送信します。ユーザーデータ領域の長さは、27バイトから251バイトまで動的に変化します。

BLEアプリケーションの例

 STM32WBA MCU向けのオンライン百科事典STMicro-Wikiには、以下のようにBluetoothのさまざまな役割に関するアプリケーション例がいくつか掲載されています。

・アドバタイジング:BLE_Beacon
・センサ:BLE_HealthThermometer、BLE_HeartRate
・ブリッジ:BLE_SerialCom
・ルータ:BLE_p2pRouter
・データ:BLE_DataThroughput、BLE_p2pServer & Multi Slave BLE_p2pClient
・RFモニタ:BLE_TransparentMode
・無線でのファームウェアアップデート:BLE_Fuota

 デバイス設計者やプログラマは、自身のBLEプロジェクトに合わせて、対応するGitHubプロジェクトディレクトリからコンパイルしたバイナリをNUCLEOボードにフラッシュし、スマートフォンやデスクトップPCとのBluetooth接続を開始することができます。

 必要なプログラマソフトウェアであるSTM32CubeProgは、デバッグインターフェースとブートローダインターフェースの両方を通じて、デバイスメモリの読み出し、書き込み、検証を行います。

BLEサンプルである「Health Thermometer Sensor(健康体温計センサ)」の実行

 健康体温計プロファイル(HTP)は、Bluetooth Special Interest Group(SIG)によって定義されたGAPベースの低エネルギープロファイルです。Health Thermometer Collector(健康体温計コレクタ)と健康体温計センサを組み合わせて、さまざまなアプリケーションに接続し、データを交換します(図3)。


図3:センサ/サーバとしてのNUCLEOボードとコレクタ/クライアントとしてのスマートフォンの間のBLE通信。(画像提供:STMicroelectronics)

●健康体温計センサ

・体温を測定し、健康体温計サービスを通じて公開
・リモートデバイスによって識別されるデバイス情報サービスを含む
・GATTサーバである

●健康体温計コレクタ

・健康体温計センサが提供する情報にアクセスし、エンドユーザーに表示したり、不揮発性メモリに保存して分析したりすることが可能
・GATTクライアントである

 健康体温計のバイナリファイルがNUCLEOのMCUにフラッシュされたら、開発者は次のステップに従ってBLEアプリケーション例を実行する必要があります。

スマートフォンアプリの使用

1.スマートフォンにST BLE Toolboxをインストールします。このアプリは、ST BLEデバイスとの対話やデバッグに使用します。

2.健康体温計アプリケーションがフラッシュされたSTM32WBA NUCLEOボードの電源を入れます。

3.スマートフォンのBluetooth(BT)をオンにし、アプリで利用可能なBTデバイスをスキャンします。健康体温計を選択し、接続します。

ウェブブラウザインターフェースの使用

1.ブラウザの互換性を確認します。
  ・デスクトップコンピュータではChrome、Edge、またはOpera
  ・スマートフォンデバイスではChrome(Android)

2.健康体温計アプリケーションがフラッシュされたSTM32WBA NUCLEOボードの電源を入れます。

3.コンピュータでBluetoothを有効にします。

4.ブラウザでウェブページを開きます。

5.ウェブページ上部の[接続]ボタンをクリックし、デバイスリストから「HT_xx」を選択して[ペアリング]をクリックします。これでデバイスが接続されます。

6. [健康体温計]をクリックするとインターフェースが表示されます。

 表1には、健康体温計センサのサービス構成を示しています。128ビット長の汎用一意識別子(UUID)により、個々の特性やサービスが区別されます。


表1:「健康体温計センサ」のGAPに対するGATTサービスとそのUUID。(画像提供:STMicroelectronics)

 GitHubにある以下のJavaScriptシーケンスは、ウェブブラウザのインターフェースで異なるGATTデータスループットの特性をフィルタリングする方法を示しています(リスト1)。

[...]

// Filtering the different datathroughput characteristics
    props.allCharacteristics.map(element => {
        switch (element.characteristic.uuid) {
            case "00002a1c-0000-1000-8000-00805f9b34fb":
                IndicateCharacteristic = element; // Temperature Measurement (TEMM)
                IndicateCharacteristic.characteristic.startNotifications();
                IndicateCharacteristic.characteristic.oncharacteristicvaluechanged =
                temperatureMeasurement;
                break;
            case "00002a1d-0000-1000-8000-00805f9b34fb":
                ReadCharacteristic = element; // Temperature Type
                readTemperatureType();
                break;
            case "00002a1e-0000-1000-8000-00805f9b34fb":
                NotifyCharacteristic = element; //Immediate Temperature
                NotifyCharacteristic.characteristic.startNotifications();
                NotifyCharacteristic.characteristic.oncharacteristicvaluechanged = notifHandler;
                break;
            case "00002a21-0000-1000-8000-00805f9b34fb":
                ReadWriteIndicateCharacteristic = element; // Measurement Interval
                readMeasurementInterval();
                break;
            default:
                console.log("# No characteristics found..");
        }
    });

[...]
リスト1:このJavaScriptシーケンスにより、表1にあるGATTデータスループットのさまざまな特性をフィルタリングします。(リスト提供:GitHub、STMicroelectronics)

BLEスタックプロセスのトレース

 NUCLEO-WBA52CGは、ST-LINK/V3インサーキットデバッガおよびプログラマを内蔵しており、シリアルインターフェースを介してPCと通信するためのSTM32仮想COMポートドライバをサポートしています。どのソフトウェア端末でも、このシリアル通信ポートを開き、APP_DBG_MSG関数によってコード内で生成された短いテキストメッセージを表示することができます。

 プロジェクト内のトレースは、app_conf.hファイルで有効にする必要があります。

#define CFG_DEBUG_APP_TRACE (1)

 または、スマートフォンアプリ「SE BLE Toolbox」の[アプリケーションログ]タブでトレース機能を利用することもできます。

BLE5.3アプリケーションのプログラミング

 STMはSTM32WBA52 MCUのプログラミング用に、ハードウェア抽象化レイヤ(HAL)、低レイヤのアプリケーションプログラミングインタフェース(API)、CMSIS、ファイルシステム、RTOS、BLE/802.15.4、Thread、Zigbeeスタック、STMicroelectronicsボード上で動作するサンプルで構成されるSTM32CubeWBA-Packageをまとめました。

 それぞれのNUCLEO-WBA52CG BLEアプリケーション例には、IAR Embedded Workbench for Arm(EWARM)、Keil MDK-ARM、STM32CubeIDEという3つの開発環境(IDE)用のプロジェクト構造のセットアップが含まれています。

 健康体温計の例では、プロジェクトディレクトリツリーの特定のファイル(図4左の枠内)だけがGATTサービスを生成します。表1の「健康体温計サービス」(hts)と「デバイス情報サービス」(dis)という2つのルーチンが並行して実行されます(図4の右下)。


図4:プログラマは、フレーム化されたコードファイルに独自のGATTコンテンツを追加できます(左)。これらのファイルはGATTサービスを生成します(右)。(画像提供:STMicroelectronics)

 プログラマは、このソースコードを自身のプロジェクトに使用し、「USER CODE BEGIN/USER CODE END」と書かれた部分にGATTコンテンツを追加することができます(リスト2)。ファイルhts.cの初期化シーケンスにより、UUID 0x2A1Cを持つGATT特性である温度測定(TEMM)が生成されます。

[...]
    void HTS_Init(void)
    {
    [...]

    /* TEMM, Temperature Measurement */

    uuid.Char_UUID_16 = 0x2a1c;
    ret = aci_gatt_add_char(HTS_Context.HtsSvcHdle,
                                        UUID_TYPE_16,
                                        (Char_UUID_t *) &uuid,
                                        SizeTemm,
                                        CHAR_PROP_INDICATE,
                                        ATTR_PERMISSION_NONE,
                                        GATT_DONT_NOTIFY_EVENTS,
                                        0x10,
                                        CHAR_VALUE_LEN_VARIABLE,
                                        &(HTS_Context.TemmCharHdle));
    if (ret != BLE_STATUS_SUCCESS)
    {
        APP_DBG_MSG(" Fail : aci_gatt_add_char command : TEMM, error code: 0x%2X\n", ret);
    }
    else
    {
        APP_DBG_MSG(" Success: aci_gatt_add_char command : TEMM\n");
    }

    /* USER CODE BEGIN SVCCTL_InitService2Char1 */

    /* USER CODE END SVCCTL_InitService2Char1 */

    [...]
    }
[...]
リスト2:ファイルhts.cの初期化シーケンスは、GATT特性であるTEMMを生成します。(画像提供:GitHub、STMicroelectronics)

外部コンポーネントの要件

 STM32WBA52ワイヤレスMCUでは、Bluetooth機能による基本的な動作のために必要な外部コンポーネントはわずかです。これには、電圧供給用のコンデンサ、水晶発振器、インピーダンスマッチングを施したプリント回路基板(プリント基板)アンテナ、高調波フィルタなどが含まれます(図5)。


図5:Bluetoothの場合、STM32WBA52のRF端子はインピーダンス整合ネットワーク、高調波フィルタ、アンテナに接続されます。(画像提供:STMicroelectronics)

まとめ

 ワイヤレスIoTデバイスの開発者は、急速に進化する市場で競争するために、設計サイクルを短縮してコストを下げる必要があります。しかし、RF設計は簡単ではありません。STM32WBA52 MCUは、BLE 5.3インターフェースを内蔵しているため、開発者は迅速かつコスト効率よく市場に参入することができます。

 あらかじめプログラムされたBLEスタックといくつかのBLEアプリケーション例により、GATTコンテンツを簡単に挿入できるカスタムプロジェクトのプログラミングテンプレートが形成されています。





免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、DigiKey Electronicsの意見、信念および視点またはDigiKey Electronicsの公式な方針を必ずしも反映するものではありません。

 

このページのコンテンツはDigiKey社より提供されています。
英文でのオリジナルのコンテンツはDigiKeyサイトでご確認いただけます。


DigiKey社の全製品は 1個からマルツオンラインで購入できます

※製品カテゴリー総一覧はこちら



ODM、OEM、EMSで定期購入や量産をご検討のお客様へ【価格交渉OK】

毎月一定額をご購入予定のお客様や量産部品としてご検討されているお客様には、マルツ特別価格にてDigiKey社製品を供給いたします。
条件に応じて、マルツオンライン表示価格よりもお安い価格をご提示できる場合がございます。
是非一度、マルツエレックにお見積もりをご用命ください。


ページトップへ