Bluetoothの通信プロトコルは非常に複雑で、手持ちのマイコンにBluetooth機能を1から実装するというのは、ハードルがかなり高いです。中身の理解は置いといて、簡単にBluetoothを使いたいときには、まず、Bluetoothモジュールを利用することをおすすめします。この記事では、RN42というBluetoothモジュールを例にして、簡単にBluetooth通信を実現する方法をまとめてみました。
Bluetoothとは?
詳細は、色々なサイトで解説されているので、省略しますが、ざっくりというと、2.4GHzの周波数帯で信号の送受信をおこなうものです。よく知られているWi-Fiも同じ周波数帯なのですが、通信帯域がBluetoothはWi-Fiの1/20以下で、通信速度も遅く、BluetoothがEDRというモードで通信速度が 2~3Mbpsなのに対して、Wi-Fiは数十Mbpsと1オーダ違います。
なら、通信がはやいWi-Fi使えばいいじゃんかという話になりますが、Bluetoothにも、いくつかメリットもあります。
Bluetoothの3つのメリット
1.短い距離を確実に通信できる
Bluetoothは周波数ホッピングという方法で、逐次、通信する周波数帯を変更しながら、信号のやり取りをします。このため、常に通信チャンネルを確保しやすく、安定したデータの送受信が行えます。要するにこうやって、他の無線機器とかぶらないようにする訳です。
2. 消費電力が少ない
Wi-Fiと比較してもBluetoothは1オーダー消費電力が少なく、IoTなど、ボタン電池で駆動するデバイスに最適です。Wi-Fiに比べて、通信距離は割り切って、信号出力を下げ、電池の持ちを良くしています。
3. デバイス間の通信が簡単
Wi-Fiが単なるデータ通信なのに対して、BluetoothはProfileと呼ばれる通信仕様が決まっています。例えば、ヘッドフォンとの接続ならA2DP、シリアル通信であればSPPというProfileを使用し、使用目的に合わせてprofileを実装します。profileは一種の割符のようなもので、デバイス間で同じ割符をもっていれば、通信が保障され、簡単に応用機器間の通信が可能です。
今回は、マイコンとPCをSPPというProfileを利用して通信していきたいと思います。
今回やりたいこと
今回実現を目指す機能は以下のような感じです。Bluetooth機能が搭載されたPCを使って、Windowsアプリ上で設定した数値or文字データをワイヤレスでマイコン側で受信できるようにします。
Bluetoothモジュール AE-RN-42
機能の実現には、AE-RN-42を使います。SPPというプロファイルを利用でき、マイコン側はUARTとして信号を扱うだけで、特別にBluetoothの通信を意識せずに、無線化することができます。
AE-RN-42 : Bluetooth無線モジュール評価キットRN42に変換基板を実装した秋月電子通商のオリジナル品 2,400円ぐらいでゲットできます。
今回使用するピンは合計6ピンです。
購入後は、ピンヘッダをハンダづけしました。おそらくブレッドボードを利用する方はヘッダを裏側に立てたほうが良いと思います。今回は都合があって、逆側につけました。
RT-SとCT-Sにシャントコネクタを差し込み、短絡させます。
PCと接続してみる
Bluetooth機能を確認するため、RN42とPC間の接続を確立します。
RN42は3.3V電源なので、FRDM-K64から電源供給しました。RN42のボード上の緑のLEDが点滅するのを確認したら、windowsから以下の手順でつなげてみます。
(windows10環境での設定方法です)
タスクトレイにあるBluetoothデバイスをクリックして、デバイスの追加を選択
デバイスリストから’RNBT-20A6’が表示されるので、クリックして、接続する。PINコードが要求されれば、1234と入力する
これでSPPによって、BluetoothはPC上でCOM14のシリアルポートとして認識されるようになりました。
ターミナルソフト Tera Termを使って、実際にCOM14を通じて、信号を送受信してみます。なお、Tera Termの使用方法は他のサイトで色々とあるので、調べてみてください。ここでは、ポートの設定だけ表示しておきます。デフォルトのbaudrate設定は115200bpsになります。
接続後、$$$うてば、コマンドモードに入り、緑色のLEDの点滅がはやくなり、—とうてば、コマンドモードから抜け出し、LEDの点滅間隔ももとに戻ります。Bluetoothの接続確認はこれで行えました。なお、コマンドモードでは、コマンドベースでモジュールの様々な設定がおこなえます。以下のリンクが詳しく説明されています。
https://qiita.com/TakeoChan/items/a1148546d2e56b8173b8
ためしにDと打って、セッティング情報を表示してみます。
これだけです。PCとモジュールが無線で無事つながりました。