Open29

LeafonyでWebBluetoothしてみる

光岡 高宏光岡 高宏

足りてないライブラリをLibrary Managerでインストールする。

MsTimer2

Adafruit_LIS3DH(依存してるライブラリもインストールするか聞かれるので、全部インストールする)

ClosedCube_OPT3001

光岡 高宏光岡 高宏

なんかファイル名が一致してないので、変更してコンパイルしてみる

- #include <ST7032.h>                         // LCD
+ #include <LCD_ST7032.h>                         // 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行目の頭でコンパイルエラーになっていたという訳ですね。

光岡 高宏光岡 高宏

Connectボタンをクリックすると、検出されたデバイスの一覧が表示されるので、Leafony-AC02を選択
(デバイス側のコードを変えていなければ、Leafony-AC02という名前で表示される)

光岡 高宏光岡 高宏

めちゃくちゃ簡単に接続できた

取れているデータは

  • 温度[℃]
  • 湿度[%]
  • 照度[lux]
  • 傾き[deg]
  • 電圧[V]

体感1秒間隔くらいでデータが更新される。