LoginSignup
3
1

More than 5 years have passed since last update.

ミニチュア・カー・キットとChromebook(JavaScript)でBLEのお勉強

Last updated at Posted at 2018-04-14

概要

  • ミニチュア・カー・キットとブラウザ(JavaScript)でBLEのお勉強した。
  • Web Bluetooth APIのラッパーbluejellyを使ってデータをリードした。
  • UUIDは真面目に仕様書読んで確認必要。
  • Readするデータのバイト数、符号、エンディアンに注意。
  • 手軽にデータ見れてハッピー。しかもChromebookで。

経緯

用意したもの

試したコード

scan.html

普通に動いた。
Screenshot 2018 04 15 at 00 33 01.png

read.html

そのままじゃ動かない。
以下の修正したら動いた。
Desktop screenshot  7 .png

変更点

UUID

ここのUUIDを変更

window.onload = function () {
  //UUIDの設定
  ble.setUUID("UUID1", "0000181a-0000-1000-8000-00805f9b34fb", "00002a6e-0000-1000-8000-00805f9b34fb");
}

ユーザーガイドを真面目に読んだ。ここ。
Screenshot 2018-04-15 at 00.58.29.png
ug164-thunderboard-react.pdf

読み取りデータのフォーマット

普通に読み取ったら、変な値が帰ってきたので、確認したらEndianが違った。
もともとBig Endianだったので、Little Endianに変更。
ちゃんとバイト数、Signed/Unsigned, Endianに気をつける。

ble.onRead = function (data, uuid){
  //フォーマットに従って値を取得
//  value = data.getUint16(0);//2Byteの場合のフォーマット
  value = data.getInt16(0, true);//2Byteの場合のフォーマット littleEndian

  //コンソールに値を表示
  console.log(value);

  //HTMLに値を表示
  document.getElementById('data_text').innerHTML = value/100.0;

  document.getElementById('uuid_name').innerHTML = uuid;
  document.getElementById('status').innerHTML = "read data"
}

引数はここを確認した。
DataView.prototype.getInt16() - JavaScript | MDN
ECMAScript® 2019 Language Specification

まとめ

  • 楽しかった。
  • Service, CharacteristicのUUID両方使って理解が進んだ。
  • バイナリデータからデコードするときの注意点がわかってきた。
  • Chromebookだけで遊べるのでとても手軽。
3
1
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
3
1