2019年8月22日木曜日

ESP32でスマホとシリアル通信(Arduino IDE編)

1.Bluetoothの種類

Bluetoothには種類があるそうです。
ひとつは通常のBluetooth、二つ目は省電力用のRedtooth、三つ目はカレー好きのYellowbooth。。。嘘です。

本当は、従来からあるBluetooth Basic Rate/Enhanced Data Rate (BR/EDR) と、IoT機器向けに省電力通信が規定された Bluetooth Low Energy (LE) 、通称BLEがあるそうです。

ESP32自体が、IoT機器等の通信用途が想定されているためか、ブログ等をしらべてもBLEの記事がほとんどだったのですが、サンプルスケッチ等を見ても難しくて自分では応用出来そうにないので、シンプルな従来のBluetoothでシリアル通信を行ってみます。

2.Bluetooth通信用のライブラリ導入

さて、Arduino IDEでESP32のBluetooth通信を行うには、ライブラリを導入しなければなりません。良いライブラリがGitHubのこちらにありますので、さくっとClone or DownloadでDownload ZIPです。

ダウンロードしたZIPファイルは、Arduino IDEを開いて[スケッチ]→[ライブラリをインクルード]→[.ZIP形式のライブラリをインストール...]を選択して、ファイルマネージャから指定しましょう。

3.サンプルスケッチ

Bluetoothのテストは、ライブラリに付属のサンプルスケッチで即実行可能でした。
サンプルスケッチの読込は、Arduino IDEから[ファイル]→[スケッチ例]→[BluetoothSerial]→[SerialtoSerialBT]を選択します。


このままマイコンボードに書き込めば、ESP32はBluetooth通信を始めます。

以下、サンプルスケッチの必要部分のみ書き出しています。


#include "BluetoothSerial.h"

BluetoothSerial SerialBT;

void setup() {
  Serial.begin(115200);
  SerialBT.begin("ESP32");

 //デバイス名は"ESP32"としました。サンプルスケッチではESP32testとなっています。

  Serial.println("The device started, now you can pair it with bluetooth!");
}

void loop() {
  if (Serial.available()) {
    SerialBT.write(Serial.read());
  }
  if (SerialBT.available()) {
    Serial.write(SerialBT.read());
  }
  delay(20);
}

4.スマホ側の準備

今回、スマホ側のシリアル通信にはSerial Bluetooth Terminalというフリーのアプリを使いました。Google Playからさくっとインストールしましょう。※iphone持ってないのでandroid前提です。ごめんなさい。

インストール後の設定も以下の通りとてもシンプルです。
  1. スマホとESP32をペアリングする。androidの設定画面→[機器接続]→[新しい機器とペア設定する]→[ESP32(スケッチで設定したデバイス名)を選択する]
  2. Serial Bluetooth Terminalを立ち上げ、接続先としてESP32を選択する。左上のメニューアイコン→[Devices]→[ESP32(スケッチで設定したデバイス名)]
  3. 画面上部のコネクタ形状のアイコンを押し、Connectedと表示されれば接続完了

5.いよいよ通信テスト

通信テストは簡単です。Arduino IDE側でシリアルモニタを開き、入力窓から何か文字を入力してみましょう。
ここでは、"test ESP32 to Smart Phone"と入力してみました。


スマホのSerial Bluetooth画面に受信したテキストが表示されました!

次に、Serial Bluetooth Terminalの入力窓に、"test Smart Phone to ESP32"と入力して送信ボタンを押すと、Arduino IDEのシリアルモニタにテキストが表示されました。双方向通信成功です。

6.まとめ

ESP32を使ったBluetoothシリアル通信は、非常に簡単に接続できました。
BluetoothでのLチカ制御も出来ましたが、長くなったのでまた次回。

0 件のコメント:

コメントを投稿

ESP32でスマホとシリアル通信 その2 BluetoothでLチカ

1.BluetoothでLチカ制御 前回、Bluetoothでの双方向通信に成功しましたので、ついでに少しスケッチを修正してスマホからESP32のLチカを制御した様子が以下の動画です。 撮影が悪くて画面が良く見えませんが、"1"を送信...