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

説明

Bluetooth は、シンプルなワイヤレス通信モジュールであり、ここ数十年で急速に普及し、その使いやすい機能により、ほとんどのバッテリー駆動デバイスで使用されています。

過去数年間、顧客の需要を満たし、技術の発展に対応し、時代のトレンドに従うため、Bluetooth 標準の多くのアップグレードが行われてきました。

ここ数年で、データ伝送速度、ウェアラブルおよび IoT デバイスの消費電力、セキュリティシステムなど、多くのことが変わってきました。

ここでは、Arduino ボードと HM-10 BLE 4.0 について学習します。HM-10 は、容易に入手できる Bluetooth 4.0 モジュールです。このモジュールはワイヤレスデータ通信の確立に使用されます。このモジュールは、Texas Instruments CC2540 または CC2541 Bluetooth Low Energy (BLE) System on Chip (SoC) を使用して設計されています。

仕様

  • Bluetooth プロトコル: Bluetooth Specification V4.0 BLE。

  • シリアルポート送受信でのバイト制限なし。

  • オープン環境では、iPhone4s との 100m 超長距離通信を実現。

  • 動作周波数: 2.4GHz ISM バンド。

  • 変調方式: GFSK (ガウス周波数シフトキーイング)。

  • 送信電力: -23dbm、-6dbm、0dbm、6dbm、AT コマンドで変更可能。

  • 感度: 0.1% BER で ≤-84dBm。

  • 伝送速度: 非同期: 6K バイト; 同期: 6K バイト。

  • セキュリティ機能: 認証と暗号化。

  • サポートサービス: Central & Peripheral UUID FFE0、FFE1。

  • 消費電力: 自動スリープモード、スタンバイ電流 400uA~800uA、送信時 8.5mA。

  • 電源: 5V DC。

  • 動作温度: -5~+65 摂氏度。

コンポーネント

接続図

1. STATE: 状態テストピン、内部 LED に接続、通常は接続しないままにします。

2. RXD: シリアルインターフェース、受信端子。

3. TXD: シリアルインターフェース、送信端子。

4. GND: グラウンド。

5. VCC: 電源の正極。

6. EN/BRK: 接続を切断、Bluetooth 接続を切断することを意味し、通常は接続しないままにします。

テストコード

/*
 keyestudio Mini Tank Robot V2.1
 lesson 7.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 モジュールを挿入し、携帯電話からのコマンドを待ちます。

APP のダウンロード

このコードは受信した信号を読み込むためのものであり、信号を送信するツールも必要です。このプロジェクトでは、携帯電話を介してロボットカーを制御するための信号を送信します。

その後、APP をダウンロードする必要があります。

iOS システム

注: Bluetooth モジュールに接続する際、携帯電話の設定で APP に「位置情報」へのアクセスを許可してください。そうしないと、Bluetooth が接続されない可能性があります。

APP STORE に入り、BLE Scanner 4.0 を検索してダウンロードしてください。

Android システム

ここから APP をダウンロードしてください。

また、APP に「位置情報」へのアクセスを許可してください。携帯電話の設定で「位置情報」を有効にできます。

  1. インストール後、App を開き、「位置情報と Bluetooth」の権限を有効にします。

  2. iOS バージョンを例として説明します。Android バージョンの操作方法はほぼ同じです。

  3. Bluetooth モジュールをスキャンして Bluetooth BLE 4.0 を取得します。その名前は HMSoft です。その後、「接続」をクリックして Bluetooth とリンクし、使用します。

  1. HMSoft に接続した後、それをクリックして、デバイス情報、アクセス権限、一般、カスタムサービスなど、複数のオプションを取得します。「カスタムサービス」を選択します。

  1. その後、以下のページがポップアップします。

  1. (Read、Notify、WriteWithoutResponse) をクリックして、以下のページに入ります。

  1. Write Value をクリックすると、HEX またはテキストを入力するインターフェースが表示されます。

  1. Arduino のシリアルモニターを開き、テキストインターフェースで 0 または他の文字を入力します。

  2. その後、「Write」をクリックし、シリアルモニターを開いて「0」信号があるか確認します。

コード説明

Serial.available() : バッファ領域に戻る現在の残り文字。一般に、この関数はバッファにデータがあるかどうかを判定するために使用されます。Serial.available() > 0 の場合、シリアルがデータを受信し、読み込むことができることを意味します。

Serial.read(): シリアルポートのバッファから 1 バイトのデータを読み込みます。例えば、デバイスがシリアルポート経由で Arduino にデータを送信する場合、「Serial.read()」でデータを読み込むことができます。

拡張練習

携帯電話を介してコマンドを送信して、LED をオンおよびオフにすることができます。

D10 は LED に接続されており、以下のように示されています:

コード説明

Serial.available() : バッファ領域に戻る現在の残り文字。一般に、この関数はバッファにデータがあるかどうかを判定するために使用されます。Serial.available() > 0 の場合、シリアルがデータを受信し、読み込むことができることを意味します。

Serial.read(): シリアルポートのバッファから 1 バイトのデータを読み込みます。例えば、デバイスがシリアルポート経由で Arduino にデータを送信する場合、「Serial.read()」でデータを読み込むことができます。

拡張練習

携帯電話を介してコマンドを送信して、LED をオンおよびオフにすることができます。

D10 は LED に接続されており、以下のように示されています:

/*
 keyestudio Mini Tank Robot V2.1
 lesson 7.2
 Bluetooth 
 http://www.keyestudio.com
*/ 
int ledpin=11;
void setup()
{Serial.begin(9600);
 pinMode(ledpin,OUTPUT);
}
void loop()
{ int i;
  if (Serial.available())
  {i=Serial.read();
    Serial.println("DATA RECEIVED:");
    if(i=='1')
    { digitalWrite(ledpin,1);
      Serial.println("led on");
    }
    if(i=='0')
    { digitalWrite(ledpin,0);
      Serial.println("led off");
    }
  }
}//*******************************************

APP で「Write」をクリックし、1 を入力すると LED がオンになります。0 を入力すると LED がオフになります。(実験終了後、Bluetooth モジュールを取り外すことを忘れずに。そうしないと、コード書き込みに影響が出ます)。