Help us understand the problem. What is going on with this article?

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

はじめに

この記事では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で動かすことが可能となります。

s_nkg
電子工学を学ぶ大学院生です。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした