温湿度センサーから湿度と温度を取得してスマートフォンで表示する

Genuino 101に接続している温湿度センサーから湿度と温度を取得し、BLE経由でスマートフォンで表示する方法を解説します。LEDをコントロールしたデモと違い、湿度と温度の2つの値を扱うところが肝なデモです。

作成した電子回路

Genuino 101に温湿度センサーモジュールである「DHT11」を接続した電子回路です。DHT11の使い方については記事「オフィスのエアコン問題をズバリ解決! インターネットから遠隔操作できるリモコンを電子工作で作ってみた」で解説していますので参照ください。

温湿度センサー モジュール DHT11

温湿度センサー モジュール DHT11

抵抗 10kΩ

抵抗 10kΩ

Genuino 101へBLE経由でアクセスする処理(JavaScript)

Genuino 101へBLE経由で接続する方法はLEDをコントロールするデモとほぼ同じです。ここでは変更部分のみ解説します。

LEDをコントロールするデモと同じくサービスとキャラクタリスティックのUUIDを指定します。湿度と温度でデータを分けたいので、湿度と温度のそれぞれでキャラクタリスティックを使います。もしサービスやキャラクタリスティックを追加したい場合、新たにUUIDを用意する必要があるので、Online UUID GeneratorなどのUUIDを生成するツールを使うとよいでしょう。

/**
 * サービスのUUIDです。
 * @type {string}
 */
const SERVICE_UUID = "8a61d7f7-888e-4e72-93be-0df87152fc6d";

/**
 * キャラクタリスティックのUUIDです。
 * @type {string}
 */
const HUMIDITY_CHARACTERISTIC_UUID = "fae2e24f-aea2-48cb-b449-55ec20518e93";
const TEMPERATURE_CHARACTERISTIC_UUID = "0fdb1d95-c786-4635-a910-f294d7911be1";

BLEデバイスへ接続しサービスを取得した後のキャラクタリスティックを取得する処理は、次のコードのように湿度と温度それぞれのキャラクタリスティックを指定して取得します。

  // UUIDに合致するキャラクタリスティックを取得
.then(service => Promise.all([
  service.getCharacteristic(HUMIDITY_CHARACTERISTIC_UUID),
  service.getCharacteristic(TEMPERATURE_CHARACTERISTIC_UUID)
]))

複数のキャラクタリスティックをして取得した場合、キャラクタリスティックが配列で取得できます。取得したキャラクタリスティックからデータを読み込む方法はLEDをコントロールするデモと同じなので、そちらを参照ください。

.then(characteristic => {
  // 取得した配列の0番を取得
  humidityCharacteristic = characteristic[0];
  // 取得した配列の1番を取得
  temperatureCharacteristic = characteristic[1];

  console.log("BLE接続が完了しました。");

  // BLEデバイス接続後の処理
})

以上でGenuino 101に接続した温湿度センサーから湿度と温度を取得し、JavaScript側で扱う方法を解説しました。これを応用すると、複数個のボタンが搭載されたコントローラーから、ボタンの押下情報を取得できるようになります。

最後に

無線の通信方式としてBluetoothとWi-Fiを比較したとき、次のような利点があります。

  • インターネットへ接続しないので通信料で課金されない
  • インターネットが届きにくい地下などの環境でも通信が安定
  • 消費電力が少ない

Bluetoothはインターネットに接続できないですが通信が安定していることから、テレビやゲーム機などの家電やAmazon Dash ButtonなどのIoT(モノのインターネット)デバイスで広く使われています。

Webサイトで使われている事例はまだまだ少ないですが、BLEで接続したコントローラーで遊ぶインスタレーションや、BLE経由でスマートフォンに読み込んだ血圧計のデータをクラウドにアップロードするなど、これからさまざまなコンテンツで活用されていくでしょう。

今回紹介したGenuino 101を購入することにハードルを感じる方は、まずは手元にあるBLEデバイスやiPhoneをBLEデバイス化するアプリ「LightBlue Explorer」を使ってWeb Bluetooth APIに挑戦してみてください!