Arduino で Bluetooth (BLE) 使ってみよう (第二回)
今回は簡単に言うと、Bluetoothの信号をスマートフォンで受信する手順を紹介したいと思います。
手順:
1、環境設定(第一回で書きました)
2、Arduino サンプルコード実装、アプリ上で動作確認(この記事)
ー
1、サンプルコードをデバイスに実行する
Arduino 自体も、ESP 32のIDEもはいっぱいサンプルコードが付いています。
今回はESP32のBLE_serverを使います。
File > Examples の中で選びます。
サンプルコード開いたら、まず右矢印ボタンを押して、デバイスにアップロードしてみましょう。
アップロードできたら、このようなメッセージがあります。
ボタン(画像の1)を押して、Serial Monitor を開いて、ボーレート(画像の2と3)を合わせます。
"Starting BLE work!" が出たらBLEデバイスが動いでいます。
それでは、コードを説明します。
void setup() {
// 1
Serial.begin(115200);
Serial.println("Starting BLE work!");
// 2
BLEDevice::init("Long name works now");
// 3
BLEServer *pServer = BLEDevice::createServer();
// 4
BLEService *pService = pServer->createService(SERVICE_UUID);
// 5
BLECharacteristic *pCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID,
BLECharacteristic::PROPERTY_READ |
BLECharacteristic::PROPERTY_WRITE
);
// 6
pCharacteristic->setValue("Hello World says Neil");
// 7
pService->start();
// 8
// BLEAdvertising *pAdvertising = pServer->getAdvertising(); // this still is working for backward compatibility
BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
// 9
pAdvertising->addServiceUUID(SERVICE_UUID);
pAdvertising->setScanResponse(true);
pAdvertising->setMinPreferred(0x06); // functions that help with iPhone connections issue
pAdvertising->setMinPreferred(0x12);
// 10
BLEDevice::startAdvertising();
Serial.println("Characteristic defined! Now you can read it in your phone!");
}
BLE ペリフェラルに関する説明はこちらの記事にあります。
1、ボーレートの値(Serial通信のスピード)
2、BLE デバイス表示名(後でスマートフォン上確認できます)
3、ペリフェラルサーバーを作る
4、サービスをペリフェラルに追加する
5、キャラクタリスティングをサービスに追加する
6、キャラクタリスティングの値を設定する(後でスマートフォン上確認できます)
7、サービスをスタートする
8、アドバタイスを作る
9、アドバタイスにUUIDを追加する(スマートフォンにペアリングする時使う)
10、アドバタイス開始
2、 スマートフォン上の確認
nRF Connect (App Store / Google Play)からダウンロードして、立ち上げます。
デバイスリストで "Long name works now" があります。
周りのデバイスが多い場合はフィルタした方がいいかもしれません。
Connect押して、デバイスとコネクトします。
サービス、キャラクタリスティングを確認しましょう。
キャラクタリスティングの値も確認しましょう。
下矢印のボタンを押すと、値が出ます。
ー
以上で、BLEデバイスをスマートフォンまでの受信ができました。
結構とっつきにくい思いがちな、Bluetooth通信も思いの外、簡単にできると思いますが、いかがでしたでしょうか?
(Lee)