【がじぇるねGR 2021】GR-ROSE IoTシステム開発コンテスト向けに作品を作った話
この記事は 2021年のがじぇるねGR のアドベントカレンダー の 3日目の記事です。
はじめに
この記事では、今年参加した以下のコンテストに関する記事を書こうと思います。
コンテストに参加したきっかけ
このコンテストでは、上記 2つの関連イベントが開かれていました。
その 1つ目のイベントの参加枠の中に、【プレゼント枠】という枠が設けられており、以下のセットをゲットできるというものでした。
- GR-ROSE
- PMOD HS3001 温湿度センサ (※)
- PMOD ケーブル
- 6 x 2 ピンソケット
- 書籍
一方で、「プレゼント品のGR-ROSEと、Azureのなんらかの機能を使って、IoT作品を仕立てる」というのも、この【プレゼント枠】に申し込む条件でした(さらに、上記 2つ目のイベントで LT による発表をする話も)。
自分は、GR-ROSE や Azure を使う機会にもなるかな、と思い申し込みました。
この時点で、何を作るかは全く思いつけてなかったのですが...
コンテストに応募した作品の情報
今回のコンテストに応募した作品の詳細は、LT資料の内容をご覧ください。
以下で、いくつか情報をピックアップ書いていきます。
作った仕組みの構成
作った仕組みの、最終的な構成の概要はこのようになります。
入力の部分は、以下のように「Grove - CO2 & Temperature & Humidity Sensor (SCD30) 」を使っています。
スルーホール用テストワイヤを使ってつなげました(ハンダ付けをせず...)。
GR-ROSE と「Grove - CO2 & Temperature & Humidity Sensor (SCD30) 」の接続はスルーホール用テストワイヤを使い、差し込み式で接続してる。 https://t.co/hA2wu3KYw3 pic.twitter.com/WbV3yNgNB6
— you (@youtoy) 2021年10月30日
このセンサーは、二酸化炭素濃度と温湿度を計測することができるものです。
センサーがつながっている GR-ROSE からは、MQTT を使って値をネットワーク経由で送信、という構成です。
それを 3種類の出力へとつなげています。
M5Stack Core2 との連携
こちらは、二酸化炭素濃度が一定の値を超えると、音や光で教えてくれるというものです。
M5Stack Core2 を動作させるプログラムは、ビジュアルプログラミングの UIFlow で作っています。
MQTTブローカーは、Node.js で書いたプログラムがローカルネットワーク内にある PC で動いていて、そこを介して GR-ROSE と通信する構成にしました。
LINEアプリへの通知
こちらは、別のお知らせの仕組みです(発表では、こちらを先に紹介したので、スライドの記載で 1つ目 となっています)。
Azure IoT Hub で「Grove - CO2 & Temperature & Humidity Sensor (SCD30) 」の二酸化炭素濃度の測定値を取得し、それを Azure Functions で取得して特定の条件になった時に(二酸化炭素濃度の測定値が特定の値を超えたりした場合に)LINE Notify を使った LINEアプリへの通知を行います。
Azure Functions の部分は Node.js でプログラムを書き、axios を使って HTTPリクエスト(POST)を送ったりしています。
可視化
また、センサーで取得した値の可視化もやってみていました。
こちらは、先ほどと同様に Azure IoT Hub を使っているのですが、その先が Azure Stream Analytics になり、そこから Power BI につながっています。
とりあえず、グラフでセンサーで取得した値を折れ線で描画する、ということをやってみました。
実装した内容について
実装した内容は自分の Qiita の記事に、複数の記事に分かれていますが書いています。
おわりに
今回のコンテストに参加して、今まで触ったことがなかったデバイス・サービスを使う良い機会になりました。
また、「Azure の何らかのサービスを使う」という条件が、Azure のサービスで IoT に使えるものを探してみる、という動機にもなりました。
その試行錯誤の過程は、コンテストで実装した内容を書いたのと同様に、どんどん記事にしていってました。
発表前に views数を確認してみたら、見ていただいた方がけっこういらっしゃったようで、また今後もやったことをどんどん記事化していこうというモチベーションにもなりました。