9
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ESP32(Arduino)でBLEを使う

Last updated at Posted at 2017-09-20

はじめに

これだけ流行っているESP32なのに、肝心の新機能であるBLEを使うためのArduino Libraryを誰も作っていないので、
作ってみることにした

注意
・使用は自己責任でお願いします
・現在はサーバーのみです(クライアントは未実装)
・ServiceとCharacteristicは1つに限定してあります(気が向いたら拡張できるようにするかも)

EPS32を使うためのArduinoIDEの設定

本家readme のinstruction for xxxを参照

ソースコード

インストール

一般的なArduino Libraryの配置方法と同じ
EspBLE.cppとEspBLE.hを適当な名前のフォルダに入れて、そのフォルダをArduinoのLibrariesフォルダに配置

使い方

基本はexamplesフォルダにあるGattServer.inoを参考にしてください
下記にも少しだけ補足します

データ送信(Notify)

write()メソッドを使う

GattServer.ino

EspBLE esp;

//buffは適当な配列
esp.write(buff, sizeof(buff));

注意
・メソッド名(write)は、BLEとしてのNotify(Read)とは逆のネーミングになっていますが、ライブラリは「Arduinoから見てwrite:データ送信」という意味です

データ受信(Write)

データを受信するとesp.available()で受信したデータサイズが分かります
その後esp.read()で1バイトずつ取り出します
(ArduinoのSerialライブラリと同じ使い勝手です)

GattServer.ino
EspBLE esp;

//データの受信を検出
if(len = esp.available()){
  Serial.print("Detect Write Request: ");
  for(int i = 0; i < len; i++){
    //受信データを1バイトずつ取り出す
    c = esp.read();
    Serial.print(c);
    Serial.print(" ");
  }
  Serial.println();    
}

注意
・メソッド名(read)は、BLEとしてのWriteとは逆のネーミングになっていますが、ライブラリは「Arduinoから見てread:データ受信」という意味です

Tips

  • コンパイルは成功しているのに、書き込みで失敗する
    • upload speedを921600から115200に落とす

参考

9
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?