![見出し画像](https://assets.st-note.com/production/uploads/images/104127986/rectangle_large_type_2_8c4b92ce4ebfeeef68cacc8e4951d224.jpeg?width=1200)
【GASでIoT】スプレッドシートとデバイスとの相互通信で、安価なラズベリーパイ Pico W の活用を考える~クライアント側でのHTTPSへのアクセストライ!~
クラウド版のマクロともいうべきGASの利用価値
PC環境下では、表計算ソフトのエクセルやワープロソフトのワードが非常に普及していますが、これらを操るプルグラム言語として、VBA(俗にマクロと呼ばれる言語)は良く利用されています。
これらのクラウド版ともいうべきGoogle社のアプリである、GoogleスプレッドシートやGoogleドキュメントにも、GAS(Google Apps Script:もっとクールな名称は思いつかなかったのでしょうかね)と呼ばれるプログラムが付随しています。
両者は似た機能を有していますが、後者の利点は、本体がサーバ上で24時間休むことなく稼働し続けていることと、ネット経由で利用できることです。
その結果として、単にPC画面から操作するばかりでなく、スマートフォンからWEBページを介して操作したり、何なら無線機能を有する電子部品とさえ通信できてしまいます。
GASで出来る「お手軽IoT」
最後に触れた、「無線機能を有する電子部品」とのGASの利用は、今をときめく「IoT」のお手軽版とも言え、実装例として、電子部品に「ラズベリーパイ Zero W」という小さなコンピュータを使ったものを以前記事にしました。
素朴な情報しかやりとりできなかったり、レスポンスが悪くてタイムラグがある点で、産業用途のIoTとは機能・性能面で見劣りしますが、個人の日常用途では、それなりに便利な局面がありそうです。
電子デバイスとしての「ラズベリーパイ Zero W」を使うメリット
「ラズベリーパイ Zero W」は以下の様な、シングルボードコンピュータとよばれるタイプのデバイスです。簡単なプログラムを書く仕掛けがあり、LEDなど様々な電子部品をつなげて、光らせるなどのコントロールが可能です。
また、無線通信機能があるため、上の記事の様に、GASをうまくプログラムして、スプレッドシートの情報を発信したり、受け取ったりすることができます。
![](https://assets.st-note.com/img/1682638132015-KFwbhR7KeM.png)
「Zero W」は、あまり性能は高くないのですが、小さくてもOS(オペレーション・システム)を有した立派なピュータで、ハードウェア寄りの難しい処理はOS内で処理してしまうため、ユーザが書くプログラムはごく短いもので済む利点があります。
利用例1
例えば、つなげる電子部品をフルカラーのLEDテープにし、スプレッドシートに展開した天気予報情報を受けることで、今後一週間の傘の可能性に応じた色で光らせる、「お天気インジゲータ」が作れます。
利用例2
スプレッドシートに情報を送り出す事も可能なので、温度センサからの値をスプレッドシートに自動記入する、無線データロガーとして使う事もできてしまいます。記入した結果を受けて、保温なべのスイッチ制御まで実装した例が以下の記事です。
そして、そこそこ値の張る「ラズベリーパイ」シリーズの中では、比較的安価というメリットがあります。
単純なスイッチングや、情報の小さい通信を行う用途に、この「Zero W」はぴったりです。
値段が高騰した「ラズベリーパイ Zero W」
もともと、「ラズベリーパイ Zero W」は、20ドル程度から、つまり2~3千円であったかと記憶しています。
素朴な機能を実装するのに、あまり高額なデバイスは使えないので、個人がホビー用途で購入したい場合は、この辺りまでの値段かと考えています。
コロナ禍の半導体供給不足のあおりで、値段が高騰
ここで起こったのが、コロナ禍です。新型肺炎の流行で、世界規模で物流の停滞が起こりました。その結果、半導体など製造拠点が限られたモノは、数少ない生産工場が休業に追い込まれることで一気に品薄となりました。
「ラズベリーパイZero W」も半導体不足の他の例にもれず、末端ユーザには容易に手に入らない商品になってしまいました。
2023年4月現在、こうした状況は継続中で、数少ない販売品は、価格が何と1万円前後まで値上がりしてしまい、「素朴な機能」を実装する用途としては、あまりに高額な部品になっています。
いずれ、供給網が復旧し、いずれ以上な高値は是正されるかと思いますが、もっと安価な代替デバイスに替えたいと強く感じていました。
2023年3月以降、日本で使える様になった 安価な「ラズベリーパイ Pico W」
こうした状況下、「ラズベリーパイ」シリーズのひとつで、無線機能を有する商品「ラズベリーパイ Pico W」が、技術基準適合証明付きで発売が開始されました。
![](https://assets.st-note.com/img/1682638039651-KpouNUt1FS.png?width=1200)
商品そのものはもっと前からあったのですが、日本で電波を発する商品として日常生活で使って良いというお墨付きでの商品となった訳です。
この値段が千円台からでした。「素朴な機能」を実装するのにふさわしい値段と感じ、活用を考えました。
類似の商品
この、「Pico W」 は、「Zero」と異なり、OSがありません。「マイコン」と呼ばれる部類のデバイスで、類似の商品に、「マイコン」界の雄、アールデュイーノ(Arduino)に無線機能を追加した「ESP 32」という商品群があります。
![](https://assets.st-note.com/img/1682638841616-dKEXAwYxHD.png)
この商品は更に安価で、これもなかなか魅力的です。
ただし類似商品が沢山あり、それぞれ少しずつピンの機能や配列(ピン・アサイン)が異なっており、仮にどれかを選んでも、その商品がどれくらい長く供給されるか判らないため、実装する時にこの点で悩みそうでした。
そのため、この記事では、商品仕様に一意性、永続性がありそうな「Pico」を選ぶことにしました。
スプレッドシートとの無線通信にトライした結果
さて、GASとの連携でトライした内容を先に述べましょう。
Pico ⇒ スプレッドシート
以下の黄色いセルに、Picoから「X」という文字を送ってみます。
![](https://assets.st-note.com/img/1682644300990-QsRrvIY9Dd.png)
できました!
![](https://assets.st-note.com/img/1682644560672-Bwsuiyzqjh.png)
スプレッドシート ⇒ Pico
以下の青いセルの「▼▼▼▼」と「●●●●」の間の文字をPicoで受けてみます。
![](https://assets.st-note.com/img/1682645449351-JuPLYRPVRw.png)
できました!
(以下のモニタに「◎◎◎通信テスト◎◎◎」と見えます)
![](https://assets.st-note.com/img/1682645359483-AABDrhcDwu.png)
「NeoPixel」の点灯にもチャレンジする。
もうひとつ、電子部品としてLEDテープ「NeoPixel」を接続して、何灯か点灯させてみました。
![](https://assets.st-note.com/img/1682646071316-HU5xrtFPAM.png)
できました!
![](https://assets.st-note.com/img/1682646003908-LWNDE7cGH4.png)
前置きが長くなってしまいましたが、通信トライと、追加でLEDデバイスの点灯もできました!
今回、LEDの点灯は、通信内容とは全くリンクしていませんが、今後、これらの要素技術を組み合わせることで、この安価なデバイスを使って色々なことが出来そうです!
まだ紹介事例が少ない「クライアント側で、HTTPSで始まるURLにアクセスする」事例
さて、さらっと実装内容を書きましたが、発売間もないだけに、まだ「Pico W」での無線通信にトライしたネット上の情報は少なく、これだけの内容に実は結構四苦八苦しました・・・。
とりわけ、Pico W をクライアント側として使って、HTTPSで始まるURLにアクセスした事例の紹介の記事は、数えるほどしか見つかりませんでした。
ネットで見つかる多くは、Pico W を サーバ側として使う事例です。
たとえば、ボタンが表示されたWEBページをPicoからホスティングして、スマートフォンからこのページを覗く。次いでボタンを押下すると、LEDが点灯する、などの事例です。
これも興味深いのですが、この記事のテーマが、スプレッドシートやGASとの連携で、GAS側がサーバになる以上、Pico側はクライアントとしての実装が必要になります。
更に、アクセスするURLがHTTPSで始まるため、この手のURLへアクセスするための、「SSL認証」処理も必要です。
「Zero」では、OSがやってくれていた内容を、プログラムの中で処理するため、なかなか手こずりました。
次回の記事から、この素朴な機能の実装について、ご紹介していきます。
![](https://assets.st-note.com/img/1682647105784-jLaFzPoA39.png)