見出し画像

【GASでIoT】GASで「ラズパイ Pico W」から、Googleスプレッドシートへ の読み書きにトライ!(その3~”Lチカ”による開発環境の確認~)

エクセルのクラウド版ともいうべき、Googleスプレッドシートは、単にPC画面から操作するばかりでなく、ネットを介して様々なデバイスからの読み書きが可能で、この利点をうまく利用して、以下の様な「お手軽IoT」を実装することができます。


ところが、”お手軽”を狙って、通信デバイスに採用した「ラズベリーパイ Zero W」が昨今の半導体不足で価格が高騰したため、代替デバイスとして「ラズベリーパイ Pico W」の利用を考えました。

「ラズベリーパイ Pico W」は、まだ日本で発売されて日が浅いため、参考資料が少ない上、Googleスプレッドシートとの通信に必要な「クライアント側」で「HTTPS」にアクセスする機能を実装させた実例が非常に少なく、トライ&エラーを繰り返して進めることにしました。

ところが、まず最初の開発環境の整備からつまづいてしまい、手元環境では、メジャーな開発言語である「MicroPython」で上手く実装できませんでした。

そこで、プログラム言語は「C」を使い、これを開発ソフトは「Arduino IDE」で進める事にしました。

本記事は、その続きで、Arduino IDEでの一連の作業を確認するため、”Lチカ”まで行った内容になります。


この記事は、一介のアマチュアが、断片的な手がかりを寄せ集め、試行錯誤しならがら行った記録です。

失念による「手順の記載もれ」、たまたま上手くできた条件を見逃している「前提条件の未記載」、誤認や理解の浅さによる「誤り」を含んでいる可能性が大いにあります。

うまく再現できない場合があることをご了承頂き、自己責任、自己解決を前提にお読み頂くことをお願いします。

開発環境の構築1 ~「Arduino IDE」のインストール~

「ラズベリーパイ Pico W」は、「ラズベリーパイ Zero W」など、他のラズベリーパイシリーズと異なりOSを有さない「マイコン」と呼ばれるデバイスです。

OSが有るデバイスでは、開発用ソフトをデバイス自身にインストールして、対象としているデバイス上でプログラムコードを書いて開発します。

一方、OSが無い「Pico W」はこうした開発ソフトを内蔵することができないため、PCに開発用ソフトをインストールしてプログラムを作成し、これをマイコン側に移植する・・・という手順を取ります。

そこで、まず、適当なPCに開発用ソフトウェアである「Arduino IDE」をインストールします。

以下のリンク先から、自身のPCに合ったインストール用ファイルをダウンロードし、これを実行することでインストールは完了します。

無料でダウンロードできますが、寄付をするためのボタンがあり、有志の方は歓迎歓迎の様です。

長年多くのユーザに使用されてきただけあって、一連の作業は、迷う事無くできると思います。手順もごく平易ですので、内容は省略します。

なお、本ソフトウェアには、インストール無しに使えるクラウド版もありますが、少し触ったとことでつまずいてしまったので、以下、インストール版を前提に記事を進めます。

インストールが済んだら、「Arduino IDE」を起動します。


起動中に表示されるアイコン


このソフトの起動は、(環境にもよると思いますが)結構時間がかかります。体感で3分は待つイメージです。待っている間は、上の無限大記号の様なアイコンがずとPC画面で動いています。

起動すると、(最初の起動時の様子と違うかもしれませんが)以下の様に、デフォルトのコードを数行記された状態のプログラムが立ち上がります。
(プログラム名は、デフォルトで日付になっているはずです)

ボードマネージャのインストール


以下の画面が開いたら、次にボードマネージャと呼ばれるモジュールをインストールします。

ボードマネージャは、PCで作成したプログラム・コードをマイコンへ移したり、シリアル回線を通じてマイコンと通信するためのモジュールです。

インストール手順はとても簡単です。

まずデフォルトでは画面左にあるサイドバー上の上から2つ目、マイコンボード(?)らしきアイコンをクリックします。

次いでキーワードで候補となるモジュールを検索して、選択するだけです。



2023年5月現在、ラズパイ Pico のボードマネージャは、主に以下の2つが採用されている様です。

1)Arduino Mbed OS RP2040 Boards
Arduino公式のモジュールで「Arduino Mbed」シリーズの一つです。

2)Raspberry Pi Pico/Rp2040
arlephilhower(アーレフィルハウアー?)さんが提供しているフリーウェアです。

スケッチ例なども付属してくるので、一旦2つともインストールします。

検索ワードで「RP204」を入力します。

Arduino Mbed OS RP2040 Boardsは、以下を選択します。

Raspberry Pi Pico/Rp2040は、以下を選択します。

次いで、利用するボードマネージャおよび、ボードの種類を設定します。


後者の Raspberry Pi Pico/Rp2040の方が、使用マイコンを選択する時に「Pico W」が選べるなどボードの種類がきめ細かく選べるので、ここでは、Raspberry Pi Pico/Rp2040 を選択することにします。

メニューバーの「ツール」から「ボード」を選択します。

次いでボードマネージャが選択できるので、「Raspberry Pi Pico/Rp2040 」を選択します。

次いで、各ボードマネージャで設定されているボード種類を選びます。ここではもちろん、「RaspberryPicoW」を選びます。

選択後は、ツールメニューに選んだボードが表示される筈です。

選択後なのでボード名が表示されています



 Raspberry Pi Pico/Rp2040(WEBサイトのタイトルはarduino-pico) のドキュメントは英語ですが、以下にあります。ご興味の方はどうぞ。
Arduino-Pico — Arduino-Pico 3.1.1 documentation

最後に、環境設定で上記のモジュールに関するURL情報を記載します。

メニューバーから「ファイル」⇒「基本設定...」を選択します。

「基本設定」ダイアログが表示されたら、一番下の、「追加のボードマネージャのURL」の入力ボックスの右脇にある「□が2つ」のアイコンをクリックします。

Arduino が提供するボードマネージャの場合は以下の設定は不要です。

入力ボックスが表示されたら、以下のURLを記入し、「OK」をクリックします。

以下を記入しています

https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

以上で、ボードマネージャの導入と諸設定を完了しました。

最初の作業での記憶を辿っているのですが、確か上記の手順でした。記憶違いもあり得ますこと、ご了承ください。


ライブラリのインストール

次に、必要に応じてライブラリをインストールします。

ライブラリとは、プログラムにおいて、汎用性の高い関数や定数の設定部分を抜き出したもので、これがあることで、ユーザは、改めて定義することなく、便利な関数・定数を利用できる様になります。

今回のLチカは標準の関数だけで実装できるので、この章の作業は不要ですが、説明だけ記載しておきます。

まず最初の画面に戻って、左端のサイドバーで、上から3つめ(本の背表紙の様な)のアイコンを選択します。


すると、「ライブラリマネージャ」の検索画面が表示されますので、検索様のキーワードをダイアログに記入して、検索を掛けます。

表示された選択肢から、必要に合ったライブラリをインストールします。

選択後は、殆どArduino IDE が進めてしまうので、作業で戸惑う事はないと思います。

なお、この記事では一般的な手順として上記記しましたが、「Lチカ」を実装する程度であれば、追加のライブラリのインストールは不要です。

マイコン「ラズベリーパイ Pico W」の用意


ここまでで、PC側の開発環境ができました。ここからは、いよいよ「ラズベリーパイ Pico W」を使った作業になります。

PCとは、MicroUSBケーブルでつなげますので、データ転送可能なケーブル(および、PCによってはUSBハブ)を用意ください。

接続時には、最初だけですが、下の写真の左上方にある、白いボタン(BOOTSELボタン)を押しながらケーブル接続します。

こうすることで、PC側には、このマイコンが、単なるストレージとして認識されます。


上図の様に、RP2などの名称で、メディアとして認識されるのでご確認ください。

過去に書き込みしている場合、「Flsh_Nuke.UF2」でメモリをリフレッシュする


ここで、過去に色々と書き込みをした「ラズベリーパイPico W」を使う場合は、一度メモリをリフレッシュし、出荷状態に戻しておきます。

内容が見えなくても、メモリの残容量が少なくなっていて、新しくプログラム・コードを書き込む領域が少なくなっている可能性があるからです。

リフレッシュは簡単で、電子部品のDIYキットのメーカーである、Adafruit(エイダ・フルーツ)社が公開している、「Flsh_Nuke.UF2」というファイルを、ストレージとして認識された ラズパイPico W にコピー&ペーストするだけです。


Flsh_Nuke.UF2は、以下のサイトからダウンロードします。

上記にアクセスし、WEBページにある、以下の緑色のボタンをクリックすることで、入手できます。

新品の際に、もとから入っているファイルが2つありますが、これはそのまま残ります。他のファイルは消えてしまいますので、ご注意ください。

ここまでできたら、ラズベリーパイPicoWは、接続したままにしておき、
Arduino IDEを再起動します。

繰り返しますが、Arduino IDEの起動にはずいぶん時間がかかります。以下のアイコンが出続けます・・・。


Arduino IDEから、書き込みポートを確認する


Arduino IDEを立ち上げたら、メニューバーの直下を見て、書き込みボードが、「Raspberry Pi Pico W」であることを確認ください。

また、マイコン用のポート状態を確認します。

メニューバーから「ツール」を選択して、「ポート」を確認します。マイコンが接続されていないと、以下の図の様に選べません。マイコンを接続してから Arduino IDE を起動しなおしてください。

接続されている場合は、1つだけ選べるはずです。

この段階では、具体的な「ポートXX」とはなっておらず、「UF2 Board」 などとなっていますが、気にしないでください。

お疲れ様です。ようやく、プログラムを記述する準備ができました!

以上の手順も、記憶を辿っていますが、初期手順として記憶違いの可能性もありますので、ご了承ください。


「Lチカ」のプログラムを書き込む


いよいよ最終段階です。Lチカのプログラムを書き込みます。

Arduino IDE の良いところの一つは、プログラム例が手軽に流用できる点です。Lチカも、既存のプログラムを流用して実装します。

「ファイル」⇒「スケッチ例」と選択します。

「付属のスケッチ例」のカテゴリにある、「01Basics」を選択します。


さらに、「Blink」を選択します。ここにLチカの例があります。


新しいウィンドウが開き(また時間がかかります)、以下の様なコードが読み込まれます。


コメントを除いた部分は以下です。
短いですね。

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);  // turn the LED on (HIGH is the voltage level)
  delay(1000);                      // wait for a second
  digitalWrite(LED_BUILTIN, LOW);   // turn the LED off by making the voltage LOW
  delay(1000);                      // wait for a second
}


コンパイルとラズベリーパイPicoWへの書き込み

最後に、コードをコンパイルし、ラズベリーパイPicoWに書き込みます。


ウィンドウの左上にある、「→」ボタンをクリックしてください。一連の作業が自動で進みます。


下はコンパイル中のウィンドウです。(初回は、シリアルポートがまだ未接続かの様なコメントが出ますが、気にしないでください)

コンパイルが終わると、ボードマネージャによって書き込みが行われます。

ここまで、とても長いです。Arduino IDE の欠点 1つですが、ひたすら待ちます。

(書き込みが済むと、メッセージが出る場合もありますが、どうした事か、出ない場合もあります。何ならこのままずっと書き込み中になってしまう事もあります。あまり長い場合は再起動していますが、読者の皆さんご自身で善処願います。)

うまくLEDが点灯したでしょうか。

余計なケーブルがあるのは無視ください

ArduinoIDEで、小さいプログラムですが、ラズベリーパイPicoWに書き込みできました。

まとめと注意点


手順が長くなったので、まとめておきましょう。

1.Arduino IDEをPCにインストールします
2.ボードマネージャをインストールします
3.「ツール」から利用するボードを選択し、「ファイル」から環境設定をします
4.ライブラリを必要に応じてインストールします(今回不要)
5.ラズパイPicoWをBOOTSELボタンを押してPCに接続し、Flsh_Nuke.UF2をコピー&ペーストすることで出荷時の状態に戻します(必要時のみ)
6.ラズパイPicoWをつないだままArduinoIDEを再起動します。ボードが「RaspberryPicoW」で、ポートが選択されていることを確認します。(最初はポートは「UF2 Board」などになっている)
7.スケッチ例を引用し、コンパイルします


注意点~ライブラリやスケッチ例はPicoで使えない事が多い~

ArduinoIDEは、もともと、Arduinoというマイコンシリーズの開発ソフトです。

このマイコンのコアチップは、ラズパイPicoとは異なるものを採用しているため、公開されているライブラリやスケッチ例の多くが、どちらかでしか使えず、殆どはArduinoシリーズ専用です。

今回利用した、「Blink」というLチカのスケッチは、Pico用のボードマネージャに付随するコードなのでPicoで動きましたが、他のものは使えないコードが殆どです。

スケッチ例を引用する場合は、ボードマネージャに付随した、以下部分からにしましょう。

Arduino Mbed OS RP2040 Boardsのもの


Raspberry Pi Pico/Rp2040のもの

Picoで動かないプログラムでも、コンパイルまで何のエラーもなく進む事が多いのですが、コードを書き込んでみると動きません。

一連の手順がつかめました。次の記事では、GASとの通信プログラムにチャレンジします。

この記事が気に入ったらサポートをしてみませんか?