前回の記事では小型のマイコンATTiny85にプログラムを書き込んで動かしてみました。
今回は小型のBLEモジュールAE-TYBLE16を使ってBLE接続を試してみます。
AE-TYBLE16をArduino化して使うような記事は結構ありますが、BLEモジュールとして利用している方は少ないみたいですね。
まずは正攻法?ということでBLEモジュールとして使ってみようと思います。
AE-TYBLE16の詳細仕様は、購入時に同封されている資料に記載のあるパスコードを使って、太陽誘電のHPにてユーザ登録をすることで見れるようですが、ユーザ登録のメールをうまく受け取れず確認できませんでした。
詳細仕様は機密情報みたいなので、ネット上の情報を頼りに問題なさそうな範囲で書いていきます。
開発環境
- Mac Book (10.13.6)
- Arduino IDE (1.8.13)
機材一覧
その他 ブレッドボード、ジャンパワイヤなど
はんだ付け
AE-TYBLE16は購入した状態だと端面スルーホールになっており、以前テストで使っていたスルーホール用テストワイヤが使えないため、はんだ付けが必要です。
こんなこともあろうかと、正月に帰省した際に実家で10年以上も眠っていたはんだごてを回収してきたので、ピンヘッダをはんだ付けしてみました。 あまり綺麗ではないけど動けばOKということで
回路作成
今回はAE-TYBLE16をBLEモジュールとして利用するため、制御用のArduinoを別途用意します。
接続テストなので制御用にArduino Uno R3を使おうと思ったのですが、3.3V駆動のAE-TYBLE16を5VのArduino Uno R3で使うとなるとレベル変換が必要になります。
レベル変換回路をすぐに用意できなかったため、今回は3.3VのESP32を制御用に使うことにしました。
もちろんESP32側のBlueToothは使いません。
ESP32とAE-TYBLE16を以下のようにつなぎました。
テストコード
送受信のテストをしたかったため、Arduino IDEのシリアルモニタからメッセージ送信できるようにしています。
ESP32は16ピンと17ピンがそれぞれRX2とTX2が割り振られているため、AE-TYBLE16とのシリアル通信に利用します。
状態に変更があるとAE-TYBLE16から情報が飛んでくるようです。
// ESP32のRX2,TX2を使用. HardwareSerial bleSerial(2); void setup() { Serial.begin(9600); bleSerial.begin(9600); } void loop() { if(Serial.available()) { // シリアルモニタの入力を送信. String inputSerial = Serial.readString(); Serial.println(inputSerial); bleSerial.println(inputSerial); } if(bleSerial.available()) { String inputBle = bleSerial.readString(); Serial.println(inputBle); if(inputBle.indexOf("CON") != -1) { Serial.println("Connect"); } if(inputBle.indexOf("DCO") != -1) { Serial.println("Disconnect"); } } }
接続
今回は疎通のテストなのでBLEのデバッグアプリを使います。
これまでBLEのデバッグにはLightBlueを使っていたのですが、AE-TYBLE16と相性が悪いのか検出はできても接続ができませんでした。
何度試みてもうまくいかず1日悩みました。
試しにBLE Scannerを入れてみたら無事に接続できました。
デバッグアプリ上で[TYSA-B 3.0.0]と表示されるものがAE-TYBLE16のようです。
2022/01/06 追記
BLE Scannerで接続できるのはiPhoneだけっぽく、手元のAndroidだとLightBlueとBLE Scannerどちらも接続できず。
太陽誘電が出しているTY's Terminal Appを試してみたところ、こちらは接続できました。
さいごに
AE-TYBLE16はそのままだと、起動後一定時間で検出できなくなるみたいなので、今後調整が必要そうです。
次はUnity側のアプリを作成して接続を試してみたいと思います。