BLE リモート・BLE 端末設定仕様
2021 年 06 月 14 日
バージョン

発行日付

改定内容

1.0.0

2021/05/10

初版

1.0.1

2021/06/14

誤記を修正。

1TOPPERS プロジェクト教育 WG

１．概要
本仕様書は、「BLE_REMOTE」の BLE デバイスのソフトウェア仕様とセントラルとの通信とデバイス制御に記載する。
・ハードウェア仕様
BLE 部及びモータ制御部：BVMCN5103-CEAA-BK (内部コアは Nordic nRF51822)

BVMCN5103BLE 4.0
BLE central

CEAA-BK

PWM

BLE peripheral

TC78H653FTG
Motor driver・ソフトウェア開発環境
各ソフトウェア開発環境は以下の通り。
(1) STM32WB55 USB dongle
1. 開発マシン：Windows10 cygwin/msys2
2. SDK : TOPPERS BASE PLATFORM(ST) V1.4.2
3. 開発環境：GCC Tools ARM Embedded 5.4 2016q3/Bush 環境 msys2
4. 書込みツール：STM32CubeProgrammer(2) Nordic nRF51822
１． 開発マシン：Windows10
２．SDK：nRF51SDK1000dc26b5e①Example は ble_peripheral/ble_app_uart を使用する

３． ソフトウェアデバイス：s110_nrf51_8.0.0
４．開発環境：GCC Tools ARM Embedded 5.4 2016q3/Bush 環境 msys2
または、Keil nRF51822_xxAA/device family package 8.2.0
５．開発環境：Keil nRF51822_xxAA/device fa
６．書込みツール：nRFgo studio または nRF Connect
・ビルド手順
各ソフトウェアのビルド手順は以下の通り。
(1) STM32WB55 USB dongle
1. TOPPERS プロジェクトサイトより以下の gz ファイルをダウンロード(ア) asp-1.9.3.tar.gz
2

(イ) asp_arch_arm_m4_gcc-1.9.7.tar.gz(ウ) asp_baseplatformv1.4.2_mmdd21.tar.gz
2. cygwin または msys2 の環境で解凍しビルド環境を構築する
3. asp/OBJ/STM32WB55NUCLEO_GCC/BLE_REMOTE に移動する
4. make DBGENV=ROM BOARDNO=1 SIO_PORTID=2 でビルドし、asp.srecを作成する
5. STMCubeProgrammer で asp.srec を USB dongle に書き込む(2) Nordic nRF51822
1.

Nordic 社の Web より、nRF5-SDK version 10.0.0 をダウンロードし msys2 の作業領域に nRF51SDK1000dc26b5e を解凍してコピーする

2.

nRF51SDK100dc265e/examples/ble_peripheral に ソ ー ス ・ デ ィ レ ク ト リ
ble_app_ratcom をコピーする3.

msys2 より、ble_app_remote/pca10028/s110/armgcc に移動して、make コマンドにてビルドする

4.

armgcc/_build/nrf51422_xxac_s110.hex が作成されるので、これを nRFgo
Studio を使って nRF51822 に書き込む

3２．BLE 通信仕様
・BLE デバイスの設定と通信方法
NUS(Nordic Uart System)アプリ形式で通信する。
通信データはキャラクタタイプの ASCII データとし、パケット単位の通信を行う。
但し、UART 通信の場合はデータのターミネータとして CR を付加する。
送受信キャラクティクスの UUID の設定は以下の通り。
１

CUSTOM SERVICEUUID:6E400001-B5A3-F393--E0A9-E50E24DCCA9E

２CUSTOM CHARACTERSTIC
送信：(W)
UUID:6E400002-B5A3-F393-E0A9-E50E24DCCA9E

３CUSTOM CHARACTERISTIC
受信：(N)
UUID:6E400003-B5A3-F393-E0A9-E50E24DCCA9E

４discriptors
Client Characteristic Configuration(R)-- notrify
UUID:0x2902

・アドバタイジング手順
アドバタイジング手順は以下の通り
ADVERTISING FAST MODE
ADVERTISING INTERVAL 0.625msec
ADVERTISING TIMEOUT

180sec

アドバタイジングでタイムアウトした場合、システムはスリープモードに移行する。再度、アドバタイジングしたい場合は電池の抜きさしによる再起動が必要である。
・ペイロードサイズ
BLE4.0 では MTU サイズが 23 バイトであるため、ペイロードサイズは 20 バイトとなる。BLE 通信はパケット通信を基本とするため、最大送受信サイズを 20 バイトとする。
・通信手順
BLE デバイスとの通信データは以下のパケットとなる。接続後は、以下の通信のやり取りが可能となる。
１） 2 バイトの通信ヘッダ
２） セパレータ：スペースコードまたは’:’4３） 通信データ：通信データ、通信データは’,’によってセパレートされ複数のパラメータを設定することが可能。
４） ターミネータ：LF コード、または、CR コード（BLE 通信では不要）
通信データがない場合は、２）、３）は省略可能。
BLE での通信ではパケット通信となるため、１）から４）までを１パケットで送信すること、この場合、４）は不要となる。
以下の通信データを示す。
１）送信コマンド
ヘッダ

通信データ

内容

GI

なし

インフォメーション・レスポンス(RI)を要求する

GSなし

システム・レスポンス(RS)を要求す
る

GD

なし

デバイス名(RD)を要求する

GVなし

バージョン番号(RV)を要求する

GＭなし

現在のモータ DUTY レスポンスを返す

SI[t_mselect],[t_m_pulse][2],モータ設定と TC78H653FTG の各[t_m_bias][2]ピンの設定を行う

SD[device name]

デバイス名を設定する

SM[m1_duty],[m2_duty]

モータの DUTY を設定する

SU[interval_time],[w_time]

超音波センサーへのセンス要求

device name: BLE Remote のデバイス名、30 文字以内(BLE 通信では 16 文字以内)
t_mselect: 0 の場合、OUT1,2 を第１モータ、OUT3,4 を第二モータとする。1 の場合、
OUT3,4 を第１モータ、OUT1,2 を第２モータとする
t_m_pulse: 第ｎモータの極性を設定
t_m_bias: 第 n モータのバイアス値を設定
m1_duty: 第１モータの DUTY を%値で設定（-100〜100）、または、Ｓm2_duty: 第２モータの DUTY を％値で設定（-100〜100）、または、Ｓ
interval_time: 超音波センサーのインターバル時間(ms)w_time: 超音波センサーの受信時間を待つ時間(ms)5２）受信レスポンス
ヘッダ

パラメータ内容

RI[t_mselect],[t_m_pulse[0]],現在のモータ設定と TC78H653FTG[t_m_pulse[1]],[t_m_bias[0]],の各ピンの設定値を返す[t_m_bias[1]]RS[systemtime],[batteryvalue],[cシステム設定データを返す

error]
RD[device name]

デバイス名を返す

RM[m_duty[0]],[m_duty[1]]

モータ DUTY を返す

RU[start_result],[distance]

超音波センサーの測定距離を返す

RV[version]バージョン番号を返す

battery value: バッテリー電圧値 V×100
c error: コントローラエラー
0:エラーなし、1:eeprom エラー、2:TWI エラー、3:Timer エラー、4:PWM エラー、
8:システムエラー
Start_result:超音波センサー実行結果
1:正常実行、0:実行エラー
distance:対象との距離(mm)、０は測定できなかった・データの保存
BLE デバイスで以下のデータ設定は EEPROM が接続されている場合は、2bytes のマジックコードを加えて、EEPROM の先頭から 64bytes の領域に保存する。64bytes を超える
EEPROM の領域はユーザー用領域であり、ユーザーが自由に使用できる。起動時、マジックコードが設定されていない場合、この領域にデフォルト設定を保存する。EEPROMが接続されていない場合、c_error の正常値は１となる。
保存データサイズ

備考

device name32bytes

デフォルトは「Rat_Communicator00」

t_m_select1bytes

デフォルトは 100

dummy

1bytesリザーブ領域

t_m_pulse

1bytes×2t_m_bias

2bytes×2

デフォルトは 10000(1.0)

t_m_time

2bytes

モータ位相反転時の待ち時間(ms)デフォルトは 600ms

u_s_time

2bytes超 音 波 セ ン サ ー (mi-02) 最 小 受 信 待 ち 時 間(ms)、デフォルトは 100ms6

u_s_interval

2bytes

超音波センサーの実行インターバル時間(ms)、最小時間は 1.5 秒

u_s_report_des2bytes

超音波センサーのレスポンスを発行する最小の移動値(mm)、デフォルトは 20mm・デバッグ機能
BLE デバイスに USB シリアル変換器を接続した場合、コマンドによるデバイス設定が可能となる。
接続仕様：
1. ボーレート：

115200bps

2. データ：8bit

3. パリティ：なし

4. ストップビット： 1bit
5. フロー制御：なし

USB シリアルを接続した場合、以下の機能が有効となる。
１．ログ表示機能
２．送信コマンド、受信レスポンス
但し、自動送信には対応しない

7

３．BLE デバイス制御
デバッグ LED については、デバッグ指定のコンパイル・スイッチが設定されている場
合、アドバタイジング中、または、接続中は LED を点滅する。アドバタイジングタイム
アウト等で BLE デバイスが停止状態になった場合は LED を消灯する。この場合、再起動を行いたい場合は電池の抜き差しによるリセットを行う必要がある。
BLE 部の処理フローを記載する。起動後、初期化を行う。
main 関数

起動：初期化

アプリタイマ初期化(APP_TIMER_INIT)

BLE アプリの初期化内容

UART 初期化(uart_init)

・GPIO の初期化

BLE アプリ初期化(bleremote_init)

・ADC 初期設定

BLE スタック初期化(ble_stack_init)

・I2C 初期設定

GAP 初期化(gap_params_init)

・フラッシュ ROM より

BLE サービス初期化(services_init)

データ読み込み

アドバタイズ設定(advertising_init)

・システムタイマー起動

コネクション設定(conn_params_init)

・PWM 初期設定

モニタのバナー表示(display_string)

アドバタイジングスタート(ble_advertizing_start)

ループ処理に移行

初期化終了8ループ部の処理は以下の通り。

ループ開始

パワー制御(power_manage)

コマンド受信なし
あり

コマンド解析(dispatch)

レスポンス発行

レスポンス
要求あり

要求なし

受信データを保存

データ保存
要求あり

要求なし

モータ設定

モータ制御
要求あり

要求なし

超音波センサー設定

センサー

要求あり

要求なし

9

４．DC モータ制御手順
BLE デバイスでの DC モータ制御手順に関して記載する。
(1) セントラル（スマフォ等）は BLE デバイスのデバイス名で接続を行う。アドバタイ
ジング中は LED が点滅する。３分で LED は消灯するため、再度アドバタイジングを行う場合は、BLE デバイスの電源を OFF→ON する必要がある。
(2) セントラルから SI コマンドを使って、設定情報をモータ設定する。内容を確認したい場合は、GI コマンドを使って RI レスポンスを取得して、モータの設定情報を取得できる。EEPROM が接続されている場合、設定情報は保存されるため、起動時再設定を行う必要はない。
(3) SM:m1,m2 コマンドにてモータドライバへの DUTY を設定しモータを制御する。
(4) GM コマンドにて、現在設定されているモータの DUTY 設定値を取得できる。
(5) セントラルからの切断要求、または、BLE デバイスの電源 OFF で通信は切断される。
(6) セントラルから G1 コマンドを受信した場合、R1 レスポンスによるピーク電流測定値の送信を行う。

10

５．BLE REMOTO のビルド手順(1) TOPPERS BASE PLATFORM(ST) V1.4.2 の設定。
基礎２教材の１日目の「TOPPERS/ASP カーネルの導入」の 3.ビルドと実行を参照。
(2) STM32Cube STM32_WPAN ミドルウェアの設定「TOPPERS BASE PLATFORM(ST) V1.4.2」の 6.7.1 章の STM32_WPAN ミドルウ
ェアを参照。
(3) アプリケーションのビルド
asp/OBJ/STM32WB55NUCLEO_GCC/BLE_REMOTE に移動し、USB ドングル用にビルドを行う。
$ make BOARDNO=1 SIO_PORTID=2(return)
ビルドした asp.srec を、STM32CubeProgrammer を使って USB ドングルに書き込む。
BLE バイナリ V1.11.0：stm32wb5x_BLE_Stack_full_fw.bin も更新すること。
(4) Android 用 BLE REMOTE アプリ
添付の app-release.apk を Android にインストール。

11

８．未確定項目
未確定内容

記載日

12
3
4
5
6
7
8

12

解決日

解決内容