RN-42 Bluetoothモジュールを使う
Bluetoothを利用してデータ通信を行う場合,最近ではBLEが頻繁に利用されています.一方で,PCと接続して一般的なシリアルポートとして利用したい場合も多いかと思います.その場合SPP(Serial Port Profile)と呼ばれるBluetoothをSerial PortとしてPC側からファイルディスクリプタを作成し,あたかもシリアル通信していると同様の手順で簡単に通信を実現できます.すでに市販されている製品でも多くがこのSPPを利用したものが散見されています.このページではSPPを利用してデバイスとPCとのデータ通信を実現するための手順を記述します.
SPPモジュールの購入
SPPデバイスを制作するために,このページではRN-42と呼ばれるSPPモジュールを紹介します.ハンダ付けに自身のある人は,1番を,そうでない人は2番の評価キットをお薦めします.
- RN-42-I/M, Bluetooth Module
- RN-42-I/M, 評価キット
- 評価キットで接続テスト(Processing)
評価キットではすでに基板実装済みですので,手順は簡単です.
USBケーブルで評価キットとPCを接続する.(この場合は電源を投入するだけなので,PCに刺さなくともスマートフォン充電器でも構いません) 電源が入ると緑色ランプが2Hzで点滅します. OS(Windows, Mac, Linux)側からBluetoothのペアリングを行います.デバイスファイル名はRNBT-XXXXとなります(XXXXは任意の16進数) 接続すると,WindowsではCOMX, Mac, Linuxであれば /dev/以下にデバイスファイルが作成されます 下記Processingプログラムを実行する.ただしSerialへのパスはOSの環境,デバイスの環境に応じて修正してください.
/*
SSP(Serial Port Profile) Connection test.
RN-42-I/RM, Bluetooth Module by Microchip company
http://akizukidenshi.com/catalog/g/gM-07612/
2016(C) Tetsuaki Baba, baba@tmu.ac.jp
*/
import processing.serial.*;
Serial serial;
String str = "";
println(Serial.list());
size(500, 500);
// Change device path as your PC's enviroment
serial = new Serial(this, "/dev/cu.RNBT-963F-RNI-SPP", 9600);
//serial = new Serial(this, "COM5", 9600); // for windows
background(50);
// start CMD Mode
serial.write("$$$");
// wait for device responce
delay(1000);
// show device message
while ( serial.available() > 0 ) {
str = str + (char)serial.read();
}
serial.write("D\r");
delay(1000);
while ( serial.available() > 0 ) {
str = str + (char)serial.read();
}
serial.write("---\r");
delay(1000);
while ( serial.available() > 0 ) {
str = str + (char)serial.read();
}
text(str, 20,20);
serial.dispose();
上記プログラムで実行し,数秒待った後に画面上にデバイス詳細の文字が表示されれば接続成功になります. モジュール単体(RN-42-I/M)で動作確認する
最初にハンダ付けをして,回路を作成した後,上記評価キットと同様の手順で確認できます.
Mac側での問題
Macで基本的には問題なく動作確認できるのですが,シリアルポートを開く際,Resource Busy等と表示されてプログラム実行に失敗することがよくあります.現在根本的な解決はわかっていませんが,何度かトライすると接続できますので,注意してください.なおWindowsではこのようなことありません.