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

著者 Jens Wallmann

DigiKeyのヨーロッパ担当編集者の提供

絶え間ない競争により、モノのインターネット(IoT)デバイスの開発者は、コストを削減し、堅牢で低消費電力かつ安全な通信を確保しながら、新しく革新的な製品を迅速に開発する必要に迫られています。従来のインテリジェントなIoTエンドノードは、エッジ処理を可能にするマイクロコントローラユニット(MCU)と、コネクティビティ用の無線ICで構成されていました。問題は、効果的なソリューションに必要な無線周波数(RF)のスキルが設計チームに欠けている場合に発生します。

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

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

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

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

STM32WBA52CEU6ワイヤレスMCUは、512Kバイトのフラッシュメモリと96KバイトのスタティックRAM(SRAM)を搭載しているのに対し、STM32WBA52CGU6には、1Mバイトのフラッシュメモリと128KバイトのSRAMを搭載しています。図1は、48 UFQFNパッケージのICの機能スコープを示しています。ちなみに、最大20個の静電容量式タッチチャンネルにより、気密封止デバイスの操作が可能になります(メカニカルキーは不要です)。

STMicroelectronicsのSTM32WBA52の機能ブロック図図1:STM32WBA52の機能ブロック図では、統合されたBLE 5.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
  • 統合型バラン

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

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

FlexPowerControlの電気的性能の特長:

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

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

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

STM32WBA52のシングルコアArm Cortex-M33 MCUは、BLEスタック(コントローラとホスト)上のプロファイルやサービスを含むアプリケーションファームウェアの開発用に設計されています。MCUは、最下層の物理レイヤ(PHY)にある統合RFモジュールから、汎用属性プロファイル(GATT)および汎用アクセスプロファイル(GAP)へのデータフローを処理します(図2)。GAPはアドバタイジングと接続を定義・管理し、GATTはイン/アウトのデータ交換を定義・管理します。

無線PHYからGATTとGAPへのデータフローを処理するMCUの画像図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)。

NUCLEOボードとスマートフォンの間のBLE通信を示す画像(クリックして拡大)図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. ブラウザでウェブページhttps://applible.github.io/Web_Bluetooth_App_WBA/を開きます。
  5. ウェブページ上部の[接続]ボタンをクリックし、デバイスリストから「HT_xx」を選択して[ペアリング]をクリックします。これでデバイスが接続されます。
  6. [健康体温計]をクリックするとインターフェースが表示されます。

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

サービス 特性 プロパティ UUID サイズ
健康体温計サービス 0x1809
温度測定 Indicate 0x2A1C 13
温度タイプ Read 0x2A1D 1
中間温度 Notify 0x2A1E 13
測定間隔 Read、Write、Indicate 0x2A21 2
デバイス情報サービス 0x180A
メーカー名文字列 Read 0x2A29 32
型番文字列 Read 0x2A24 32
システムID Read 0x2A23 8

表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」の[アプリケーションログ]タブでトレース機能を利用することもできます。

BLE 5.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の右下)。

プログラマがフレーム化されたコードファイルに独自のGATTコンテンツを追加できることを示す図(クリックして拡大)図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)。

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

まとめ

ワイヤレスIoTデバイスの開発者は、急速に進化する市場で競争するために、設計サイクルを短縮してコストを下げる必要があります。しかし、RF設計は簡単ではありません。STM32WBA52 MCUは、BLE 5.3インターフェースを内蔵しているため、開発者は迅速かつコスト効率よく市場に参入することができます。あらかじめプログラムされたBLEスタックといくつかのBLEアプリケーション例により、GATTコンテンツを簡単に挿入できるカスタムプロジェクトのプログラミングテンプレートが形成されています。

DigiKey logo

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

著者について

Jens Wallmann

Jens Wallmann

Jens Wallmann氏はフリーランスのエディターで、エレクトロニクス関連の出版物に紙媒体、オンラインを問わず寄稿しています。電気エンジニア(通信工学)として、また産業用電子工学エンジニアとして、計測技術、車載用電子機器、プロセス産業、高周波を中心としたエレクトロニクス開発に25年以上携わってきました。

出版者について

DigiKeyのヨーロッパ担当編集者