『半導体業界の第一人者,AI業界を行く!』Vol.14:Bluetooth マイコン触ってみました -Part1-

『半導体業界の第一人者,AI業界を行く!』Vol.14:Bluetooth マイコン触ってみました -Part1-

(トップ画像:実験風景.赤い枠内がSilicon Labs社 “BGM220P Wireless Gecko Module Starter Kit”.Thermometer プログラムが動作中.左のWindows10 PCで Silicon Labs Simplicity Studio 5 AEM が消費電力を測定中.2m手前のスマホで Silcon Labs社 “EFR Connect BLE Mobile App”  が送られてきた温度を表示中.)

 

こんにちは,HACARUS 東京R&Dセンター所属のエッジ・エバンジェリスト 田胡治之です.この連載では,半導体業界で長年知識や情報を得てきた私,田胡がこれまでと異なるAI業界に飛び込み,そこから感じる業界のニュースやトピックを独自の視点で紹介したいと思います.今回は,エッジAIシステムでのデータ収集用途を念頭に置き,Bluetooth機能つきマイコンを触ってみました.-Part1- です.

 

Bluetooth機能付きマイコン

前号[1]で,Bluetooth機能付きマイコンの概要を述べました.本稿では,Silicon Labs社製 BGM220 Bluetooth Module Wireless Starter Kit [2] [3] を使い,準備から三種類のサンプルプログラムの様子までをレポートします.

 

実験の準備

Silicon Labs社の開発ボード BGM220P Wireless Gecko Module Starter Kit [2] [3]は,(1)BRD4001A Wireless Starter Kit Mainboard, (2)BRD4310A BGM220S Wireless Gecko Module Radio Board, (3)BRD4311A BGM220P Wireless Gecko Module Radio Board, (4)BRD8010A Debug Adapter Board, (5)USB Type A to Mini-B cable, (6)10-pin flat cable for debug adapter から構成されます(Figure 1左).(2)と(3)がBluetooth MCUで,どちらかを Main board に取付けて使います(Figure 1右).Main boardのUSB Mini コネクタとWindows PC USBポート間を(5)を使って接続すれば,すぐに開発を始められます.(4)と(6)は当面使いません.

 

Figure 1  Silicon Labs社の開発ボード BGM220P Wireless Gecko Module Starter Kit の内容物と,BG220P radio board の Main board への取付け [4]

ソフトウェア開発ツール(SDK)には,Silicon Labs社 Simplicity Studio 5 を使います.同社サイトから無償でダウンロードできます[5].Simplicity Studio 5 は AEM (Advanced Energy Monitor)機能も持ち,Bluetooth マイコンの消費電流と電源電圧を動的に測定できます[13].

Simplicity Studio 5 上での SoC Blinky Sample Project 作成ステップを,Figure 2~4 に例示します.Simplicity Studio の使い方は,[6][7][8][9][10] を大変参考にさせて頂きました.Projectとはソースプログラム,オブジェクトファイルを初めとする関連ファイルをひとつのフォルダにまとめたものです.

Simplicity Studio 5 を立ち上げて開発ボードをWindows10 PC にUSB接続すると ,開発ボードが自動的に認識されます(Figure 2 Step-1).Connected Device 右側にある [Start] ボタンをクリックすると,開発ボード情報と関連ドキュメントが表示されます(Figure 2 Step-2).

 

Figure 2 SoC Blinky Project 作成 (Step-1 と Step-2)

 

EXAMPLE PRODUCTS DEMOS タブをクリックすると(Figure 3 Step-3の(2)),開発ボードに適合したサンプルプロジェクトが多数表示されます.Bluetooth SoC Blinky を探して [CREATE] をクリックすると(Figure 3 Step-3の(3)), Project Configuration ウィンドウが現れます(Figure 3 Step-4).ここで Project Name を入力します.Project Name は,ローカルPC内のフォルダ名になります.他は変更不要です.右下の [FINISH] をクリックすると,同社サイトからプロジェクト作成に必要なファイルがローカルPCにダウンロードされます.

 

Figure 3 SoC Blinky Project 作成 (Step-3 と Step-4)

 

Simplicity Studio 左側の Project Explorer から,先ほど決めた Project name のフォルダをクリックして選択します(Figure 4 Step-5 の (1)).次に Run を右クリックして現れるプルダウンメニューから Profile As にカーソルを合わせ,更に現われる Simplicity Energy Profiler Target をクリックします(Figure 4 Step-5 の (2)).これでプロジェクトの生成が開始されます.その経過は右下の CDT Build Console に表示されます(Figure 4 Step-6).生成されたバイナリープログラムは,ターゲットデバイス(BGM220P)に書き込まれ,リセット後,実行が自動的に始まります.

 

Figure 4 SoC Blinky Project 作成 (Step-5 と Step-6)

 

このように,サンプルプロジェクト作成と実行は,Project name入力を除いて,マウス操作だけで可能です.更に Bluetooth 通信の主なパラメータ(Advertising間隔など)も Simplicity Studio 5 の Configurator からマウス操作で変更できます.C++ 言語ソースプログラムの直接編集も出来ますが,その必要は少ないと思います.

 

実験装置

実験装置の構成を Figure 5 に示します.Figure 1 で準備した開発ボードを,Bluetooth用語ではペリフェラル(Peripheral)と呼びます.Simplicity Studio 5 は,プロジェクトのビルド,生成されたバイナリーの Bluetooth MCUのFlash Memory への書き込みと消費電流・電圧測定を行います.

スマートフォン(Bluetooth用語では Central と呼ばれる)には,Bluetooth で送られてきたデータを表示するアプリ Silion Labs社 EFR Connect [11] をあらかじめインストールしておきます.以下の実験では,開発ボード上の押しボタンスイッチの on/off状態や温度センサデータを,スマートフォンに送ります.ペリフェラルとセントラル間距離を変化させて,セントラルに届いた電波強度やサンプルプロジェクトの動作状況を調べました.

実験は住宅地の路上地上高123cmで,セントラルからペリフェラルを見通せる環境で行いました.冒頭写真は実験の様子です.Bluetooth は,2.4GHz帯に定められた数十の通信チャネルから空いているチャネルを探しつつ通信を行います.そのため,通信状況は,近くにある他の Bluetooth デバイスの状況に左右されます.更に同じ周波数帯を Wifi (無線LAN)も使っています.この実験環境では,他のBluetoothデバイスが約10個,Wifi基地局が約4つ見つかりました.以下の結果はあくまで一例です.

 

Figure 5  実験装置の構成

 

SoC blinky sample project

マイコンボード立ち上げ時によく行うLEDの点滅(いわゆる、 Lチカ)の Bluetooth バージョンです.ペリフェラルの押しボタンスイッチとLEDを使います.ペリフェラルからセントラル方向へは,開発ボード上の押しボタンスイッチを押すとセントラルのアプリ上のLEDアイコンが緑に変化します(Figure 6 表二行目).逆にセントラルからペリフェラル方向では,セントラルのアプリ上の電球アイコンをクリックすると開発ボード上のLEDが点灯します(Figure 6 表三行目).

 

Figure 6 SoC Blinky Sample Project の動作

 

ペリフェラルとセントラル間距離を 0.2m~20m に変え,Bluetooth通信 Advertising状態でセントラルが受信した電波強度 RSSI (Received Signal Strength Indicator)を示します(Figure 7).なお最大距離20mは実験環境の制約です.距離20mでも接続は安定していました.20m以上はテストしていません.点線は電波強度が距離の二乗に逆比例する関係(自由空間伝搬損失)を示しています.実測された RSSI カーブのスロープは,これに近いようです.

 

Figure 7 RSSI of the SoC blinky sample project

 

Thermometer sample project

開発ボード上の温度センサの測定値を,Bluetooth で送信するサンプルプロジェクトです[12].指先を温度センサにあてると温度が上昇し(Figure 8 表の二行目右),セントラルのアプリ画面の温度表示が上昇しています.

 

Figure 8 Thermometer sample project の動作

 

ペリフェラルとセントラル間距離を 0.2m~20m に変え,セントラルが受信した電波強度 RSSI (Received Signal Strength Indicator)を示します(Figure 9).Advertising状態での RSSI とConnected状態の RSSI を調べましたが,似た傾向でした.距離20mでも接続は安定していました.距離20m以上はテストしていません.

 

Figure 9  RSSI of the thermometer sample project

 

Simplicity Studio 5 内蔵機能 AEM(Advanced Energy Monitor)による Bluetooth マイコンの消費電流と電源電圧の測定結果例を Figure 10 に示します.横軸は時間(秒)で,現在から10秒前までが表示されています.

10秒前から約8.3秒前まで,ペリフェラルはBluetooth プロトコルの “Advertising” 状態にありました.これはセントラルにペリフェラルを発見してもらうために,ペリフェラルが間欠的に電波を出している状態です.約8.3秒前にセントラルがペリフェラルを発見し接続手続きを行い,Connected状態に変化しました.接続チェックが継続的に行われつつ,温度データが4秒間毎にセントラルに送られています.

縦軸は二つあります.左側縦軸が消費電流(黄色の波形),右側縦軸(赤色の波形)が電源電圧を示します.消費電流は Advertising 状態ではピーク2.5mA程度流れ,Connected状態になると1.3mA程度に下がりました.温度データ送信時(4秒毎に設定)には,ピーク3mA以上流れています.一方,電源電圧(赤色波形)は,この実験ではPCからUSB給電されているため,安定して3.3V程度でした.

 

Figure 10  AEM results for thermometer sample project

 

このように,AEMを使うと Bluetooth マイコンの消費電流と電源電圧を詳しく知ることができます.C++関数に紐づけて測定することもできます.

 

Throughput sample project

ペリフェラルとセントラル間のデータ転送速度を測定するサンプルプロジェクトです[14].ここでは,ペリフェラルからセントラルへのデータ転送速度を測定しました.データ転送プロトコルには,Indication と Notification の二種類があります.Indication は,ペリフェラルがデータ送信後,セントラルがデータ受信確認を送り返すプロトコルです.ペリフェラルはセントラルからの受信確認を受け取ってから次のデータ送信に進みます.

一方 Notification は,ペリフェラルがデータ送信後,セントラルのデータ受信確認を待ちません.ペリフェラルが自分のペースでどんどんデータを送信します.インターネットのプロトコルにTCP/IPとUDPがありますが,Indication がTCP/IPに,NotificationがUDPに対応するイメージです.Figure 11 に示すように,Notification throughput が約180kbps(kilo bit per second),Indication throughput は約22kbpsで,前者が約9倍速いです.

 

Figure 11  Throughput sample project の動作

 

ペリフェラルとセントラル間距離を 0.2m~10m に変え,セントラルが受信したデータのThroughput を示します(Figure 12).距離10mでも接続は安定し,スループットも安定していました.距離10m以上はテストしていません.

 

Figure 12  Throughput results of the throughput sample project

 

まとめ

  • Silicon Labs 社製開発ボードBGM220P Wireless Gecko Module Starter Kit を使い,サンプルプロジェクト三種類(SoC blinky sample project, Thermometer sample project, Throughput sample project)を実行しました.
  • Silicon Labs社Simplicity Studio 5 をソフトウェア開発ツールと消費電流・電圧測定にも使いました.
  • ペリフェラルとセントラル間距離が20m(実験環境制約)になっても,三種類とも安定して動作しました.セントラルの受信電波強度 RSSI は,距離の二乗に逆比例する関係(自由空間伝搬損失)に近かったです.
  • Throughput sample project において,Notification throughput は約180kbps(kilo bit per second),Indication throughput は約22kbps でした.
  • Simplicity Studio 5 の AEM (Advanced Energy Monitor)機能を使って,Advertising 状態から Connected 状態へ変化時の消費電流・電圧を測定できました.

参考文献

[1] 『半導体業界の第一人者,AI業界を行く!』 Vol.13:ブルートゥース・マイコン

https://hacarus.com/ja/ai-lab/20210726-bluetooth/

 

[2] SLWSTK6103A BGM220 Bluetooth Module Wireless Starter Kit

https://www.silabs.com/development-tools/wireless/bluetooth/bgm220-wireless-starter-kit

 

[3] SLWSTK6103A

https://www.mouser.jp/ProductDetail/Silicon-Labs/SLWSTK6103A?qs=7MVldsJ5UazVuIvsw30gfw==

 

[4] UG432: BGM220P Wireless Gecko Module Starter Kit User’s Guide

https://www.silabs.com/documents/public/user-guides/ug432-brd4311a-user-guide.pdf

 

[5] Simplicity Studio Software

https://www.silabs.com/developers/simplicity-studio

 

[6] Simplicity Studio® 5 User’s Guide

https://docs.silabs.com/simplicity-studio-5-users-guide/latest/ss-5-users-guide-overview/

 

[7] QSG169: Bluetooth® SDK v3.x Quick-Start Guide

https://www.silabs.com/documents/public/quick-start-guides/qsg169-bluetooth-sdk-v3x-quick-start-guide.pdf

 

[8] Silicon Labs Support & Community Bluetooth

https://community.silabs.com/s/topic/0TO1M000000qHWhWAM/bluetooth?language=en_US

 

[9] Silicon Labs 社 EFM32 クイックスタートガイド

https://www.macnica.co.jp/business/semiconductor/articles/pdf/SiliconLabs_EFM32_QuickStartGuide_v2_3__1.pdf

 

[10] Silicon Labs 社 BGM1xx アドバンストガイド(上級編)

https://www.macnica.co.jp/assets/arc/article_files/120897/SiliconLabs_BGM1xx_AdvancedGuide_v2_1__1.pdf

 

[11] EFR Connect BLE Mobile App

https://www.silabs.com/developers/efr-connect-mobile-app

 

[12] Thermometer Example with EFR32 Internal Temperature Sensor

https://docs.silabs.com/bluetooth/2.13/code-examples/applications/thermometer-example-with-efr32-internal-temperature-sensor

 

[13] UG343: Multi-Node Energy Profiler User’s Guide

https://www.silabs.com/documents/public/user-guides/ug343-multinode-energy-profiler.pdf

 

[14] The First BLE Mobile App with Throughput and Mobile Interoperability Tests

https://community.silabs.com/s/share/a5U1M000000koFpUAI/the-first-ble-mobile-app-with-throughput-and-mobile-interoperability-tests?language=en_US

ニュースレター購読Newsletter

登録はこちら