ざっくりいうと
技適認証済で値段もそれほど高くない Bluetoothシリアルモジュール MDBT42Q-AT を試して、データの送受信を確認した。
SPP でなく BLE で動作するので、アプリ側も BLE の対応が必要。BLE については勉強不足なので、それが今後の課題。
技適認証済のBluetoothシリアルモジュール
以前 JDY-31 という Bluetoothシリアルモジュール を試しました。(記事は「激安Bluetoothシリアルモジュール JDY-31 を試す」です。)激安で使いやすそうだったのですが、技適認証を受けてないようなのが欠点でした。今回は、技適認証済でさほど高くないモジュールを試します。
今回試すのは MDBT42Q-AT というモジュールです。nRF52832 という SoC が載っている MDBT42Q という BLEモジュール に、ATコマンドが使えるファームウェアを書き込んだもののようです。
スイッチサイエンス で 759円 で買いました。データシートは こちら です。
回路を作る
元のモジュールは、0.7mmピッチの端子で使いにくいので、まず、ピンヘッダを取り付けて、使用する信号を引き出します。
今回は最低限必要な端子として、GND , VDD , RX , TX , LED の 5つの信号を引き出しました。ピンの配置は JDY-31 と同じかんじにしてみました。
UART PD 端子は GND に接続してください。未接続か H だと UARTが無効になります。気付くまで しばらく悩んでしまいました。隣のピンがGNDなのでハンダブリッジしてもいいでしょう。
LED は状態によって点滅が変わる端子です。負論理のようなので LED の先は VDD に接続しています。また、接続すると H→L になる Indicator という端子もあります。( L→H にも設定可)
フロー制御用の CTS , RTS もあります。また、アナログ入力が1つと、デジタル出力が8つあり、ATコマンドで読み書きできます。
次にテスト用の回路をブレッドボードで作りました。JDY-31 の時とほとんど同じです。相変わらず USBシリアル変換器が 5Vなので、3.3Vを作っています。また、今回のモジュールは、5Vトレラントではないので、5V の信号は分圧してから入力をしています。
モジュールの設定
ターミナルソフトでUSBシリアルに接続し、モジュールの設定をします。
通信設定は、パリティなし、バイトサイズ8、ストップビット1、で、ボーレートはデフォルトでは 9600bps です。他のデバイスと接続する前はATコマンドで操作できます。
以下は設定の確認と変更をする様子です。「AT」で始まる行はこちらが入力したコマンドで、その他は MDBD42Q-AT からの応答です。モジュールからの応答には改行はありませんでした (複数行応答するコマンドを除く)。
AT?VERSION ←バージョン確認コマンド version: 1.3 ←バージョンの返答 AT?NAME ←デバイス名確認 Raytac AT-UART ←デフォルトのデバイス名 AT+NAMEGabryBLE ←デバイス名を「GabryBLE」にしてみる GabryBLE ←変更された AT+PHYMODE2MBPS ←PHYモードを2Mbpsにする(スループット向上) 1 PHY mode 2Mbps ←変更された AT+BAUDRATE115200 ←通信速度を115200bpsにする 4 baudrate115200 ←通信速度はリセット後に変更される AT+RESET ←リセットコマンド reset success ←設定が保存され、通信速度が変わる
接続テスト
まず、判明したことは、このモジュールは あくまで BLE モジュールであるということです。元の MDBT42Q は BLE モジュールであることはわかっていたものの、「ファームウェアによって SPP (Serial Port Profile)で接続できるようになってないかな」と少し期待していたのですが、そういうものではありませんでした。
そのため、ソフトウェア側が BLE に対応している必要があります。
Android端末から、以下のターミナルソフトで接続・通信できることを確認しました。
Serial Bluetooth Terminal / Kai Morich
モジュールの電源を入れると、アドバタイズを開始し、LEDは、0.5秒 点灯、0.5秒消灯、を繰り返します。ターミナルソフトからデバイスを選択し、接続すると、LEDは、0.2秒点灯、1.8秒消灯、を繰り返します。アドバタイズの時間や LEDの点滅パターンは変更できます。
接続する際に PIN を入力する必要はありませんでした。また、モジュールの設定に PIN などセキュリティ関係の設定は無いようです。そのため、アドバタイズ中には近くにあるどのデバイスからも接続できてしまうのですが、特定のデバイス以外と接続できないようにする方法はわかりませんでした。
接続した状態で、PC側のターミナルソフト、Android側のターミナルソフト、相互に文字列を送信できることを確認しました。
良いソフトが見つからなかったので、今回はWindowsでの接続テストは行いませんでした。
まとめ
MDBT42Q-AT モジュールで、Android端末と通信を行えることを確認しました。
ただ、特定のデバイス以外と接続しないようにする方法は 現在のところ不明です。
SPP でなく BLE で通信を行うため、ソフト側が BLE に対応している必要があります。AndroidでBluetooth のソフトを開発したことがないため、開発する際に両者にどの程度の差異があるのか不明です。今後、ソフトの開発もしてみようと思います。
このモジュールを含めて、BLE機能を内蔵した 比較的安価な SoC をしばしば見かけるので、BLEの開発手法を学んでおくと、工作の幅も広がりそうです。ただ、そもそも BLE についてすら よくわかっていないので 学ぶのは大変そうです。
更新履歴
2020.05.13 公開
コメント