LeafonyでWebBluetoothしてみる
こちらを参考に進める
サンプルコードをダウンロードする
Leafonyに書き込んで見る
ライブラリが足りないと怒られたのでインストールしていく
足りてないライブラリをLibrary Managerでインストールする。
MsTimer2
Adafruit_LIS3DH(依存してるライブラリもインストールするか聞かれるので、全部インストールする)
ClosedCube_OPT3001
TBGLib
ん?これだけ見つからない。
公式のリポジトリで公開されてたのでダウンロードして、4-Sensors_BLE.ino
と同レベルのフォルダに入れておく。
よし、TBGLibのエラーは超えた
ST7032
あれ、LCD_ST7032
をインストールしても、エラーのままだ。
なんかファイル名が一致してないので、変更してコンパイルしてみる
- #include <ST7032.h> // LCD
+ #include <LCD_ST7032.h> // LCD
怒られたので直していく
- ST7032 lcd;
+ LCD_ST7032 lcd;
ありゃー、これはライブラリが違いそう。
/Users/mitsu/ghq/github.com/mitsuoka0423/leafony-test/4-Sensors_BLE/4-Sensors_BLE.ino: In function 'void setup()':
4-Sensors_BLE:232:19: error: no matching function for call to 'LCD_ST7032::begin(int, int)'
lcd.begin(8, 2);
^
In file included from /Users/mitsu/ghq/github.com/mitsuoka0423/leafony-test/4-Sensors_BLE/4-Sensors_BLE.ino:32:0:
/Users/mitsu/Documents/Arduino/libraries/LCD_ST7032/src/LCD_ST7032.h:68:8: note: candidate: void LCD_ST7032::begin()
void begin();
^~~~~
/Users/mitsu/Documents/Arduino/libraries/LCD_ST7032/src/LCD_ST7032.h:68:8: note: candidate expects 0 arguments, 2 provided
4-Sensors_BLE:233:9: error: 'class LCD_ST7032' has no member named 'setContrast'; did you mean 'setcontrast'?
lcd.setContrast(30);
^~~~~~~~~~~
setcontrast
こっちかな?
ArduinoのLibrary Managerで見つからなかったので、上記のリポジトリからコードをダウンロードして読み込んで見る
- #include <ST7032.h> // LCD
+ #include "ST7032.h" // LCD
コンパイルエラー
BGLib.cpp:1:1: error: stray '\357' in program
//=====================================================================
^
TBGLib.cpp:1:2: error: stray '\273' in program
//=====================================================================
^
TBGLib.cpp:1:3: error: stray '\277' in program
//=====================================================================
^
In file included from /Users/mitsu/ghq/github.com/mitsuoka0423/leafony-test/4-Sensors_BLE/TBGLib.h:21:0,
from /Users/mitsu/ghq/github.com/mitsuoka0423/leafony-test/4-Sensors_BLE/TBGLib.cpp:15:
TBGLibConfig.h:1:1: error: stray '\357' in program
//=====================================================================
^
TBGLibConfig.h:1:2: error: stray '\273' in program
//=====================================================================
^
TBGLibConfig.h:1:3: error: stray '\277' in program
//=====================================================================
^
In file included from /Users/mitsu/ghq/github.com/mitsuoka0423/leafony-test/4-Sensors_BLE/TBGLib.h:21:0,
from /Users/mitsu/ghq/github.com/mitsuoka0423/leafony-test/4-Sensors_BLE/4-Sensors_BLE.ino:31:
TBGLibConfig.h:1:1: error: stray '\357' in program
//=====================================================================
^
TBGLibConfig.h:1:2: error: stray '\273' in program
//=====================================================================
^
TBGLibConfig.h:1:3: error: stray '\277' in program
//=====================================================================
^
とりあえずエラーメッセージでググる
なるほど、UTF-8とUTF-8Nの2つがあって、UTF-8に変更したらいいのね。
Arduinoスケッチは通常UTF-8ですが、もらったファイルはなんとUTF-8Nでした!
……UTF-8Nって何?
初めて聞いたんですが、ファイルの先頭にBOM(バイトオーダーマーク)と呼ばれるものが含まれているものをUTF-8、含まれていないものをUTF-8Nと呼ぶそうです。
BOMは、そのファイルがUnicodeで記載されていることを明確化するためのもので、例えばUTF-8であれば「0xEF 0xBB 0xBF」を付けるそうです。
参考:wikipediaエラーを吐いたスケッチにはこのBOMが無かったので、1行目の頭でコンパイルエラーになっていたという訳ですね。
Arduino IDEとVSCodeどちらでもできる。
僕はVSCodeでやりました
やったー!コンパイル通って書き込めた!
Leafony側はLEDが光るとか外見的な変化はない様子
続いてWebアプリ側に入っていく
コード
サンプルアプリ
Connect
ボタンをクリックすると、検出されたデバイスの一覧が表示されるので、Leafony-AC02
を選択
(デバイス側のコードを変えていなければ、Leafony-AC02
という名前で表示される)
めちゃくちゃ簡単に接続できた
取れているデータは
- 温度[℃]
- 湿度[%]
- 照度[lux]
- 傾き[deg]
- 電圧[V]
体感1秒間隔くらいでデータが更新される。
WebアプリをもっとサイコロっぽいUIにしていく
とりあえず見た目をサイコロに
コードはこちら