2016年11月25日金曜日

Arduino で HC-06 を使って Bluetooth Classic で通信させてみる

概要

HC-06 は Bluetooth Classic 用の通信モジュールです
まず初めにこのモジュールは国内での技適が取得できていない通信モジュールになります
今回は動作確認が目的で公共の場で試してはいないので、実際に使いたい場合は個別に技適を取得する必要があるので注意してください

HC-06 は Arduino のシリアルピンを使って動作させることができます

環境

  • Mac OS X 10.12.1
  • Arduino IDE 1.6.12
  • Arduino UNO

配線

配線は以下の通りです
動作確認のため 13pin を使って LED を接続しておきます
hc06_first_circuit.jpg

HC-06 側は

  • Arduino 3.3v -> HC-06 VCC
  • Arduino GND -> HC-06 GND
  • Arduino TX -> HC-06 RXD
  • Arduino RX -> HC-06 TXD

と配線します
LED 側は

  • Arduino 13pin -> 抵抗 1kΩ -> LED アノード
  • Arduino GND -> LED カソード

と配線します
配線するとすぐに HC-06 の電源が入り、内臓の LED が点滅します

スケッチ

HC-06 とはシリアルで通信を行います
シリアルで信号「1」を受け取ったときは 13pin に接続された LED を点灯させます
「0」を受け取ったときには LED を消灯させます 

int rsvData = 0;
int led = 13;

void setup() {
  pinMode(13, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  if (Serial.available() > 0) {
    rsvData = Serial.read();
    if (rsvData == '1') {
      digitalWrite(13, HIGH);
      Serial.println("LED on");
    } else if (rsvData == '0') {
      digitalWrite(13, LOW);
      Serial.println("LED off");
    }
    delay(100);
  }
}

Arduino を PC に接続したら Arudino IDE で書き込んでください

動作確認

今回は Android の Bluetooth Terminal というアプリを使います
起動したら右上のメニューから「Connect a deivce - Secure」を選択します

すると HC-06 が見つかると思うのでデバイスを選択して Android と接続します
接続に成功すると点滅していた HC-06 の LED が点灯に変わります

あとは、アプリ側で「1」or「0」を入力してみましょう
するとシリアル通信が始まって Arduino 側の 13pin に接続された LED を制御することができます
hc06_first_ret.jpg

接続を解除するには Bluetooth Terminal アプリを停止してください

最後に

Arduino で Bluetooth Classic のモジュール HC-06 を使ってみました
冒頭説明しましたが、HC-06 は技適のないモジュールなので注意してください

また、HC-06 は Bluetooth Classic 用の通信モジュールになります
Bluetooth Low Energy を実現するためのモジュールではないので、そこも注意してください
いろいろと違いはありますが、Bluetooth Classic は iOS だと API が提供されていないのでアプリから接続して動作確認できません
なので、今回動作確認は Android を使いました

3 件のコメント:

  1. android側で制御できますが、点灯したときに「ON」消灯したときに「OFF」が返ってきません。なぜ?

    返信削除
  2. このコメントは投稿者によって削除されました。

    返信削除
  3. すいません今はデバイスがなく状況を再現できません。AndroidとはBluetooth Classicで接続するのでBLEで接続しようとしていないかなど確認してみてください。

    返信削除