以前の記事でAE-TYBLE16をArduinoのBLEモジュールとして使ってみましたが、このままでは複数個設置した時に判別がつかないのと、一定時間で検出ができなくなってしまうため、デバイス名とタイムアウト時間を変更したいと思います。
それぞれの変更方法は太陽誘電から公開されている以下のデータレポートから確認できます。
回路
回路は以前の記事と同じになります。
テストコード
シリアルモニタからの入力で直接コマンドを叩けるように、 AE-TYBLE16から返ってくる結果をシリアルモニタで確認できるようにしています。
// ESP32のRX2,TX2を使用. HardwareSerial bleSerial(2); void setup() { Serial.begin(9600); bleSerial.begin(9600); } void loop() { if(Serial.available()) { // シリアルモニタの入力を送信. String input = Serial.readString(); Serial.println(input); bleSerial.println(input); // コマンド // BST3MYAETYBLE16 - Device Name MYAETYBLE16 // BCD0 - Advertising stop // BST5010000 - Advertising timeout is disable // BRS - Reset } if(bleSerial.available()) { String bleInput = bleSerial.readString(); Serial.print(bleInput); } }
コマンド入力
データレポートを見るとAE-TYBLE16のコマンドは以下のフォーマットにすれば良いみたいです。
B[Command][Parameter]<CR><LF>
CRLFまでがコマンドらしいので、シリアルモニタの改行設定をCRおよびLFにしておきます。
コマンド入力はConnectionしていない状態のみ有効みたいです。
デバイス名の変更
BST3[変更したいデバイス名]を入力します。
NAK02が返ってきた場合は、Advertisingによるエラーのようで、先にBCD0と入力してAdvertisingを停止してから再度コマンドを入力してください。
ACTと返ってきたら成功です。
再起動後に有効になるみたいなので、BRSと入力するか電源を入れ直します。
Advertisingタイムアウトの変更
タイムアウトを無効にしたかったので、BST5010000を入力しました。
前半のBST501までがタイムアウト時間変更のコマンドで、後半の4桁がタイムアウト時間の指定のようです。
0000を指定するとタイムアウトが無効になります。
さいごに
これで複数のAE-TYBLE16を使っても競合することなく、電源を入れたらいつでも接続できるようになりました。
次はATTiny85でAE-TYBLE16を動かしてみようと思います。