Main Content

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"

終端文字列データの送受信の詳細については、readlinewriteline を参照してください。

非同期でのデータの収集

コールバック関数を使用して、データが 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