【GASでIoT】GASとラズパイでおこなう、お手軽データ・ロギング&フィードバック制御
この記事のシリーズでは、Googole Apps Script(GAS)を利用して、日常生活を便利にする事をテーマにしています。
GASへのアクセスや結果の表示は、大体がPCやスマートフォンからですが、「Raspberry Pi(ラズベリーパイ)」というシングルボードコンピュータを介することで、入力デバイスを押しボタンにしたり、表示デバイスをLEDにしたりする事もできます。
「ラズベリーパイ」にはいくつかシリーズがありますが、ここではWiFi付きで一番安い「ラズベリーパイ Zero WH」という製品を使っています。
ただし、この製品は本来は1500円程度のはずが、世界的な半導体不足により、2022年現在価格が高騰しています。
もっと安い製品もあるのですが、WiFiが使えなかったり、GASへアクセス(HTTPS~ではじまるURLへのアクセス)が困難だったりするので、なかなか代わりが無いのが悩みです。
過去の類似記事のご紹介
いままで、この内容の記事をいくつかアップさせて頂きました。
以下は入力デバイスを押しボタンにした例です。
以下は出力デバイスを7セグメント表示器というデジタル数字表示器にした例です。
以下は、出力デバイスをLED群にして、棒グラフ表示にした例です。
今回は、入力デバイスを「デジタル温度計」に、出力デバイスを「電源スイッチ」にした例をご紹介します。
ラズベリーパイからGASにアクセスし、温度センサの検温結果を自動記録(データ・ロギング)する
ラズベリーパイの主な用途のひとつに、各種センサを取り付けて値を読み取るというものがあります。
温度センサもそのひとつです。日常生活で、温度を知りたいシーンは多いのではないでしょうか。
料理、冷暖房、保温・・・センサを使えばこうしたシーンで、今まで漠然と体感で得ていた温度を数値で知る事ができます。
今回は、温度センサとして、ラズベリーパイの工作でよく使われマキシム社製のDS18B20という製品を使います。この製品は実装が簡単で、防水仕様という特徴があります。
そしてGASと組み合わせる事で、計測した温度をスプレッドシートに記録する方法をご紹介します。
こうした記録行為の事をデータ・ロギングといいます。
得られたデータをみて電気ポットの電源をOn-Offする
さて、センサの値を自動記録するだけではなく、これを活かすことも考えたいと思います。
今回は出力デバイスに、「リレー」と呼ばれる電源スイッチを使う事にします。
リレーは、ラズベリーパイなどの微弱な電圧のOn-Offを読み取って、100Vなどのもっと大きな電源のOn-Offを行うデバイスです。
スイッチ機能を介するので、「リレー」と呼ばれます。
今回使ったのはSSR-10-DA という、半導体を使った製品で、Amazonで販売されていた中国メーカーのものです。入力側が直流3V以上で、出力側で交流250V(10A)までを制御できるものです。
上記のリレーは半導体リレー(ソリッド・ステート・リレー:SSR)と呼ばれる種類のものですが、類似製品が多々あり注意が必要です。
たとえば、以下は入力側が90Vからとなっており、ラズベリーパイの信号で制御するには不適です。購入時は製品の説明書をよく確認する必要があります。
さて、こうしたリレーに、電気ポットをつなぎます。
今回使ったのは、アイリスオーヤマ製のスロークッカーです。
スロークッカーという調理具は、ごく弱い火力で長時間煮炊きするためのもので、たいてい小電力(上記の場合は200W足らず、つまり200W÷100V=2アンペア程度)ですので、10Aまでのリレーで制御するのに適しています。
フィードバック制御により、正確に55℃で甘酒をつくる
さて、この調理器で何をするかというと・・・・、今回は甘酒づくりをする事にしました。
甘酒づくりは55℃~60℃が適温とされますが、この温度を出すのが難しい。専用器具がなければ炊飯器の蓋をあけたりして対応する事が多いのですが、実際は何度になっているかいつも不安でした。
GASからOn-Offの判断を出して電源を制御する事で、上記のスロークッカーを正確に55℃に保つ事ができます。
正確な温度制御のもとで作った甘酒はどんな味がするのでしょうか?
制御のロジックはとても簡単で、55℃を下回ったら電源を入れ、それ以外の場合は電源を切るというものです。(その他、6時間(360分)以上経過したら電源を切るという条件も付けています)
得られた温度から、スプレッドシート関数で簡単にOnかOffを判断できますので、この情報をラズベリーパイに渡して、リレーでスイッチングします。
こうした、結果をみて電源を制御することを「フィードバック制御」といいます。
(素早い反応が不要であれば)GASとラズベリーパイでこれを簡単に実装できます。
データ状況をグラフで表示させる
計時変化する数値が得られればグラフで見たくなりますよね?
今回は、この方法もご紹介します。
もちろんスプレッドシートのグラフ機能を使う事もできますが、テンプレートを使ってWEBページとして表示させる方が、スマートフォンでも簡単に確認できて便利です。
GASの良いところは、このテンプレートで、世の中にある多様なJavaScriptベースのライブラリを利用できることです。
WEBページで表示するためのライブラリは多数ありますが、今回は、「Plotly.js」というライブラリをご紹介します。
このライブラリは、グラフを絵として表現するのではなく、SVG要素というアクセス可能な図形要素として表現します。
上記が「Plotly.js」で表現したグラフですが、このグラフにマウスを当てると・・・
当てた座標の値がポップアップ表示されます。
その他いろいろインタラクティブな表示ができる、便利なグラフが表示されるが特徴です。
各部の詳細は、続きの記事でご紹介していきます。