Chapter 3. アプリケーション例
3.4 RN4020 のスクリプト機能のデモ
このセクションでは、RN4020 Bluetooth Low Energy PICtail™/PICtail Plus ドータ ボードでスクリプト機能のデモを行う手順について説明します。
3.4.1
プライベート サービスおよびキャラクタリスティックのセットアップスクリプト機能は、プライベートサービスおよびキャラクタリスティックと組み合わ せて使う事を推奨します。スクリプト機能における主要な入力/出力ペリフェラルは、
アナログまたはデジタルポートです。データ フォーマットが事前に定義されたパブ リック サービスおよびキャラクタリスティックでは、RN4020のポートの読み出しま たは出力と連携しない事があります。しかし、プライベート サービスおよびキャラク タリスティックならデータフォーマットを自由に定義できます。従って、BTLE接続 のピアデバイスはスクリプト実行側デバイスの介在なしにデータ補完機能を実行で きます。
以下の UART ASCII コマンドでプライベート サービスおよびキャラクタリスティッ
クをセットアップします。
+ // Echo on
SF,1 // Factory Reset
SS,00000001 // Enable private service SR,00000000 // Set as Peripheral PZ // Clean private Service
PS,123456789012345678901234567890FF // Set private service UUID PC,12345678901234567890123456789011,12,02 // Set private
// characteristic to be readable, notifiable and 2 bytes // in length
PC,12345678901234567890123456789022,02,02 // Set private // characteristic to be readable and 2 bytes in length
R,1 // Reboot
再起動後、「LS」コマンドを使ってサーバー特性を確認できます。
123456789012345678901234567890FF
12345678901234567890123456789011,000B,02,02 12345678901234567890123456789011,000C,10,02 12345678901234567890123456789022,000E,02,02
3.4.2
スクリプト入力スクリプトの書き込みを開始するには、以下のコマンドを実行してスクリプトをクリ アした後、スクリプト入力モードを開始します。
WC // Clean script
WW // Enter script input mode
次に、以下のスクリプトを入力します。スクリプトの入力が完了したら<ESC>キー を押して終了します。
@PW_ON
# start advertisement A
# define range of variable $VAR1
$VAR1 < “0300”
# associate handle 0x000E to reading of AIO2
イズが開始します。次に、$VAR1のレンジを0x0300未満と定義します。最後に、ハ ンドル0x000EをアナログポートAIO2(温度センサ)に関連付けます。
接続が確立すると、イベント@CONNが発生します。このスクリプトは、Timer1の タイムアウト時間を約5秒に設定しています。
Timer1 がタイムアウトになると、イベント @TMR1 が発生します。AIO0 を読み出 し、その読み値を$VAR1に代入します。読み値が事前に定義されたレンジ(< 0x0300) 内の場合は、その値がハンドル0x000Bに書き込まれます。それ以外の場合は、ハン ドル0x000Bは更新されません。
必要に応じて、コマンド「WR,<0-9>」を使ってスクリプトをデバッグできます。
3.4.3
スクリプトの実行スクリプトを実行するには、以下のコマンドを発行して起動後にスクリプトが有効に なるようにします。
SR,01000000 // Run script after power on
R,1 // Reboot
再起動後、スクリプト実行が開始します。ユーザはスマートフォンまたはタブレット でBluetoothアクセス アプリケーションを開き、RN4020モジュールに接続できます。
キャラクタリスティック0x12345678901234567890123456789011をタップし、ノー ティフィケーションを開始します。
5秒ごとにAIO0(光センサ)が読み出されます。AIO0の値が$VAR1 < “0300”の条件 を満たすと、キャラクタリスティック値が5秒ごとに更新されます。
光センサに明るい光が当たるとAIO0の読み値は通常0x0400を超えるため、ハンド ル0x000Bの値は更新されません。光センサへの光を遮ってAIO0の読み値が0x0300 未満になると、Bluetoothアクセスアプリケーションの値が更新されます。
反対に、ユーザがBTLE BROWSER APPを使ってキャラクタリスティック
0x12345678901234567890123456789022の値を読み出す事ができます。対応するハ ンドル0x000EはAIO2に関連付けられているため、ハンドル0x000Eを読み出すと ホストMCUの介在なしにAIO2の読み値が返されます。
このデモでは、スクリプトがRN4020モジュールを動作させ、タスクを独立して実行 しています。このように、シンプルなアプリケーションであればRN4020モジュール はホストMCUなしの単体で動作できます。
モジュール ユーザガイド 補遺 A. PICtail™ ドータボード回路図
この補遺では、PICtailドータボードの回路図(下記参照)を示します。
• 図A-1:「RN4020モジュール」
• 図A-2:「PIC18LF25K50-I/ML」
• 図A-3:「28ピンおよび30ピンPICtail™コネクタ」
• 図A-4:「RN4020モジュールのブレークアウト ピン」
• 図A-5:「ステータスled」
• 図A-6:「電圧レギュレータ」
• 図A-7:「PIC18LF25K50-I/MLのデカップリング コンデンサ」
• 図A-8:「テストスイッチ」
• 図A-9:「ICSP™ コネクタ」
図A-1: RN4020モジュール
BT_UART_TX BT_UART_RX SWAKE CMD/MLDP
PIO7 RSVD1 RSVD2
SPI_PIO AIO0
AIO1 AIO2
4.7uF C1
BT_UART_RTS
VDD3V3
RSVD3 1 GND
2 AIO2 3 AIO1 4 AIO0
UART_TX 5
UART_RX 6
WAKE_SW 7
CMD/MLDP 8
GND9 PIO1/SCK MLDP_EV/PIO2/CS PIO4/MISOWS/PIO3/MOSI CTS/PIO5 WAKE_HW GND SPI/PIO 17 RTS/PIO6 18 PIO7 19 RSVD 20 RSVD 21 RSVD 22 VDD 23 GND 24
M1 RN4020
モジュール ユーザガイド
p.78 2015 Microchip Technology Inc. RA21
RA32RA43
RA54
VSS5
RA76
RA67
8 RC0 9 RC1 10 RC2
VUSB3V3 11
12 D-13 D+
14 RC6
RC715 VSS16 VDD17 RB018 RB119 RB220 RB321
RB4 22
RB5 23
RB6 24
RB7 25
MCLR/VPP/RE3 26
RA0 27
RA1 28
TH29
PIC18LF25K50-I/ML U2
GND 5
D+D- 32
VBUS 1
6 MTAB
USB Mini B
J5 VUSB
D-D+
VDD3V3
4k7 R6
VDD3V3 MCLR
PGD PGC VUSB
10kR5 4k7R4
10nFC4
BT_UART_RTS
BT_UART_TX BT_UART_RX
SWAKECMD/MLDP
BT_UART_CTSBT_WAKE
VDD3V3
RSVD3
SENSE BT_UART_TX
PIO1 PIO2
RSVD2
RB2/SS1/AN2
1 RF2/U1RX_E 2
RF6/SCK1
3 RF3/U1TX_E 4
RF7/SDI1_E
5 RG2/SCL1 6
RF8/SDO1_E
7 RG3/SDA1 8
9 GND
GND 10 RB0/AN0
11 RB1/AN1 12
1 RE2 RA5 2
3 RE3 RA4 4
RA7/OSC1
5 RA3 6
RA6/OSC2
7 RC5 8
9 RC7 RC4 10
11 RC6 RC3 12
13 RB7 RA0 14
15 RB6 RA1 16
17 RB5 RA2 18
19 RB4
RC0 20
21 RB3 RC1 22
23 RB2 RC2 24
25 RB1 V_VAR 26
27 RB0 GND 28
J1 PICTAIL 28 Pin
Vin i Power Net
BT_UART_TX BT_UART_RX
BT_WAKE BT_UART_TX
BT_UART_RX
BT_UART_RTS SWAKE
CMD/MLDP BT_UART_CTS
BT_WAKE
MCLR PIO1
PIO3 PIO4
SENSE PIO1
PIO2PIO3
図A-5: ステータスLED 12
34 56 78 J3
12 34 56 78 J4
1 2 3 4 5 6 7 8 J6
BT_UART_TX BT_UART_RX AIO0AIO1
AIO2
PIO7 SPI_PIO
PIO1 PIO2 PIO3 PIO4 BT_WAKE SWAKE
CMD/MLDP BT_UART_RTS
BT_UART_CTS
VDD3V3
RSVD1 RSVD2 RSVD3
Red D2 Blue D1
Green D3 330R R3 330R R2
330R R1
PIO1
PIO2
PIO3
図A-7: PIC18LF25K50-I/MLのデカップリング コンデンサ
図A-8: テストスイッチ
図A-9: ICSP™ コネクタ