![見出し画像](https://assets.st-note.com/production/uploads/images/79960115/rectangle_large_type_2_47927c29dfa19bc541bfd72702dc1083.jpeg?width=1200)
【GASでIoT】GASとラズパイでおこなう、お手軽データ・ロギング&フィードバック制御〔解説編1〕~システム概説と、1-wire仕様の温度センサ DS18B20の接続準備~
この記事のシリーズでは、Googole Apps Script(GAS)を利用して、日常生活を便利にする事をテーマにしています。
GASへのアクセスは、通常はキーボードから文字情報で行いますが、「Raspberry Pi(ラズベリーパイ)」というシングルボードコンピュータを介することで、文字以外の情報をインプットする事ができます。
「ラズベリーパイ」にはいくつかシリーズがありますが、ここではWiFi付きで一番安い「Raspberry Pi Zero WH」という、WiFi通信ができる最も安いモデルを使います。
![](https://assets.st-note.com/img/1654321055266-e2Pa6VKbLH.png)
この製品は本来は1500円程度のはずが、世界的な半導体不足により、2022年現在価格が高騰しています。
このシングルボードコンピュータに、さまざまなセンサをつなぐ事で、現実世界から様々な情報をインプットできます。今回インプットする情報は「温度」で、この情報を利用して電気なべの温度をコントロールしよう、というのがテーマです。
全体の概要は、先回の記事を参照ください。
さて、今回の記事は、システム全体の振り返りと、温度センサの接続準備についてです。
システム全体を振り返る
今回のシステム全体を改めて振り返ります。
まず、ラズベリーパイにつないだセンサが電気なべの温度を測ります。
ラズベリーパイには外部のWEBサイトにアクセスする機能がありますので、GASプログラムのURLにアクセスする事によって測り取った値を渡します。
GASプログラムに紐付いたURL末尾にパラメータを付け加えてアクセスすると、GASに値を渡せます。
GASで受け取った値は、スプレッドシートに記入されます。
ここまでがデータの取得と記録(データ・ロギング)です。下図で青い矢印で示している流れです。
![](https://assets.st-note.com/img/1654344393665-B6ySkJVHmV.png?width=1200)
続いて、今度はスプレッドシートの値をラズベリーパイに渡します。上記の図では赤い矢印の流れになります。
スプレッドシートには値に応じてOn/Offの判断を表示する関数が記入されています。
GASは、この判断結果を読み取り、レスポンスとしてアクセス元のラズベリーパイに判断情報を渡します。
URLに紐付いたGASプログラムでは、アクセス元にレスポンスを返すことが可能です。
判断結果に従って、ラズベリーパイはスイッチ(リレー)を操作します。(熱すぎればOffにし、冷たすぎればOnにします)
こうして、温度を見ながらスイッチングすることで温度を保ちます。(フィードバック制御)
以上がシステムの概要になります。
他のシステムに比べた特徴
このシステムでは、判断の主体はあくまでGASやスプレッドシートであり、ラズベリーパイは、あくまで出入力デバイスに特化しています。
ラズベリーパイから見ると、データを一端外部に出して判断するので、即応性がなく、またデータの経路が長いことから通信に失敗するリスクも高くなるため、一般的にはあまり使われないシステムかと思います。
このシステムを採用する意味はあるのでしょうか?
このシリーズがGASなので、あくまでGASを主体に据えるという方針があるのが一つの理由ですが、メリットが無い訳ではありません。
他のシステムと比べたメリットに言及してみます。
ラズベリーパイ完結型
よくあるのが、ラズベリーパイ単独で完結するシステムです。
![](https://assets.st-note.com/img/1654346234975-yP4OHFFgQy.png)
ラズベリーパイそのものに、プログラム機能があるので、ここで判断するシステムは合理的です。
この場合のデータの記録は、SDカードやIoTデータの受け付けサービス(イフト(IFTTT)やアンビエント(AMBIENT)が有名です)で対応します。
今回の記事のシステムに比べたデメリットを敢えてあげると、一端運転が始まると外から介入する余地がほとんどないので、運転中に判断条件を変えるなどができない事が挙げられます。(今回の記事の方法でなら、スプレッドシートを編集して途中で自由に判断条件を変える事ができます)
また、外部のサービスに依存する点も、通信内容の自由度が小さいという点では欠点かもしれません。
ラズベリーパイのサーバ利用型
次に見られる方法が、ラズベリーパイをサーバとして利用し、WEBページなどを立ち上げて、ここを介して制御する方法です。
![](https://assets.st-note.com/img/1654347228013-lszigNm6ic.png)
この方法では、ラズベリーパイ自らがホスティングしたWEBページなどにアクセスする事で、自由に介入したり、データを抜き取ったりできます。
これも今回の記事のシステムに比べたデメリットを敢えてあげると、実装するまでに必要とされる知識量が多い事、悪意のあるアクセスを受ける可能性がある事です。
以上、システムの振り返りでした。
続いてセンサのご説明をします。
1-wire仕様の温度センサ DS18B20
ラズベリーパイにつなげる温度センサのなかで、広く利用されているセンサの一つが、DS18B20というMaxim(マキシム)社の製品です。
![](https://assets.st-note.com/img/1654321596836-UZmsUzjhxO.png)
迅速な変化を読み取るのは苦手な代わり、アマチュアユーザが利用するのに便利な特徴を多く有しており、ネット上のあちこちでアマチュアによる使用例をみる事ができます。
Amazonの販売例も多数ありますので、本品の販売サイトの掲載は省略させていただきます。
この製品の特注をご説明します。
特徴①追加部品が不要
一般的にセンサは、読み取った情報を「デジタルな数値に変換する」部品を必要とします。
一方、このセンサは製品そのものに「デジタルな数値に変換する」機能が含まれており、追加の部品は不要です。
特徴②防水仕様
ケーブルを含む全体が防水仕様になっています。
ケーブル全体が防水性ある被覆がされており、またセンサ本体はステンレスのキャップで覆われていますので、水の温度なども測定可能です。今回の様に、電気なべの温度を知りたい場合にはぴったりです。
ちなみに、ステンレスのキャップの中には以下の様なICが入っています。
![](https://assets.st-note.com/img/1654322256665-pEj0hudUjs.png)
通販で購入する場合は、上記の様に本体のみでの販売でないかどうか、混同しない様に気を付けましょう。
特徴③配線がシンプル
このセンサには、ケーブルが3本しかありません。またつなぎ方は簡単で、以下の様につなぎます。
赤線・・・電源(3V~5.5V)ピン
黒線・・・アース(G)ピン
黄色線・・・GPIO(データ読み取り用)の所定のピン
信号線が1本しかない仕様が、1-wire の大きな特徴であり、この仕様名の由来にもなっています。
特徴④センサの数を簡単に増やせる
1-wire の大きな特徴の1つが、センサの数を簡単に増やせる事です。しかも、信号線は同じピンに複数つないで構いません。
一般的なセンサでは、数を増やすと、必要となるピンの数が増えたり、データを仕分けるための措置が必要なのですが、1-wire では必要となるピンは増えず、データの仕分けでもユーザ側が準備することは殆どありません。
特徴⑤ラズベリーパイの側の準備がほぼ不要
センサをラズベリーパイで利用する際は、ドライバとなるソフトのインストールが必要だったり、読み取った値の変換が必要な場合があります。
一方、このセンサはラズベリーパイの簡単な設定変更だけですぐ使い始められる上、得られたデータは数値変換しなくてもそのまま用できる値(℃など)となっています。
1-wire仕様のセンサの接続
ラズベリーパイで最新のOSがインストールされていれば、接続は簡単です。
デスクトップメニューから、「設定」→「Rspberry Piの設定」を選択します。
![](https://assets.st-note.com/img/1654348758845-VZi4pthpCl.png?width=1200)
続いて表示される画面で、「インターフェース」のタブをクリックし、1-wireの項目を有効にします
![](https://assets.st-note.com/img/1654348909462-TX7NegN51P.png?width=1200)
有効にしてダアログを「OK」すると、再起動を促す画面になります。
![](https://assets.st-note.com/img/1654349112261-fQkxoCp2Z9.png)
ここで「はい」を選択して、再起動します。
これで、ラズベリーパイ側のデバイスとの接続準備は完了です。
簡単でした!
続いて、センサの配線をしますが、ここで切って、以降は次の記事でご紹介していきます。
![](https://assets.st-note.com/img/1654349204838-bXnssqNXgm.png)