LoginSignup
19
5

More than 3 years have passed since last update.

Google SpreadSheetとBluetooth LE BeaconキットでIoTハードウェア開発からデータの可視化まで1時間で完成させる

Last updated at Posted at 2019-12-04

はじめに

この記事ではRaspberry PiとLeafonyを使って短時間でIoT環境センサを作り、Google SpreadSheetを使って簡単にグラフ化する方法について紹介します。
実際にサンプルコードを動かして、ハードからソフトまでIoTサービスの開発をとても簡単に体験できます。

image.png

用意するもの

1. Leafony Beaconの作成

ハードウェアはArduino互換ボードLeafonyで作成します。
サンプルリポジトリにあるleafony_beacon.inoが今回使用するスケッチです。
このスケッチはLeafonyをBluetooth Beacon (以下BLE Beacon)として動作させるもので、非常に省電力な動作が可能です。
(参考: 回路設計なしで省電力なBluetooth LE Beaconを開発する)

使用する基板はBasic Kitに含まれる下記の5枚です。

  • 4-Sensorsリーフ (温度・湿度・照度・加速度)
  • AVR MCUリーフ (ATmega328P)
  • USBリーフ
  • BLE Sugarリーフ
  • CR2032コイン電池リーフ

組み立てをを終えたらleafony_beacon.inoを書き込んでください。

ファイル名

2. Raspberry Piの環境構築

BLE Beaconの受信機にはRaspberry Piを使います。
今回使用するサンプルコードでは、Node.jsでnobleを使ってBLE Beaconを受信します。受信したデータはGoogle API経由でSpreadSheetに書き込んでいます。

下記のスクリプトを実行して環境構築をします。

bash
sudo apt update
sudo apt upgrade
# 必要なパッケージのインストール
sudo apt install -y bluetooth libbluetooth-dev libudev-dev git nodejs npm
# サンプルコードのリポジトリをclone
git clone https://github.com/Leafony/leafony-beacon
cd leafony-beacon/spreadsheet-logger
# 必要なモジュールをインストール
npm install

3. Google SpreadSheet APIの取得

Google SpreadSheetをNode.jsで操作するためにはAPIを取得する必要があります。

下記の記事のStep.1で自分のGoogleアカウントのSpreadSheet APIを有効にして、credentials.jsonを取得できます。
credentials.jsonleafony-beacon/spreadsheet-loggerディレクトリに
コピーしてください。

4. 実行

Google Driveにシートを作成しましょう。シート名は何でも良いです。
シートには赤線の位置にシートIDシート名があります。
image.png

これらをコピーしてindex.jsの下記の部分に貼り付けます。

index.js
const spreadsheetId = '<YOUR SPREADSHEET ID HERE>';
const sheetName = 'Sheet1';

下記のコマンドでサンプルコードを実行しましょう。
初回起動時はGoogle APIの認証用URLにブラウザでアクセスして、表示された認証コードを入力します。
Raspberry Piはブラウザの動作が重いこともあるため、SSH経由で操作することをお勧めします。

bash
$ sudo node .
Authorize this app by visiting this url: <認証用URL>
Enter the code from that page here: <認証コードを入力>

データが送られてきました。 シートをみていると、どんどん新しいデータが更新されていって楽しいです。
sheet1.gif

5. データの可視化

今回使ったシートを共有します。グラフ化の方法は下記のシートを参考

QUERYを使うと、最新のデータから順に指定した個数だけ別のシートに取ってくることができます。
デバイス名ごとに下図のように整理しました。
image.png

すべてのグラフを1ページ目にまとめると非常に見やすいです。
最終受信日時なんかも追加して、ちゃんとRaspberry Piが動いているのかも確認できます。
image.png

Google SpreadSheetはスマートフォンやタブレットでも表示できるため、これで簡単に外出先からでもモニタリングできるようになりました。

まとめ

Raspberry PiとLeafonyを使ってBLE Beaconのサンプルアプリを動かしました。
Google SpreadSheetをデータベース兼UIとして用いることで、ほぼノーコードで簡単にリモートでセンシングを行うことができました。

次回

ここまではLeafonyオリジナルのセンサ基板で温湿度や照度の測定を行いました。
次回は圧力やガスセンサを搭載した自分オリジナルの基板を設計しサンプルコードをいじってみようと思います。

補足説明

nobleをRaspberry Piで使う上の注意点

Raspberry PiでBLEのAdvertisementをスキャンするために、nobleというNode.js向けBluetoothライブラリを使用しています。

npm install noble

で入るものはRaspberry Piではうまく動きませんでした。(2019年12月現在)
nobleをフォークした下記のライブラリではRaspberry Piで動作可能です。
* https://www.npmjs.com/package/@abandonware/noble

npm install @abandonware/noble

とすることで、Raspberry Piだけでなく、WindowsやMac OSで動かすことが可能となります。

19
5
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
19
5