Skip to main content

Bluetoothの使用

note

この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

Bluetoothの使用

Seeed Studio XIAO ESP32C3はBluetooth 5 (LE)接続をサポートしています。このWikiでは、このボードでのBluetooth使用の基本を紹介します。

ハードウェアのセットアップ

  • ステップ1. 同梱されているWiFi/BluetoothアンテナをボードのIPEXコネクタに接続します。
pir
  • ステップ2. USB Type-Cケーブルを使用してXIAO ESP32C3をコンピュータに接続します。
pir

Bluetoothデバイスのスキャン

この例では、XIAO ESP32C3を使用して周囲の利用可能なBluetoothデバイスをスキャンします。

  • ステップ1. 以下のコードをArduino IDEにコピー&ペーストします。
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEScan.h>
#include <BLEAdvertisedDevice.h>

int scanTime = 5; // 秒単位
BLEScan* pBLEScan;

class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks {
void onResult(BLEAdvertisedDevice advertisedDevice) {
Serial.printf("Advertised Device: %s \n", advertisedDevice.toString().c_str());
}
};

void setup() {
Serial.begin(115200);
Serial.println("Scanning...");

BLEDevice::init("");
pBLEScan = BLEDevice::getScan(); // 新しいスキャンを作成
pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks());
pBLEScan->setActiveScan(true); // アクティブスキャンは電力を多く消費しますが、結果を早く取得できます
pBLEScan->setInterval(100);
pBLEScan->setWindow(99); // setInterval値以下または同等
}

void loop() {
// メインコードをここに記述し、繰り返し実行します
BLEScanResults foundDevices = pBLEScan->start(scanTime, false);
Serial.print("Devices found: ");
Serial.println(foundDevices.getCount());
Serial.println("Scan done!");
pBLEScan->clearResults(); // BLEScanバッファから結果を削除してメモリを解放
delay(2000);
}
tip

ESP32開発ボードをバージョン3.0.0以上にアップグレードしている場合、互換性を保つために以下のコードを変更する必要があります。

  1. BLEScanResults foundDevices = pBLEScan->start(scanTime, false);BLEScanResults* foundDevices = pBLEScan->start(scanTime, false); に変更
  2. Serial.println(foundDevices.getCount());Serial.println(foundDevices->getCount()); に変更

ステップ2. コードをアップロードし、シリアルモニタを開いてBluetoothデバイスのスキャンを開始します。

pir

XIAO ESP32C3をBluetoothサーバーとして使用

この例では、XIAO ESP32C3をBluetoothサーバーとして使用します。ここでは、スマートフォンを使用してXIAO ESP32C3ボードを検索し、文字列を送信してシリアルモニタに表示します。

  • ステップ1. 以下のコードをArduino IDEにコピー&ペーストします。
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>

// UUIDを生成するには以下を参照してください:
// https://www.uuidgenerator.net/

#define SERVICE_UUID "4fafc201-1fb5-459e-8fcc-c5c9c331914b"
#define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8"

class MyCallbacks: public BLECharacteristicCallbacks {
void onWrite(BLECharacteristic *pCharacteristic) {
std::string value = pCharacteristic->getValue();

if (value.length() > 0) {
Serial.println("*********");
Serial.print("New value: ");
for (int i = 0; i < value.length(); i++)
Serial.print(value[i]);

Serial.println();
Serial.println("*********");
}
}
};

void setup() {
Serial.begin(115200);

BLEDevice::init("MyESP32");
BLEServer *pServer = BLEDevice::createServer();

BLEService *pService = pServer->createService(SERVICE_UUID);

BLECharacteristic *pCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID,
BLECharacteristic::PROPERTY_READ |
BLECharacteristic::PROPERTY_WRITE
);

pCharacteristic->setCallbacks(new MyCallbacks());

pCharacteristic->setValue("Hello World");
pService->start();

BLEAdvertising *pAdvertising = pServer->getAdvertising();
pAdvertising->start();
}

void loop() {
// メインコードをここに記述し、繰り返し実行します
delay(2000);
}
tip

ESP32開発ボードをバージョン3.0.0以上にアップグレードしている場合、互換性を保つために以下のコードを変更する必要があります。

  1. std::string value = pCharacteristic->getValue();String value = pCharacteristic->getValue(); に変更
  • ステップ2. コードをアップロードし、シリアルモニタを開きます。

  • ステップ3. スマートフォンにLightBlueアプリをダウンロードしてインストールします。

  • ステップ4. スマートフォンでBluetoothをオンにし、XIAO ESP32C3に近づけてデバイスをスキャンし、MyESP32デバイスに接続します。

pir
  • ステップ5. LightBlueアプリを開き、Bondedタブをクリックします。
pir
  • ステップ6. MyESP32の横にあるCONNECTをクリックします。
pir
  • ステップ7. 一番下にあるReadable, Writableと表示されたセクションをクリックします。
pir
  • ステップ 8. Data format ドロップダウンメニューで、UTF-8 String を選択します。
pir
  • ステップ 9. WRITTEN VALUES の下に「Hello」と入力し、WRITE をクリックします。
    pir

Arduino IDE のシリアルモニターに「Hello」というテキスト文字列が出力されるのが確認できます。

pir

技術サポート & 製品ディスカッション

弊社製品をお選びいただきありがとうございます!製品をご利用いただく際にスムーズな体験を提供するため、さまざまなサポートを用意しております。異なる好みやニーズに対応するため、複数のコミュニケーションチャネルをご利用いただけます。

Loading Comments...