Arduinoからのキャラクタリスティックの値の書き込み

解説

Arduinoからのキャラクタリスティックの値の書き込みについてまとめます。

RN4020の動作電圧は、3.3[V]。これに対してArduinoのピンからの出力電圧は、5.0[V]。
RN4020の受信端子(RDX)への入力電圧は、抵抗を用いて分圧します。
今回は、1.8k[Ω]と3.3k[Ω]の抵抗を用いました。
(RN-42の受信端子(RDX)への入力電圧は、5.0 * 3.3k / ( 3.3k + 1.8k ) = 3.2352[V] となる)

ここでは、「プライベートサービスの作成と設定」で作成・設定したプライベートサービスのキャラクタリスティックの値を書き込みます。

作成したプライベートサービスの仕様

作成したプライベートサービスの仕様としては、以下です。

関連コマンド解説

キャラクタリスティックの値の書き込み「SUW」

「SUW,<UUID>,<値>」※でキャラクタリスティックの値を書き込みます。


<UUID>は、キャラクタリスティックのUUIDの16進数値です。UUID は、パブリック キャラクタリスティックの場合は16 ビットの短いUUID(16進数表現で4桁)、プライベート キャラクタリスティックの場合は128ビットの長いUUID(16進数表現で32桁)です。
<値>は、書き込む値です。

詳細は、「RN4020 Bluetooth® Low Energy モジュール ユーザガイド」の「SUW」コマンドの説明を参照。

「1つ目」のキャラクタリスティックの値を書き込むコマンドは以下のようになります。
UUIDは、「FF6B14268FE611E7ABC4CEC278B6B50A」です。
書き込む値は、16進数値で書き込みます。例えば10進数の10は「0x000A」、10進数の20は「0x0014」、10進数の1000は「0x03E8」です。
10進数の10を書き込む場合は、「SUW,FF6B14268FE611E7ABC4CEC278B6B50A,000A」と入力します。
10進数の20を書き込む場合は、「SUW,FF6B14268FE611E7ABC4CEC278B6B50A,0014」と入力します。
10進数の1000を書き込む場合は、「SUW,FF6B14268FE611E7ABC4CEC278B6B50A,03E8」と入力します。

「2つ目」のキャラクタリスティックの値を書き込むコマンドは以下のようになります。
UUIDは、「FF6B15488FE611E7ABC4CEC278B6B50A」です。
書き込む値は、16進数値で書き込みます。例えば文字列「ABCDE」は「0x41 0x42 0x43 0x44 0x45」、文字列「abcde」は「0x61 0x62 0x63 0x64 0x65」、文字列「Hello!」は「0x48 0x65 0x6C 0x6C 0x6F 0x21」です。
文字列「ABCDE」を書き込む場合は、「SUW,FF6B15488FE611E7ABC4CEC278B6B50A,4142434445」と入力します。
文字列「abcde」を書き込む場合は、「SUW,FF6B15488FE611E7ABC4CEC278B6B50A,6162636465」と入力します。
文字列「Hello!」を書き込む場合は、「SUW,FF6B15488FE611E7ABC4CEC278B6B50A,48656C6C6F21」と入力します。

部品表

部品名 数量 商品名 参考価格
Arduinoボード 1 Arduino Uno 2,780円
ジャンパーワイヤ 適量 ジャンパーコード(オス-オス)セット 100mm49個
150mm8個
200mm4個
250mm4個
のセット200円

接続表

接続先   RN4020モジュール   接続先
ピン名称 ピン名称 ピン番号 ピン番号 ピン名称 ピン名称
Arduinoの3V3 VCC 1 20 AIO2 無接続
ArduinoのDigital 6 UART TX 2 19 AIO1 無接続
ArduinoのDigital 7
(1.8kΩ抵抗, 3.3kΩ抵抗で分圧する)
UART RX 3 18 AIO0 無接続
無接続 - 4 17 PIO1 無接続
無接続 WAKE_HW 5 16 PIO5 無接続
無接続 I2C_SCL 6 15 PIO3 無接続
無接続 I2C_SDA 7 14 - 無接続
無接続 - 8 13 WAKE_SW 無接続
無接続 PIO4 9 12 PIO6 無接続
共通GND GND 10 11 PIO2 無接続

接続例



サンプルコード

Arduinoでコマンド送信とAndroidアプリで値の確認

サポートサービスの設定

USBシリアル変換モジュールを用いて、
プライベートサービスの作成と設定」に従い、プライベートサービスを設定します。
設定後、USBシリアル変換モジュールを取り外します。

Arduinoへのプログラム書き込み

Arduinoに上記「サンプルコード」を書き込みます。

Arduinoからのキャラクタリスティックの値の書き込み

上記「接続例」の接続を行います。
USBケーブルを接続し、Arduinoに電力が供給されると、Arduinoからのキャラクタリスティックの値の書き込みが開始します。

Androidアプリで値が書き換わっていることの確認

Androidアプリ「BLE Scanner: Read,Write,Notify」のサービス「CUSTOM SERVICE」の2つのキャラクタリスティック「CUSTOM CHARACTERISTIC」の右の「R」ボタンをそれぞれタップします。
「1つ目のキャラクタリスティック」の値として、16進数値が表示されます。
「2つ目のキャラクタリスティック」の値として、文字列が表示されます。

Androidアプリで値の自動更新

「1つ目のキャラクタリスティック」は、ノーティファイが可能です。
「1つ目のキャラクタリスティック」の右の「N」ボタンをタップします。
「Notify」を有効にすると、「N」ボタンが緑色になります。



「1つ目のキャラクタリスティック」の値が、自動更新されます。

以上で、Arduinoからのキャラクタリスティックの値の書き込みと確認ができました。

ダウンロード

サンプルスケッチファイル