IoTアプリケーション向けに、Bluetooth®コネクティビティの設計のスピードアップ

著者 ヨーロッパ人編集者

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

ATBTLC1000-XPro Bluetooth® Low Energy拡張ボードを見る前に、ここでは、このボードが使用するATBTLC1000ワイヤレスマイクロコントローラを概観してみましょう。 このSoCデバイスは、ARM Cortex-M0マイクロコントローラ、2.4GHzワイヤレストランシーバ、128kBのRAM、128kBのROMや、AES-128およびSHA-256の両方のハードウェアアクセラレータで構成されます。 さらに、このデバイスは、GPIOの包括的な範囲とマスター/スレーブSPI、I2Cマスタ/スレーブおよびUARTインタフェースのシリアルコネクティビティを提供します。 このデバイスはまた、幾つかの超低電力プロファイルモードを達成するためにSoCを共同して支援する、統合型DC/DCコンバータやパワー管理ユニット(PMU)を特長とします。 シングルチャンネル11ビットADC、4つのPWMポートと、汎用タイマーも含まれます。 ROMは、L2CAPサービス層プロトコル、セキュリティマネージャ、属性プロトコル(ATT)、汎用属性プロトコル(GATT)と汎用アクセスプロファイル(GAP)を含む、資格要件を満たしたBluetooth Smartプロトコルスタック(Bluetooth 4.1)を格納するのに使用されます。 アプリケーション固有プロファイルには、近接、温度計、心拍数および血圧が含まれます。 図1は、このSoCデバイスのブロック図を示しています。

1.8〜4.3 VDCの範囲でバッテリ電源から動作することが可能なこのデバイスは、3.6 V電源を使用して、RAM保持とRTCの実行中にディープスリープモードで最小1.1μAを消費し、受信モード時では最大4.0mAのピーク電流を消費します。

AtmelのATBTLC1000ブロック図の画像

図1:ATBTLC1000ブロック図

多くのIoTアプリケーションでは、バッテリーを交換するために、最小のトラックロールで動作することができるバッテリ駆動機器が必要になります。 都市環境下では不便なだけですが、非常に遠隔で、しばしば危険な場所でのIoTセンサへの影響や、貧弱なバッテリ寿命によって引き起こされる費用負担は重大で、センサメーカーにとって潜在的なブランドダメージとなることがあります。 革新的なパワーアーキテクチャにより、ATBTLC1000は外部レギュレータおよびオフチップコンポーネントの必要性を排除します。 PMUブロックは、BLEコアおよびRFトランシーバに電力を供給するためにバッテリ電圧を変換する、非常に高効率の標準83%のDC/DC降圧コンバータおよび低ドロップアウトレギュレータ(LDO)を含みます。

AtmelのATBTLC1000 Xplained Pro拡張ボードの画像

図2:AtmelのATBTLC1000 Xplained Pro拡張ボード

AtmelのXplained Proボードのファミリーは、新しいマイクロコントローラベースの設計を開始するために、極めて速く、便利なルートを提供します。 Atmelの統合開発環境プラットホームであるAtmel Studioと共に、Atmel Software Framework(ASF)、ボードサポートドライバ、コード例やドキュメントの包括的なセットによってサポートされている、Xplained Proボードは、AtmelのAVRおよびARMベースのマイクロコントローラ製品ファミリ全体にわたって利用可能です。 図2に示すようなATBTLC1000などの拡張ボードは、有線や無線、静電容量式タッチ感知制御、拡張IO、およびMEMSベースのセンサの製品範囲を含む、さまざまな形態のコネクティビティを組み込むための簡単な方法を提供するために、標準的なコネクタヘッダを使用します。 エンジニアを念頭に置いて設計されたこれらのデバイスは、市場への投入時間をスピードアップするだけでなく、十分に文書化された材料と各ボードで使用可能なアプリケーションノートに基づいた設計に自信を与えてくれます。

ATBTLC1000 Xplained Proは、FCCおよびETSI事前認証済みのワイヤレスSoCをモジュールパッケージ内に、デジタル温度センサ、デバッガヘッダサポート(UART、I2C、および電流測定)、および32kHz水晶振動子とともに統合します。 これは幾つかのホストMCU Xplained Proボードに接続することができます。 物事をさらに容易にするために、拡張ボードとAtmel SAML21 Xplained Proボードは完全なキットとして、または別途MCUボードとして購入することができます。

いずれかのXplained Proプラットホームを始めることが、これ以上簡単になることはありません。 開始する前に、Atmelのウェブサイトから無料のAtmel Studio(現在はバージョン7)をダウンロードする必要があります。 Atmel Software Frameworkはダウンロードの一部なので、直ちにコード例を使用することができます。 いったんインストールされると、Atmel Studioを起動して、マイクロコントローラボードに拡張ボードを接続します。 Atmel Studioは、自動的にどのMCUと拡張ボードが接続されているかを検出し、サンプルアプリケーションにアクセスするためのAtmel Software Frameworkを起動するオプションとともに関連する文書やデータシートを提供する組み合わせに対するランディングページを表示します。

前述したように、ATBTLC1000 SoCは、GAPやGATTなど、すべての標準のBluetoothサーバとクライアント操作を実行するホストマイクロコントローラを容易にするBluetooth Smart Linkコントローラを特長とします。 SoCは、すべてのBLE4.1リンク層とオンチップのファームウェアを介したアプリケーションプロファイル機能を提供します。 Atmelは、リンク層のファームウェアを搭載したホストとの通信を可能にするアダプタAPIを提供します。

AtmelのATBTLC1000スマートリンクコントローラ〜ホストの図

図3:ATBTLC1000スマートリンクコントローラ〜ホストの図

AtmelのAPIは、通常、プラットフォーム/リンクコントローラの初期化、デバイス構成、およびイベント処理と監視の3つの動作グループが含まれている簡単なプログラミングモデルに従います。 アプリケーションの簡単なフローチャートが図4に示されています。 at_ble-init()の関数呼び出しは、リンクコントローラを初期化します。 次に、デバイスアドレスをセットアップし、関連するすべての広告データに名前を付けるために、デバイス構成が必要です。 APIは、要求と応答メカニズムで動作します。 APIコールは、呼び出し元のアプリケーションに返されるための、1つまたは複数のイベントメッセージをトリガすることができます。 利用可能なAPIの完全なリストは、AtmelのBluetooth Low Energy API:ソフトウェア開発ユーザーガイド1とAtmel Software Framework2内で見つけることができます。

APIプログラミングモデルの図 – アプリケーションフロー

図4:APIプログラミングモデル – アプリケーションフロー

APIの動作は、スケジューリング図を使用することによって最もよく説明されます。図5を参照してください。 GAP広告を設定するこの例のプロセスは、ペリフェラルが他のBluetoothデバイスによって発見されるために、無線で一方向の放送データを発行することを意味しています。 デバイス名やIDなどの必要な広告データに加えて、接続を確立するのに役立つかもしれない追加情報を通信することができます。

GAP広告プロセスのスケジューリング図

図5:GAP広告プロセスのスケジューリング図

この追加データは、コール応答データです。 初期化関数at_ble-init()ののち、広告データは広告関数を呼び出す前にat_ble_adv_data_set内で設定する必要があります。 意図が広告し、接続を確立することであるなら、at_ble_adv_start(connectable)を呼び出します。 図6のコード例は、デバイス名を定義し、設定し、デバイスを初期化し、広告応答データをセットした後、広告を始めるこのプロセスを開始するアプリケーションの最初の部分だけを示しています。 これは、アプリケーションの設計時にAtmelのBluetooth APIを使用することによって達成される単純化の一例です。 詳細については、記載されたリファレンスソースの中に見つけることができます。

#include "at_ble_api.h"

#define CHECK_ERROR(VAR,LABEL) if(AT_BLE_SUCCESS != VAR) \

                                { \

                                goto LABEL; \

                                }

#define DEVICE_NAME "Atmel BLE Device"

uint8_t adv_data[] = { 0x11, 0x07, 0x1b, 0xc5, 0xd5, 0xa5, 0x02, 0x00, 0x37,

                        0xaa, 0xe3, 0x11, 0x2a, 0xdc, 0x00, 0xcd, 0x30, 0x57};

at_ble_status_t init_peripheral_role(void)

{

        at_ble_status_t status;

        at_ble_init_config_t pf_cfg;

        platform_config busConfig;

        at_ble_addr_t addr = {AT_BLE_ADDRESS_PUBLIC,

                                {0x25, 0x75, 0x11, 0x6a, 0x7f, 0x7f}

                                };

//デバイス名を設定

        status = at_ble_device_name_set((uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME));

        CHECK_ERROR(status, __EXIT);

/*GATTサーバDBによって必要とされるメモリアロケーション*/

        pf_cfg.memPool.memSize = 0;

        pf_cfg.memPool.memStartAdd = NULL;

/*バス構成*/

        busConfig.bus_type = UART;

        pf_cfg.plf_config = &busConfig;

//デバイスの初期化

        status = at_ble_init(&pf_cfg);

        CHECK_ERROR(status, __EXIT);

//デバイスアドレスを設定

        status = at_ble_addr_set(&addr);

        CHECK_ERROR(status, __EXIT);

//広告データを設定、NULLの代わりに、必要であればスキャン応答データを設定

        status = at_ble_adv_data_set(adv_data, sizeof(adv_data), NULL, 0))

CHECK_ERROR(status, __EXIT);

//広告をスタート

        status = at_ble_adv_start(AT_BLE_ADV_TYPE_UNDIRECTED, AT_BLE_ADV_GEN_DISCOVERABLE,

                    NULL, AT_BLE_ADV_FP_ANY, 100, 0, false))

__EXIT:

        return status;

}

図6:アプリケーションの最初の部分を説明するコード例

温度センサなどバッテリ駆動のIoTアプリケーションの開発に着手しようとする設計者にとって、超低電力通信のプロビジョニングが不可欠です。 Bluetoothプロトコルを学び、理解しなければならないことに直面することは、重要な課題となる可能性があり、このような設計の大部分を占めることになるかもしれません。 ATBTLC1000 Xplained Pro拡張ボードで、Atmelはタスクを非常に簡単にしました。 組み込み開発者は、AtmelのBluetooth API関数呼び出しをIoTアプリケーション内に組み込むことができ、タスクを迅速かつ簡単なものとします。 FCCおよびETSIの無線規制当局の承認とBluetooth SIG規格への遵守を備えたATBTLC1000は、どこで使用されてもお客様のデザインに組み込むために最適です。

脚注およびリファレンス

  1. ATBTLC1000 BluSDK Bluetooth Low Energy APIユーザーガイド
  2. http://asf.atmel.com/docs/latest/search.html?device=samd21
  3. ATBTLC1000 Xplained Proユーザーガイド
  4. ATBTLC1000 Hardware Ultra Low Power BLE 4.1 SoCユーザーガイド
DigiKey logo

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

著者について

ヨーロッパ人編集者

出版者について

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