マルツTOP > APPLICATION LAB TOPページ おすすめ技術記事アーカイブス > 電池寿命を犠牲にせず、常時Wi-Fiコネクティビティを実現

電池寿命を犠牲にせず、常時Wi-Fiコネクティビティを実現

著者 Stephen Evanczuk 氏
Digi-Keyの北米担当編集者 提供
2020-09-24

マルツ掲載日:2021-1-25


 広帯域幅とユビキタス性を提供するWi-Fiは、依然として多くのIoTデバイスの主要なコネクティビティ要件となっています。しかし、ウェアラブルやその他の電池駆動IoTデバイスの場合、常時Wi-Fiコネクティビティを実現することは、従来のWi-Fiソリューションの電源要件では通常はデバイスの機能、性能、電池寿命の何らかの面を犠牲にする必要があり、非現実的でした。

 低電力に最適化した独自Wi-Fiソリューションを設計することも、設計チームによっては選択肢になりますが、特に優れたRF設計者がいない場合には、これは費用と時間がかかる可能性があります。低電力IoTデバイスで常時Wi-Fiを実用的なものにし、さらに完成度の高いソリューションが求められています。

 この記事では、Dialog SemiconductorのワイヤレスSoC(システムオンチップ)デバイスに組み込まれた低消費電力機能を使用して常時Wi-Fiコネクティビティを実現する方法を紹介します。

携帯機器にWi-Fiコネクティビティを維持する上での課題

 Wi-Fiは一般に、幅広いIoTアプリケーションで必要とされるユビキタス性と性能特性を兼ね備えています。それらのアプリケーションには、ごく一部を挙げるだけでも、個人用携帯製品、スマートホームデバイス、ビルオートメーションシステムなどがあります。しかしこれまでは、Wi-Fiサブシステムの消費電力が比較的大きいため、電池駆動IoTデバイスでは電池寿命または信号強度を犠牲にせざるを得ませんでした。

 従来のWi-Fiソリューションの高電力要件は、IoT開発者にさらなる課題を突き付けます。たとえば、Wi-Fiコネクティビティと電池寿命の延長という要件を両立させるには、より大型の電池を収容するための設計サイズや複雑さが増す可能性があります。電池を大型化できないウェアラブルや多くのIoTデバイスの場合、Wi-Fiの信号強度(とそれに関わる消費電力)を低減させて電池寿命を延ばすことは実行不可能な場合があります。

 これらの懸念事項に加えて、IoT開発者は、マルチパス干渉や無線周波数(RF)信号の特性によって信号強度が大幅に変化することがあるという、典型的なWi-Fi信号環境の実用面での制限に直面しています。ラップトップのような用途では、単に利用者がWi-Fi信号の良好な別の場所にラップトップを移動させればよいだけです。

 これに対してスマートロックや家電製品は、設置場所を問わず信頼性の高いコネクティビティと確実な動作を保つ必要があります。

 電池寿命の延長とロバストなWi-Fi信号強度という両方を実現するため、開発者は通常、先進的なプロセッサや無線機、その他の複雑なハードウェア部品のほとんどが備えている低電力スリープモードを最大限に活用します。

 消費電力の大きいデバイスを可能な限り低電力モードで動作させて、通常はシステムの機能にほとんど影響を与えずに、システムの電池寿命を延ばす設計を実現できます。このような設計では、低電力タイマで定期的にシステムをスリープモードから短時間ウェイクアップさせて、センサ信号を読み取り、無線でセンサデータを送信してからスリープモードに戻ります。

 しかし、一部のIoTアプリケーションでは、モバイルアプリやデスクトップソフトウェア、さらには他のデバイスを通じて発行されるユーザーコマンドに対して迅速に応答するように、IoTデバイスがWi-Fiネットワークへの常時接続を維持しておく必要があります。

 たとえば、スマートホームに見られる、スマートロック、スマート照明、スマートスイッチは、ユーザーコマンドに瞬時に応答するために常に接続していることが必要です。タイマを利用するデバイスがスリープモードから復帰し、コマンドを検知して、やっとドアを開錠したり、照明を点けるのを待ったりすることなどは、ユーザーには全く受け入れられないでしょう。

 Dialog SemiconductorのDA16200 SoCと関連モジュールは、常時Wi-Fiコネクティビティと電池寿命の延長の要件を両立できる効果的な低電力ソリューションです。

ワイヤレスSoCによるWi-Fiコネクティビティの実装

 電池駆動IoT設計向けに特別に設計されたDA16200 SoCは、Arm Cortex-M4Fと、フルネットワークスタックを実行する完結したWi-Fi無線サブシステムを組み合わせた製品で、外部ネットワークプロセッサやスタック機能を提供するホストプロセッサを必要としません。このデバイスは、無線サブシステムとともに、IoT設計に通常必要とされる機能ブロックとインターフェースのフルセットを内蔵しています(図1)。


図1:Dialog SemiconductorのDA16200 SoC。最小限の消費電流で常時Wi-Fiコネクティビティを実現可能な完結したWi-Fiソリューション。(画像提供:Dialog Semiconductor)

 多数の標準インターフェースに加えて、アナログ信号取得をサポートする、4チャンネル、12ビットの逐次比較レジスタ(SAR)型A/Dコンバータ(ADC)も内蔵しています。

 アプリケーションの実行用には、以下のような多数の内部メモリを備えています。

・ブートローダ、システムカーネル、ネットワークスタックとドライバ用の読み取り専用メモリ。
・プログラムデータ用のSRAM(静的ランダムアクセスメモリ)。プログラムコードは、このデバイスの外部シリアルフラッシュメモリインターフェースを介してアクセスするシリアルフラッシュメモリ上で直接、実行される(XIP)。
・デバイス情報に加えて暗号キーとセキュアブートローダの保存に使用するワンタイムプログラム可能(OTP)メモリ。OTPデータは、OTPコントローラを介してのみアクセス可能で、それ以外のシステムバスを介した通常のデータアクセスからは不可視であるため、セキュアに保たれる。

 コネクテッドデバイスのセキュリティに対する要求の高まりに開発者が応えられるように、DA16200 SoCはAES(Advanced Encryption Standard)、SHA(Secure Hash Algorithms)、その他の方式用暗号化エンジンとTLS(Transport Layer Security)プロトコルのサポートなど幅広くセキュリティ機構を備えています。

 このデバイスには、Arm TrustZone CryptoCell-312(CC312)セキュリティIP(知的財産)も含まれています。低電力デバイス用に設計されたCC312は、セキュアブートをサポートし、セキュアアプリケーションの信頼の基点(Root of Trust)を確立できます。

 このデバイスは包括的なRFブロックを備えているため、Wi-Fiコネクティビティを容易に実装できます。無線サブシステムは、内蔵802.11 MAC(メディアアクセス制御)と802.11b/g/n PHY(物理層)に加え、パワーアンプ(PA)と低ノイズアンプ(LNA)の統合により外部能動部品を必要としないオンチップトランシーバを内蔵しています。

 動作時には、DA16200のArm Cortex-M4Fプロセッサが組み込みのTCP/IP(送信制御プロトコル/インターネットプロトコル)スタックを実行し、システムのホストプロセッサをコネクティビティ処理から解放します。

 DA16200 SoCは、RFブロックを含む各種ブロックへの電力供給用にDC/DCコンバータ、低ドロップアウト(LDO)レギュレータ、パワースイッチを内蔵しています。これらのコンバータとLDOは、リアルタイムクロック(RTC)ブロックに管理されて、必要な電源レールすべてを単一の電池電源VBATから生成します。

 DC/DCコンバータはRFブロックとデジタルLDO用にVBATから1.4Vを発生させ、I/O LDOは外部フラッシュとこのデバイスのGPIO(汎用I/O)に必要な1.8Vを生成します(図2)。


図2:DA16200 SoCの内蔵電源部品を制御し、各パワードメインに電圧を供給するDA16200 SoCの電源管理ユニット。(画像提供:Dialog Semiconductor)

 DA16200 SoCの電源管理ユニットは、このデバイスの3種類の低電力(スリープ)モードを管理する機能の一部として、これら各パワードメインへの電圧供給を制御します。

スリープ1:最も低消費電力で、0.2µAで動作するモード。このモードでは、このデバイスはほとんど電源オフ状態で、SoCの2本のウェイクアップピンかデジタルI/Oの1つに外部トリガがあった場合、または設定済み閾値を超えるアナログ入力信号があった場合に150ms以内にウェイクアップする。

スリープ2:消費電流がわずか1.8µAでRTC機能を維持するモード。このモードでは、外部ウェイクアップイベントが発生したとき、またはプログラムされた内部タイマの設定時間が経過したときに、100ms以内にこのSoCがウェイクアップする。

スリープ3:最小限の消費電流で動作する一意の常時接続Wi-Fiモード。受信Wi-Fiデータパケットの検出後、2ms以内にウェイクアップする。以下で説明するように、スリープ3と標準のTCPキープアライブ機能を併用することで、平均消費電流50µA未満の常時Wi-Fiコネクティビティを実装するための基礎を提供する。

動的電源管理技術で常時Wi-Fiコネクティビティを実現

 これらの低電力スリープモードを支えているのが、Dialog Semiconductor独自の動的電源管理(DPM、Dynamic Power Management)技術です。これは、使用されていない内蔵マイクロ素子をシャットダウンして、本デバイスがデータの送受信をしていないときの消費電力を最小限にします。

 Wi-Fi動作時には、DPMが必要なマイクロ素子を必要なときだけウェイクアップさせる先進的なアルゴリズムを使用して、無線送受信処理中の消費電力を最小限に抑えます。

 Dialog SemiconductorのDA16200ソフトウェア開発キット(SDK)は、DPM Manager API(アプリケーションプログラミングインターフェース)によって電源管理とDPM動作の詳細を抽象化しています。このSDKは、独自ソフトウェアの開発向けにアプリケーションサービスとシステムサービスからなるDA16200ソフトウェアスタックへのアクセスを提供します(図3)。


図3:IoTデバイスで標準Wi-Fiコネクティビティの維持に必要なシステムサービスとアプリケーションサービスのフルセットを提供する、DA16200 SoCのソフトウェアアーキテクチャ。(画像提供:Dialog Semiconductor)

 常時Wi-Fiコネクティビティの実装には、DPM ManagerとNetX Duo TCP/IPライブラリを組み合わせて使います。NetX Duoライブラリは、データなしのTCPパケットをWi-Fiルータに送信して、そのルータにWi-Fi接続を確実に維持させるTCPキープアライブ機能を提供します。

 開発者は、現在のTCPソケットのオプションのkeepalive_enabledをtrueに設定し、キープアライブパケット間の秒数keepalive_timeoutを渡すだけで、この機能を呼び出せます。NetX Duoが必要に応じて自動的にキープアライブフレームを送信します。

 キープアライブパケットによってルータや他のホストとのネットワーク接続を維持している間、DA16200がスリープ3モードからウェイクアップする機能は、802.11管理フレームに埋め込まれた標準のTIM(Traffic Indication Map)またはDTIM(Delivery Traffic Indication Map)という情報要素の検出に基づいており、この機能は、DA16200ベースのシステムなどのネットワーク局に対してネットワークトラフィックが利用可能であることを通知するために使用されます。

 DA16200をスリープ3モードにすると、DA16200のDPM技術によって無線サブシステムが最小限の電力でTIM/DTIM要素を検出します。TIM/DTIM要素を検出すると、無線サブシステムは一般のネットワーク局と同様に通常のWi-Fiトラフィック処理を開始するため、DA16200 SoCをウェイクアップさせます。

 DA16200 DPM Manager APIを使用すれば、直観的で理解しやすい呼び出しをいくつか行うだけで、この機能を実装できます。パラメータやコールバックなど、必要なDPM設定を定義した後、DPM ManagerのAPI関数呼び出しによってDPM Managerを起動して、DPM Managerとのやりとりを行います。スリープ3への移行とその終了は、DA16200のDPM技術によって透過的に行われます。

 SDKに含まれているサンプルアプリケーションは、この動作シーケンスの実装に必要な基本的デザインパターンの良い例になっています(リスト1)。

#define TCP_CLIENT_KA_DPM_SAMPLE_DEF_KEEPALIVE_TIMEOUT      55
[lines deleted]
void tcp_client_ka_dpm_sample_wakeup_callback()
{
     PRINTF(GREEN_COLOR " [%s] DPM Wakeup\n" CLEAR_COLOR, __func__);

     dpm_mng_job_done(); //Done operation
}
[lines deleted]
void tcp_client_ka_dpm_sample_recv_callback(void *sock, UCHAR *rx_buf, UINT rx_len, ULONG rx_ip, ULONG rx_port)
{
     int status = NX_SUCCESS;

     //Display received packet
     PRINTF(" =====> Received Packet(%ld) \n", rx_len);

     tcp_client_ka_dpm_sample_hex_dump("Received Packet", rx_buf, rx_len);
[lines deleted]
     dpm_mng_job_done(); //Done operation
}
[lines deleted]
void tcp_client_ka_dpm_sample_init_user_config(dpm_user_config_t *user_config)
{
[lines deleted]
     //Set DPM wakeup init callback
     user_config->wakeupInitCallback = tcp_client_ka_dpm_sample_wakeup_callback;
[lines deleted]
     //Set Recv callback
     user_config->sessionConfig[session_idx].session_recvCallback =
           tcp_client_ka_dpm_sample_recv_callback;
[lines deleted]
     //Set KeepAlive timeout
     user_config->sessionConfig[session_idx].session_ka_interval =
          TCP_CLIENT_KA_DPM_SAMPLE_DEF_KEEPALIVE_TIMEOUT;
[lines deleted]
}
[lines deleted]
void tcp_client_ka_dpm_sample(ULONG arg)
{
[lines deleted]
     //Register user configuration
     dpm_mng_regist_config_cb(tcp_client_ka_dpm_sample_init_user_config);

     //Start TCP Client Sample
     dpm_mng_start();

     return ;
}
リスト1:DA16200 SoCでは、設定と数種のDPM API関数の呼び出しで常時Wi-Fiコネクティビティを実装可能。(コード提供:Dialog Semiconductor)

 リスト1に示すように、この機能は初期化関数(tcp_client_ka_dpm_sample_init_user_config())でキープアライブ間隔(TCP_CLIENT_KA_DPM_SAMPLE_DEF_KEEPALIVE_TIMEOUT)などの各種設定パラメータを設定し、DMPウェイクアップ(tcp_client_ka_dpm_sample_wakeup_callback())と受信データパケット処理(tcp_client_ka_dpm_sample_recv_callback())などの各種コールバックを用意するだけでほとんど実装できます。

 TCPキープアライブとDPMウェイクアップシーケンスを開始するには、別の関数(tcp_client_ka_dpm_sample())で、設定ルーチン(dpm_mng_regist_config_cb(tcp_client_ka_dpm_sample_init_user_config))とDMP Manager(dpm_mng_start())を呼び出すだけです。

 すでに述べたように、標準TCPキープアライブパケットの処理とDA16200のDPMによるWi-Fi監視を含む、このシーケンス全体で、通常、平均消費電流50µA未満の常時Wi-Fiコネクティビティが実現します。

 同じデザインパターンは、DA16200 SoCを他の動作のためにスリープモードからウェイクアップさせる場合にも使えます。たとえば、サンプルアプリケーションでは、データ処理のためにDA16200のRTCを使用してDA16200 SoCをウェイクアップさせています(リスト2)。

#define     SAMPLE_FOR_DPM_SLEEP_3              // Sleep Mode 3

#define     MICROSEC_FOR_ONE_SEC        1000000
#define     RTC_TIMER_WAKEUP_ONCE      5        // seconds
#define     RTC_TIMER_WAKEUP_PERIOD   10      // seconds
static void rtc_timer_dpm_once_cb(char *timer_name)
{
[lines deleted]
static void rtc_timer_dpm_periodic_cb(char *timer_name)
{
     /*
     *Caution : Don't spend a lot of time in the calback function called by timer.
     */
     dpm_app_sleep_ready_clear(SAMPLE_RTC_TIMER);

     PRINTF("\nWakeup due to Periodic RTC timer!!!\n");
     tx_thread_sleep(10);

     dpm_app_sleep_ready_set(SAMPLE_RTC_TIMER);
}
[lines deleted]
void rtc_timer_sample(ULONG arg)
{
[lines deleted]
          /* Periodic timer */
          status = dpm_timer_create(SAMPLE_RTC_TIMER,
                                              "timer2",
                                              rtc_timer_dpm_periodic_cb,
                                              RTC_TIMER_WAKEUP_PERIOD,
                                              RTC_TIMER_WAKEUP_PERIOD);
[lines deleted]
          dpm_app_sleep_ready_set(SAMPLE_RTC_TIMER);
[lines deleted]
     }

     while (1)
     {
          /* Nothing to do... */
          tx_thread_sleep(100);
     }
}
リスト2:DA16200の低電力タイマを利用した機能を、DPM API関数をいくつか呼び出して実装でき、DA16200のスリープ中の消費電力を最小限に抑えることが可能。(コード提供:Dialog Semiconductor)

 リスト2に示すように、DPM ManagerのAPI関数(dpm_timer_create())を呼び出してタイマ(SAMPLE_RTC_TIMER)を生成し、DPM Managerの別のAPI関数(dpm_app_sleep_ready_set())を呼び出してシステムがスリープに戻ってよいことを指示します。

 すると、DPMエンジンがその時点の処理状況に基づいてシステムがいつ低電力スリープモードに戻れるかを判断します。その後、タイマが切れたときに、システムは開発者が用意したコールバック関数rtc_timer_dpm_periodic_cb()を実行し、この関数が必要な処理を行います。

 この例ではコンソールに通知を表示するだけです。必要な処理を完了すると、同じコールバック関数がdpm_app_sleep_ready_set()を実行し、DPMエンジンにシステムをスリープに戻してよいことを通知します。前回と同じく、DPMエンジンは適切なタイミングでシステムをスリープモードへ移行させます。

Wi-Fi設計をシンプルにするドロップインモジュール

 DA16200 SDKを使用するとソフトウェア設計がシンプルになりますが、デバイスの豊富な内蔵機能でハードウェアインターフェース設計がシンプルになっています。DA16200 SoCをWinbond Electronicsの16Mbit NORメモリIC W25Q16JVSNIQなどの外部フラッシュデバイスとわずかな追加部品と一緒に使用すると、Wi-Fi対応のセキュアなIoT設計を実装できます(図4)。


図4:豊富な機能が統合されたDA16200 SoCでは、外部シリアルフラッシュと最小限の追加部品だけで完結したWi-Fiシステムの実装が可能。(画像提供:Dialog Semiconductor)

 DA16200 SoCをベースにした独自設計の開発をスピードアップしたい場合には、SoCのハードウェアインターフェースを実装する必要がないDialog Semiconductor製モジュールを利用することができます。

 このモジュールには、DA16200 SoCに加えて4MBのフラッシュとRF部品が搭載されており、オンボードチップアンテナ(DA16200MOD-AAC4WA32)か外付けアンテナ(DA16200MOD-AAE4WA32)用のu.FLコネクタを選択できます。

 このモジュールはFCC、IC、CE、その他の規制機関で完全認証されています。サイズは13.8×22.1×3.3mmで、低電力常時Wi-Fiコネクティビティ実装用のドロップインハードウェアソリューションです。

 常時Wi-Fiコネクティビティに期待して、DA16200 SoCをベースにしたIoT設計の迅速な試作を検討している開発者は、Dialog Semiconductorの開発キットDA16200MOD-DEVKTをすぐに利用できます。

 このキットは、DA16200MODモジュールにUSBインターフェース、キー、接続を組み合わせたもので、DA16200ベースの設計の開発とデバッグのスピードアップに役立ちます。

まとめ

 常時Wi-Fiコネクティビティの維持は、ラップトップやその他のコネクテッド製品ではありふれた機能です。しかし、ウェアラブルやその他の電池駆動IoTデバイスでは、従来のWi-Fiソリューションの電源要件が常時Wi-Fiコネクティビティ実現の障害となり、通常はデバイスの機能、性能、電池寿命のいずれかを犠牲にせざるを得ませんでした。

 Dialog SemiconductorのSoCは、最小の消費電流で常時Wi-Fiコネクティビティを実現できる、完結したWi-Fiソリューションを提供します。このように、このSoCやその関連モジュールを使用すれば、ユーザーに常時Wi-Fiコネクティビティの利点を提供しながら、電池寿命の延長への期待にも応えるセキュアな電池駆動デバイスを迅速に実装できます。



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

 

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


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

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



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

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


ページトップへ