プロジェクト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モジュールを取り外してください。