開発キットと既製のアドオンボードでBluetooth IoTアプリケーションのプロトタイプを迅速に作成
DigiKeyの北米担当編集者の提供
2021-07-14
スマート接続製品の需要が高まると、多数のコンセプトを迅速にIoTアプリケーションで実用化できる開発者には、幅広いチャンスの到来となります。エネルギー効率の高いプロセッサ、ワイヤレス接続オプション、幅広いハードウェア周辺機器が利用可能になったことで、適切な低消費電力でプロダクションレディな設計を実装するための強固な基盤が実現できました。
しかし、製品定義の初期段階では、同一クラスのプロセッサ、接続サブシステム、周辺機器をベースにしたラピッドプロトタイプを構築するための柔軟な開発プラットフォームが必要です。実用的なプロトタイプを素早く作成し、簡単に機能を追加できる機能は、コンセプトの初期段階での概念実証や、カスタムソフトウェアの開発をサポートするために不可欠です。
この記事では、開発者がSilicon Labsのハードウェアとソフトウェアを使用して、すぐに入手可能な幅広い既製のアドオンボードを使用して、エネルギー効率に特化したコネクテッドIoTデバイスのプロトタイプを迅速に構築する方法を紹介しています。
ラピッドプロトタイピングの実現
バッテリ駆動のワイヤレスIoTデバイスの新たな可能性を追求していると、開発者は開発プラットフォームの構築に伴うさまざまな詳細事項によって行き詰っていることに気付くことがあります。サブシステムが統合された先進のシステムオンチップ(SoC)デバイスは、そのようなプラットフォームの中核となることができますが、開発者はそれらを中心に完全なシステムを構築する必要があります。
これらのデバイスに適した開発プラットフォームを構築するためには、開発者は、堅牢な性能やバッテリ寿命の延長などの基本的な要件を満たすだけでなく、各アプリケーションの特定の要件をサポートする柔軟性を組み込む必要があります。Silicon LabsのBGM220-EK4314Aエクスプローラキットは、このようなニーズに応えるもので、開発者は、独自の開発プラットフォームを構築するための詳細な作業に煩わされることなく、新しい設計コンセプトのラピッドプロトタイピングに専念することができます。
柔軟な高速開発プラットフォーム
BGM220-EK4314Aエクスプローラキットは、SiLabsのBGM220PワイヤレスGeckoモジュール(BGM220PC22HNA)、オンボードのSEGGER J-Linkデバッガ、押ボタン、発光ダイオード(LED)、および複数の拡張オプションを組み合わせて、Bluetoothベースのアプリケーション開発用の低コストプラットフォームを提供します(図1)。
図1:SiLabsのBGM220-EK4314Aエクスプローラキットは、プロトタイプを迅速に構築し、さまざまな周辺ハードウェア構成を評価するために必要な、処理性能、エネルギー管理、構成の柔軟性を兼ね備えています。(画像提供:Silicon Labs)
BGM220Pモジュール。バッテリ駆動の小型IoT機器用の包括的なソリューション統合化EFR32BG22 Blue Gecko SoCは、超低消費電力、Bluetoothの到着角(AoA)と出射角(AoD)機能、1メートル未満の位置精度を特長としており、これらは資産追跡タグ、スマートドアロック、フィットネスなど、一般的なBluetoothアプリケーションで必要とされています。
BGM220Pモジュールは、EFR32BG22 SoCと512キロバイトのフラッシュ、32キロバイトのランダムアクセスメモリ(RAM)、高周波数(HF)および低周波数(LF)の水晶振動子(XTAL)、2.4ギガヘルツ(GHz)のマッチングネットワークと無線接続用のセラミックアンテナを組み合わせて、スタンドアロンシステムとして動作させることができます(図2)。
図2:SiLabsのBGM220Pモジュール。EFR32BG22 Blue Gecko SoCと、Bluetooth対応デバイスの実装に必要な追加コンポーネントを組み合わせた、スタンドアロンシステムとしての機能を装備(画像提供:Silicon Labs)
本モジュールは、小型フットプリントのIoTデザインにおいてスタンドアロンホストとして機能するだけでなく、本モジュールのUARTインターフェースを介して接続されたホストプロセッサのネットワークコプロセッサ(NCP)としても機能します。統合されたBluetoothスタックは、スタンドアロン設計ではモジュール上で実行されるアプリケーションのワイヤレスサービスを実行し、NCP設計ではホストから受信したコマンドを処理します。
エネルギー効率の高いワイヤレスSoC
BGM220PモジュールのEFR32BG22 BluetoothワイヤレスSoCは、32ビットArm Cortex-M33コア、2.4GHz無線、セキュリティ、エネルギー管理サブシステム、および複数のタイマとインターフェースオプションを統合しています。EFR32BG22 SoCは、超低消費電力のバッテリ駆動設計に特化して設計されており、複数のエネルギー管理機能を使用することで、コイン電池を最大10年間動作させることができます。
単一の外部電圧源で動作するSoCは、内部のエネルギー管理ユニットを使用して内部電源電圧を生成します。動作中、エネルギー管理ユニットは、SoCの5つのエネルギーモード(EM)間の移行を制御します。各モードは、SoCがアクティブモード(EM0)からスリープモード(EM1)、ディープスリープモード(EM2)、ストップモード(EM3)、シャットオフモード(EM4)に移行するときに、アクティブな機能ブロックの数を段階的に減らすことで、さらに消費電力を削減しています(図3)。
図3:EFR32BG22 SoCのエネルギー管理ユニット。エネルギーモードEM0、EM1、EM2、EM3、EM4の間の遷移を制御(画像下部のカラーコード)(画像提供:Silicon Labs)
76.8MHz、3Vのアクティブモード(EM0)で、内蔵のDC/DCコンバータを使用することにより、SoCは27マイクロアンペア/メガヘルツ(μA/MHz)を消費します。EM0は通常の動作モードで、Cortex M33プロセッサコアとすべてのペリフェラルブロックが利用できる唯一のモードです。
すべての周辺機器はスリープモード(EM1)で使用可能で、システムがさらに低消費電力モードに入るときに、周辺機器がアクティブなままになることが少なくまります。低消費電力モードでは、アクティブなクロックや機能ブロックを減らすことで、消費電力レベルを大幅に低減しています。
- スリープモード(EM1)で17μA/MHz
- 1.40μAのディープスリープモード(EM2)で、32KバイトのRAMリテンションを行い、LFXOからリアルタイムクロック(RTC)を実行
- 1.05μAのストップモード(EM3)では、8KバイトのRAMリテンションを行い、SoCに内蔵された超低周波1キロヘルツ(kHz)の抵抗-コンデンサ(RC)発振器(ULFRCO)からRTCを実行
- 0.17μA のシャットオフモード(EM4)
バッテリ駆動の機器の中には、低消費電力の動作モードでプロセッサを動作させる機能以上のものが必要なものもあります。多くのBluetooth対応アプリケーションは、通常、ほとんど動作していない時間帯が長くなりますが、活動再開時には低レイテンシの応答性が求められます。実際、アプリケーションのレイテンシ要件がより緩やかであっても、ウェイクアップタイムが遅いと、ウェイクアッププロセスが完了してアクティブモードに入る(または、高電力モードから低電力モードに入るプロセスが完了する)際に、プロセッサが有用な作業を行わないため、電力が無駄になります。
アクティブ期間の間の時間が短くなると、低電力スリープモードの使用は逆効果になることもあります。遅いウェイクアップまたはパワーモードの起動時間が、非アクティブな期間にプロセッサが高電力モードのままである場合に消費されるエネルギーよりも多く消費されるからです。そのため、バッテリ駆動時間の最適化を図る開発者は、アプリケーションの処理に必要な電力よりも高い電力モードでプロセッサを維持することがあります。
ウェイクアップタイムとエントリタイムが速いプロセッサを使用することで、開発者はプロセッサの低消費電力モードをより有効に活用することができます。EM1では、EFG32BG22は3クロック/1.24マイクロ秒(µs)でウェイクアップし、エントリタイムは1.29µsです。EM4ではそれぞれ8.81ミリ秒(ms)と9.96µsに上昇します(表1)。
|
表1:EFG32BG22 SoCのウェイクアップおよびパワーモードのエントリ時間(表の提供:Silicon Labs)
また、活動再開時のプロセッサの起動方法も、バッテリ駆動時間に大きく影響します。産業用アプリケーションなどでは、周期的なタイミングを厳密に確保するためにポーリング処理が必要な場合がありますが、コンシューマー分野の多くのアプリケーションでは、特定のアクティビティに対応するためにイベントベースの処理が行われています。たとえば、イベントベースのアプリケーションにポーリング方式を使用すると、プロセッサが不必要に繰り返し起動するため、バッテリ駆動時間が大幅に短くなります。
センサベースの設計の多くが、動作確認のためにプロセッサを何度も起動することを避けるためにウェイクオンインタラプト機能を使用しているのと同様に、EFG32BG22 SoCの無線サブシステムに組み込まれたウェイクオンRF機能は、同様のインタラプト駆動のアプローチを可能にします。これにより、開発者は、無線周波数(RF)アクティビティが発生するまで、プロセッサを低消費電力のエネルギーモードに維持することができます。
実際には、EFG32BG22ワイヤレスSoCを超低消費電力のEM2、EM3、またはEM4モードにして、RFエネルギーを検出したときにSoCを起動するウェイクオンRF機能を利用します。RFSENSE機能は、閾値以上のエネルギーを検出するだけで131ナノアンペア(nA)を消費します。より選択的なRFSENSEモードでは、消費電流が138nAと若干多くなりますが、このモードでは、有効なRF信号ではなくRFノイズでウェイクアップするのを防ぐために、RFSENSEが入力されるRF信号をフィルタリングします。
EFG32BG22 SoCが外部イベントに対応するために、プロセッサコアを全くウェイクアップする必要がない場合があります。SiLabsのPRS(Peripheral Reflex System)は、プロセッサコアをウェイクアップせずに周辺機器がイベントに反応して動作できるようにします。ペリフェラルは、相互に直接通信することができ、その機能を組み合わせることで複雑な機能を実現することができます。PRS機能と低エネルギーモードを併用することで、開発者はセンサデータの収集などの重要な機能を損なうことなく、消費電力を大幅に削減することができます。
内蔵デバッグ機能と高拡張性
BGM220エクスプローラキットボードに組み込まれたBGM220Pモジュールは、EFR32BG22 SoCのエネルギー管理と処理能力がバッテリ駆動のBluetooth設計でフルに発揮されるようにします。新しい設計コンセプトを検討するためにプロトタイプを迅速に作成する必要がある場合、ボードの別の機能が開発のスピードアップに役立ちます。
ボードのUSB Micro-Bコネクタからアクセスすると、オンボードのSEGGER J-Linkデバッガがコードのダウンロードとデバッグを可能にします。また、ホストコンソールにアクセスするための仮想COMポートも用意されています。このデバッガは、無線ネットワークで送受信されるパケットを解析するSiLabsのパケットトレースインターフェース(PTI)機能もサポートしています。
ラピッドプロトタイピングでは、ボードが複数の拡張オプションに対応しているため、センサ、アクチュエータ、接続オプション、その他の周辺機器をさまざまに組み合わせた新しい設計のアイデアを柔軟に検討することができます。開発者は、複数のベンダから提供されている豊富な種類のmikroBUSアドオンボードとQwiic接続システムハードウェアを利用して、それぞれのアプリケーションに応じた開発プラットフォームを迅速に構成することができます。
ボードのmikroBUSソケットに接続されたmikroBUSボードは、I2C、SPI、またはUARTインターフェースを介してBGM220Pモジュールに接続されます。Qwiicコネクタは、QwiicシステムのI2Cインターフェースを提供し、1つまたは複数のQwiicボードを最大約4フィートの距離で接続します。長距離の接続には、SparkFunのQwiicBus EndPointボード(COM-16988)を使用することができます。このボードは、差動信号を使用して、約100フィートまでの距離でI2Cの信号の完全性を維持します。
迅速なアプリケーション開発
SiLabsは、アプリケーションソフトウェア開発に、急速な拡張の概念を適用しています。カスタム開発用のボードサポートパッケージ、ドライバ、ライブラリ、ヘッダに加え、Simplicity Studio開発環境にバンドルされたいくつかのサンプルアプリケーションや、SiLabsのGitHubリポジトリから入手可能な追加プロジェクトも提供しています。実際、開発者はバンドルされたEFR32BG22 SoCの内蔵温度センサをデータソースとして使用する温度アプリケーションのサンプルを使って、センサアプリケーションの開発を始めることができます。
この温度アプリケーションは、標準的なBluetooth体温計サービスを中心に構築されており、SiLabsのソフトウェアアーキテクチャ上に構築された一般的なBluetooth IoTアプリケーションによる処理の流れを、すぐに確認することができます。アプリケーションは、システムサービスやアプリケーションサービスの一連の初期化ルーチンを呼び出し、割り込みハンドラやコールバックを設定します。初期化が完了すると、アプリケーションはエンドレスループに入ってイベントを待ちます(リスト1)。
コピー
int main(void)
{
// Initialize Silicon Labs device, system, service(s) and protocol stack(s).
// Note that if the kernel is present, processing task(s) will be created by
// this call.
sl_system_init();
// Initialize the application. For example, create periodic timer(s) or
// task(s) if the kernel is present.
app_init();
#if defined(SL_CATALOG_KERNEL_PRESENT)
// Start the kernel. Task(s) created in app_init() will start running.
sl_system_kernel_start();
#else // SL_CATALOG_KERNEL_PRESENT
while (1) {
// Do not remove this call: Silicon Labs components process action routine
// must be called from the super loop.
sl_system_process_action();
// Application process.
app_process_action();
#if defined(SL_CATALOG_POWER_MANAGER_PRESENT)
// Let the CPU go to sleep if the system allows it.
sl_power_manager_sleep();
#endif
}
#endif // SL_CATALOG_KERNEL_PRESENT
}
リスト1:SiLabsのBluetoothサンプルアプリケーション。一般的な実行フレームワークを使用。初期化後にコールバックやイベントハンドラがシステムやアプリケーションのアクションを処理するエンドレスループを装備(コード提供元:Silicon Labs)
このアプリケーションでは、初期化時に設定されたタイマがカウントダウンすると、関連するコールバックルーチンが温度測定を行います。開発者は、アプリケーションを構築してボードをフラッシュした後、SiLabsのEFR Connectアプリを使用することができます。このアプリは、Silicon LabsのすべてのBluetoothキットおよびデバイスで動作する汎用のBluetoothモバイルアプリです。このアプリは、カスタムアプリのためのフレームワークを提供するだけでなく、このサンプルアプリケーションで使用されているBluetooth体温計サービスのようなBluetoothサービスに関連する、サポートされた特性のビューを提供することで、開発を支援します(図4)。
図4:SiLabs EFR Connectアプリ。アプリケーションで使用されているBluetoothサービスの特性を表示し、プロトタイプの開発を迅速化するだけでなく、カスタムアプリの開発のためのフレームワークも提供(画像提供:Silicon Labs)
Simplicity Studioでは、開発者は、QwiicやmikroBUSボードを使用して構築された設計を含むさまざまな使用シナリオを示す多数の異なるBluetoothアプリケーション例を、個別にまたは組み合わせてインポートすることができます。たとえば、標準的なBluetooth心拍計(HR)およびBluetoothパルスオキシメータ(SpO2)サービスを、Maxim Integratedの MAX86161バイオセンサを搭載したMikroElektronikaの MIKROE-4037Heart Rate 2 Click mikroBUSボードと組み合わせて使用することを示すサンプルアプリケーションがあります。MAX86161は、I2Cインターフェースを介して接続されたホストプロセッサに正確なHRとSpO2測定値を提供することができる完全な低消費電力サブシステムを提供します。(MAX86161の使い方については、「真のワイヤレスフィットネスヒアラブルを作る - パート1:心拍数とSpO2測定」を参照してください。)
このアプリケーションでは、追加のドライバが必要であることや、温度アプリケーションよりも要求の高い処理アルゴリズムが必要であることから、IoTデバイスのソフトウェアアプリケーションのアーキテクチャをより複雑に示しています(図5)。
図5:HR/SpO2アプリケーションなどのサンプルプロジェクト。低消費電力Bluetoothセンサアプリケーションの典型的なプロセスフローを示しながら、プロトタイプ開発のスピードアップを支援(画像提供:Silicon Labs)
前述の温度アプリケーションと同様に、このアプリケーションは、システムとアプリケーションサービスを設定するために一連の初期化ルーチンに依存しています。温度のアプリケーションでルーチンapp_process_actionが空の場合、本アプリケーションでは、ルーチンhrm_loopの呼び出しをapp_process_actionに追加します。この結果、リスト1で示したトップレベルのエンドレスループを通過するたびに、hrm_loopが呼び出されます。また、ソフトウェアタイマを使用して、HRとSpO2のデータを定期的に更新します。
hrm_loopルーチンはヘルパ関数によって維持されるキューからサンプルを取り出し、サンプルプロセスルーチンに渡すmaxm86161_hrm_process を順番に呼び出します。これにより、一対のルーチン、maxm86161_hrm_frame_processとmaxm86161_hrm_spo2_frame_processが呼び出され、HRとSpO2の結果をそれぞれ検証、生成するアルゴリズムが実行されます。開発者は、前述のEFR Connectアプリを使って、他のサービスの特性とともに結果を確認することができます。
また、別のソフトウェアアプリケーションのサンプルでは、開発者がハードウェアプラットフォームを拡張した場合に、このHR/SpO2アプリケーションのような複雑なアプリケーションを構築できることを示しています。BGM220-EK4314AエクスプローラキットボードとSiLabsソフトウェアエコシステムを使用することで、既存のハードウェアとソフトウェアに基づいて構築することが比較的容易にできます。SiLabsは、上記のHR/SpO2アプリケーションで使用されたハードウェア/ソフトウェアプラットフォームにOLEDディスプレイを追加したサンプルアプリケーションで、このアプローチを実証しています。この例では、SparkFunのOLEDディスプレイQwiicアドオンボード(LCD-14532)をボードのQwiicコネクタに取り付け、MikroElektronikaのHeart Rate 2 Clickアドオンボードは前のHR/SpO2サンプルアプリケーションのままにしています(図6)。
図6:開発者は、BGM220-EK4314Aエクスプローラキットボード上に構築された既存の設計に素早く機能を追加可能。ここでは、既存のHR/SpO2プロトタイプにOLEDディスプレイを追加(画像提供:Silicon Labs)
有機ELボード用のドライバとサポートサービスが追加されたこと以外は、この拡張版のHR/SpO2アプリケーションのソフトウェアアプリケーションはほとんど同じです。先に述べた HR/SpO2アプリケーションのソフトウェアタイマには、HRとSpO2データを表示する関数hrm_update_displayの呼び出しが追加されています(リスト 2)。
コピー
/* Software Timer event */
case sl_bt_evt_system_soft_timer_id:
/* Check which software timer handle is in question */
if (evt->data.evt_system_soft_timer.handle == HEART_RATE_TIMER) {
heart_rate_send_new_data(connection_handle);
break;
}
if (evt->data.evt_system_soft_timer.handle == PULSE_OXIMETER_TIMER) {
pulse_oximeter_send_new_data(connection_handle);
break;
}
if (evt->data.evt_system_soft_timer.handle == DISPLAY_TIMER) {
hrm_update_display();
break;
}
break;
リスト2:キットとソフトウェアエコシステムを使用することで、開発者は、ディスプレイボードを接続し、既存のアプリケーションのソフトウェアタイマハンドラに関数コールhrm_update_displayを追加するだけの最小限のソフトウェア変更で、既存のHR/SpO2アプリケーションにディスプレイ機能が追加可能(コード提供元:Silicon Labs)
この拡張可能なハードウェアとソフトウェアのアプローチにより、開発者は実用的なIoTアプリケーションを素早く構築することができます。ハードウェアとソフトウェアの両方を簡単に追加または削除できるため、開発者は新しい設計ソリューションを検討したり、別の構成を評価したりすることが容易になります。
まとめ
バッテリ駆動のBluetooth対応IoTデバイスは、一般的なアプリケーションの中心的存在であり、多機能化と長寿命化への継続的な要求を満たすための重要な要素となっています。開発者にとって、このような相反する要求を効果的に満たすには、新しい設計を迅速に検討し、代替の設計コンセプトを評価する能力が必要です。Silicon Labsの開発キットと関連ソフトウェアを使用することで、開発者は、特定のアプリケーション要件を満たすために必要なハードウェアを追加または削除しながら、迅速にプロトタイプを作成することができます。
免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、DigiKeyの意見、信念および視点またはDigiKeyの公式な方針を必ずしも反映するものではありません。


