プロジェクト16:Bluetoothリモートコントロール

(1)概要:
ここ数十年、Bluetoothは使いやすさからバッテリー駆動のほとんどのデバイスに広く利用されており、最も人気のあるワイヤレス通信モジュールとなっています。
時代やユーザーのニーズに対応するため、Bluetoothは何度もアップグレードされてきました。近年では、データ転送速度、ウェアラブルデバイスやIoTデバイスの消費電力、セキュリティシステムなど多くの面で変革を遂げています。ここでは、ArduinoボードとDX-BT24について学習します。
(2)仕様:
Bluetoothプロトコル:Bluetooth Specification V5.1 BLE
シリアルポートの送受信バイト数制限なし
通信距離:40m(開放環境)
動作周波数:2.4GHz ISMバンド
変調方式:GFSK(ガウス周波数偏移変調)
セキュリティ機能:認証および暗号化
サポートサービス:Central および Peripheral UUIDs FFE0、FFE1、FFE2
消費電力:自動スリープモード、スタンバイ電流 400uA〜800uA、送信中 8.5mA
電源:5V
動作温度:–10〜+65℃
(3)接続図:
1.STATEはステータステストピンで、内部発光ダイオードに接続されており、通常は未接続のままにします。
2.RXDは受信端子のシリアルポートインターフェースです。
3.TXDは送信端子のシリアルポートインターフェースです。
4.GNDはグランドです。
5.VCCはプラス極です。
6.EN/BRK:これを切断するとBluetoothが切断され、通常は未接続のままにします。
(注:ここではBluetoothをV2シールドに直接接続します。方向に注意してください)

(4)アプリのダウンロードとインストール:
iOSシステムの場合
1. App Storeを開きます。
2. Apple Storeで KeyesRobot を検索し、ダウンロードをクリックします。

3. アプリがインストールされると、スマートフォンのデスクトップに以下のアイコンが表示されます。

iOSスマートフォンをBluetoothモジュールに接続する方法:
1. 設定からスマートフォンのBluetoothと位置情報サービスをオンにします。

2. 設定からKeyesRobot APPがBluetoothにアクセスすることを許可します。

3. KeyesRobot Appをタップして開きます。

4. KeyesRobot Appは複数のkeyestudioロボットに対応したユニバーサルAPPです。インターフェースに「TANK ROBOT」が表示されていない場合は、左右のボタンをクリックして「TANK ROBOT」を見つけてください。
5. 右上隅の Bluetooth ボタン
をクリックしてBluetoothをスキャンします。

6. BT24 という名前のBluetoothが表示されます。Connect ボタンをクリックします。

7. BluetoothモジュールのオンボードLEDが点滅をやめて点灯し続ければ、スマートフォンがBluetoothモジュールへの接続に成功したことを意味します。

Androidシステムの場合
1. Google Playで KeyesRobot を検索するか、以下のリンクを開いてアプリをダウンロードしてインストールします。
https://play.google.com/store/apps/details?id=com.keyestudio.keyestudio

2. スマートフォンのBluetoothと位置情報サービスをオンにします。

3. 設定からKeyesRobot Bluetooth appを見つけ、アプリの権限オプションをクリックして、位置情報と近くのデバイスの権限を有効にします。(注:一部のスマートフォンには近くのデバイスの権限機能がない場合があります。)

4. KeyesRobot Appをタップして開きます。

5. KeyesRobot Appは複数のkeyestudioロボットに対応したユニバーサルAPPです。インターフェースに「TANK ROBOT」が表示されていない場合は、左右のボタンをクリックして「TANK ROBOT」を見つけてください。
6. 右上隅の Bluetooth ボタン
をクリックしてBluetoothをスキャンします。

7. BT24 という名前のBluetoothが表示されます。Connect ボタンをクリックします。

8. スマートフォンがBluetoothモジュールへの接続に成功すると、BluetoothモジュールのオンボードLEDが点滅をやめて点灯し続けます。


(5)Bluetooth APPのテスト:
(注:コードをアップロードする前にBluetoothモジュールを接続しないでください。コードのアップロードもシリアル通信を使用するため、BluetoothのシリアP通信と競合してアップロードが失敗する可能性があります。)
/*
Keyestudio Mini Tank Robot V3 (Popular Edition)
lesson 16.1
Bluetooth
http://www.keyestudio.com
*/
char ble_val; // 文字変数(Bluetoothで受信した値を格納するために使用)
void setup()
{
Serial.begin(9600);
}
void loop()
{
if (Serial.available() > 0) // シリアルポートバッファにデータがあるか確認
{
ble_val = Serial.read(); // シリアルポートバッファのデータを読み取る
Serial.println(ble_val); // 出力する
}
}
コードを開発ボードにアップロードし、Bluetoothモジュールを差し込み、スマートフォンをBluetoothモジュールに接続します。
スマートフォンがBluetoothモジュールへの接続に成功したら、Bluetooth APPを開き、ホームページの Select ボタンをクリックします。

Bluetooth appのメインインターフェースは以下の図のとおりです。

上記のコードのアップロードが成功したら、Arduino IDEのシリアルモニターを開き、ボーレートを9600に設定します。APP画面のアイコンをクリックすると、シリアルモニターにボタンから送信されたコマンドが表示されます。

**注:APPの接続方法は以下と同様です。**
(6)コードの説明:
Serial.available() はシリアルポートバッファに現在残っている文字数を表します。
この関数は一般的にこの領域にデータがあるかどうかを判断するために使用されます。Serial.available()>0 の場合、シリアルポートがデータを受信しており、読み取ることができることを意味します。
Serial.read() はシリアルポートバッファから1バイトのデータを取り出して読み取ることを指します。例えば、デバイスがシリアルポートを介してArduinoにデータを送信した場合、Serial.read()を使用して送信されたデータを読み取ることができます。
(7)応用プロジェクト:
ここでは、スマートフォンから送信されるコマンドを使用してLEDライトをオン・オフします。接続図を見ると、LEDはD9ピンに接続されています。

テストコード
(注:コードをアップロードする前にBluetoothモジュールを接続しないでください。コードのアップロードもシリアル通信を使用するため、BluetoothのシリアP通信と競合してコードのアップロードが失敗する可能性があります。)
/*
Keyestudio Mini Tank Robot V3 (Popular Edition)
lesson 16.2
Bluetooth
http://www.keyestudio.com
*/
int LED = 9;
char ble_val; // Bluetoothで受信した値を格納するために使用する整数変数
void setup()
{
Serial.begin(9600);
pinMode(LED, OUTPUT);
}
void loop()
{
if (Serial.available() > 0) // シリアルポートバッファにデータがあるか確認
{
ble_val = Serial.read(); // シリアルポートバッファからデータを読み取る
Serial.print("DATA RECEIVED:");
Serial.println(ble_val);
if (ble_val == 'a')
{
digitalWrite(LED, HIGH);
Serial.println("led on");
}
if (ble_val == 'b')
{
digitalWrite(LED, LOW);
Serial.println("led off");
}
}
}

上記のコードのアップロードが成功したら、Arduino IDEのシリアルモニターを開き、ボーレートを9600に設定します。
をクリックしてLEDを制御します。クリックすると文字 a が送信され、LEDが点灯します。このボタンをもう一度押すと、LEDが消灯します。


プロジェクトが終了したら、BTモジュールを取り外してください。