はじめに
これだけ流行っている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()メソッドを使う
EspBLE esp;
//buffは適当な配列
esp.write(buff, sizeof(buff));
注意
・メソッド名(write)は、BLEとしてのNotify(Read)とは逆のネーミングになっていますが、ライブラリは「Arduinoから見てwrite:データ送信」という意味です
データ受信(Write)
データを受信するとesp.available()で受信したデータサイズが分かります
その後esp.read()で1バイトずつ取り出します
(ArduinoのSerialライブラリと同じ使い勝手です)
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に落とす