Back to tech

ESP32をBLE通信のPeripheralとして使う

1 min read
Table of Contents

最近(2017年10月29日)ESP32をArduino上でBLE通信をできるようになったという記事をみました

まじかよ!と色々と調べたところできたので記事に残しておきます

先にESP32をArduino上でできるようにしなければなりません

下記のURLを参考にしてArduino上で開発できるようにしてください

すでに開発環境あるよ!という人も最新バージョンにすべきだと思います(GitHbubみるとものすっごい更新が早い)

ESP32で遊んでみる | Autumn-Color.com/ちょっとそこまで旅をします。
autumn-color.com
image

つぎにこれだけではBLEのサンプルファイルが入っていません

ので、下記のGitHubからサンプルファイルをダウンロードしてきます

※これをしなくてもBLE通信できますがサンプルファイルがあると読みやすくなると思います

GitHub - nkolban/ESP32_BLE_Arduino at 98cd2290d036a4e27db061a76a512b526ef1cc14
github.com
image

そして解凍したファイルをすべて以下のディレクトリへいれます

Documents\Arduino\hardware\espressif\esp32\libraries\BLE

これで準備完了です

プログラム

ESP32をBLEのPeripheral化するプログラムを下記においておきます

Timerを使ってNotifyの更新を行っています

また1秒毎に5個のデータを送信しています

//デバイス名の設定

BLEDevice::init();

//Serverの設定

BLEServer *pServer = BLEDevice::createServer();

//サービスの定義(Characteristic)

pCharacteristic = pService->createCharacteristic();

pCharacteristic->addDescriptor(new BLE2902());

//サーバーのスタート

pService->start();

//アドバタイジングのスタート

pServer->getAdvertising()->start();

動作

AndroidをCentralとしてESP32の通知を受け取ってみました

参考