Bluetooth を介した HC-06 との通信
この例では、シリアル ポート プロファイルを使用して HC-06 Bluetooth® モジュールと通信する方法を示します。
ハードウェア要件
内蔵または外付けの Bluetooth 2.0 対応アダプターを搭載した Windows® 10 または macOS マシン
HC-06 Bluetooth モジュール
FTDI コンバーターや Arduino® ボードなどの 5 V の電源
数本のワイヤー
ハードウェア セットアップ
この例では、ループバック デバイスとして構成された HC-06 Bluetooth トランシーバー モジュールを使用します。HC-06 モジュールで以下を行います。
VCC ピンを 5 V の電源に接続する。
GND ピンを接地する。
TXD ピンを RXD ピンに接続する。
HC-06 モジュールの LED が点滅している場合、デバイスの電源が入っていることを示します。次に、ホスト コンピューター上のデバイスをペアリングして、MATLAB® での接続を許可します。特に設定されていない限り、既定の PIN コードは 1234 です。
デバイス情報の取得
関数 bluetoothlist
を呼び出して、Bluetooth デバイスのアドレスまたは名前と、SPP チャネル番号を特定します。デバイスのステータスが "Ready to connect"
であることを確認します。これは、デバイスの電源がオンで、ペアリング済みであることを示します。デバイスの情報が既にある場合は、この手順をスキップできます。
bluetoothlist
Run blelist to search for nearby Bluetooth Low Energy peripheral devices.
ans=4×4 table
Name Address Channel Status
___________ ______________ _______ __________________
"HanaBTDev" "CC78AB79656F" Unknown "Unknown"
"EUCLID" "0016530CE4AC" Unknown "Unknown"
"HC-06" "98D331FB3B77" 1 "Ready to connect"
"DMTDevice" "B0B448F47A4C" 1 "Requires pairing"
デバイスへの接続
デバイスのアドレスまたは名前と SPP チャネル番号を使用し、関数 bluetooth
を呼び出してデバイスに接続します。デバイス名が一意の場合はそれを指定し、そうでなければデバイスのアドレスを指定します。
hc06 = bluetooth("HC-06", 1)
hc06 = bluetooth with properties: Name: "HC-06" Address: "98D331FB3B77" Channel: 1 NumBytesAvailable: 0 NumBytesWritten: 0 Show all properties
データの読み取りと書き込み
HC-06 を MATLAB に接続した後、関数 write
を呼び出してバイト データまたは string データをデバイスに書き込みます。
write(hc06, 1:10);
write(hc06, "helloworld");
デバイスはループバックとして構成されているため、デバイスで受信したデータはすぐに MATLAB に返されます。read
を呼び出してデータを読み取ります。
read(hc06, 10)
ans = 1×10
1 2 3 4 5 6 7 8 9 10
read(hc06, 10, "string")
ans = "helloworld"
終端文字列データの送受信の詳細については、readline
と writeline
を参照してください。
非同期でのデータの収集
コールバック関数を使用して、データが Bluetooth デバイスに書き込まれると同時に読み取ることができます。5 バイトのデータがデバイスから送信されて MATLAB で受信されるたびに、configureCallback
を呼び出し、そのデータを読み取って収集します。
function collectData(src, evt) % Read received data and store it in the UserData property on the bluetooth object src.UserData = [src.UserData; read(src,src.BytesAvailableFcnCount)]; end
configureCallback(hc06, "byte", 5, @collectData);
デバイスにデータを書き込みます。データは直ちに MATLAB に送り返され、コールバック関数をトリガーしてデータを読み取り、表示します。
write(hc06, 1:20);
% Wait for all callbacks to be processed
pause(1);
disp(hc06.UserData);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
デバイスからの切断
作業が終了したらデバイス オブジェクトをクリアします。
clear hc06