![見出し画像](https://assets.st-note.com/production/uploads/images/104497937/rectangle_large_type_2_9fcd9ed10a170319d348b21dbd099497.jpeg?width=1200)
【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」を起動します。
![](https://assets.st-note.com/img/1683026451165-Ym4vyHcx7Z.png)
このソフトの起動は、(環境にもよると思いますが)結構時間がかかります。体感で3分は待つイメージです。待っている間は、上の無限大記号の様なアイコンがずとPC画面で動いています。
起動すると、(最初の起動時の様子と違うかもしれませんが)以下の様に、デフォルトのコードを数行記された状態のプログラムが立ち上がります。
(プログラム名は、デフォルトで日付になっているはずです)
![](https://assets.st-note.com/img/1683027465242-QLfrSqqaaI.png?width=1200)
ボードマネージャのインストール
以下の画面が開いたら、次にボードマネージャと呼ばれるモジュールをインストールします。
ボードマネージャは、PCで作成したプログラム・コードをマイコンへ移したり、シリアル回線を通じてマイコンと通信するためのモジュールです。
インストール手順はとても簡単です。
まずデフォルトでは画面左にあるサイドバー上の上から2つ目、マイコンボード(?)らしきアイコンをクリックします。
![](https://assets.st-note.com/img/1683075870016-RskMjK4L2z.png)
次いでキーワードで候補となるモジュールを検索して、選択するだけです。
![](https://assets.st-note.com/img/1683027917385-jnldF13Lmc.png)
2023年5月現在、ラズパイ Pico のボードマネージャは、主に以下の2つが採用されている様です。
1)Arduino Mbed OS RP2040 Boards
Arduino公式のモジュールで「Arduino Mbed」シリーズの一つです。
2)Raspberry Pi Pico/Rp2040
arlephilhower(アーレフィルハウアー?)さんが提供しているフリーウェアです。
スケッチ例なども付属してくるので、一旦2つともインストールします。
検索ワードで「RP204」を入力します。
![](https://assets.st-note.com/img/1683075461185-R68f6r56bz.png)
Arduino Mbed OS RP2040 Boardsは、以下を選択します。
![](https://assets.st-note.com/img/1683075384658-Fqncok7LUW.png)
Raspberry Pi Pico/Rp2040は、以下を選択します。
![](https://assets.st-note.com/img/1683075357144-EUf6kqXlfN.png)
次いで、利用するボードマネージャおよび、ボードの種類を設定します。
後者の Raspberry Pi Pico/Rp2040の方が、使用マイコンを選択する時に「Pico W」が選べるなどボードの種類がきめ細かく選べるので、ここでは、Raspberry Pi Pico/Rp2040 を選択することにします。
メニューバーの「ツール」から「ボード」を選択します。
![](https://assets.st-note.com/img/1683031031516-oyEtbV0FkX.png)
次いでボードマネージャが選択できるので、「Raspberry Pi Pico/Rp2040 」を選択します。
![](https://assets.st-note.com/img/1683075672683-olv0IMsUrI.png)
次いで、各ボードマネージャで設定されているボード種類を選びます。ここではもちろん、「RaspberryPicoW」を選びます。
![](https://assets.st-note.com/img/1683076052908-8foSKTFEKv.png)
選択後は、ツールメニューに選んだボードが表示される筈です。
![](https://assets.st-note.com/img/1683075630828-zTD3kW4rSM.png)
Raspberry Pi Pico/Rp2040(WEBサイトのタイトルはarduino-pico) のドキュメントは英語ですが、以下にあります。ご興味の方はどうぞ。
Arduino-Pico — Arduino-Pico 3.1.1 documentation
最後に、環境設定で上記のモジュールに関するURL情報を記載します。
メニューバーから「ファイル」⇒「基本設定...」を選択します。
![](https://assets.st-note.com/img/1683029903150-R2HNOM3G09.png)
「基本設定」ダイアログが表示されたら、一番下の、「追加のボードマネージャのURL」の入力ボックスの右脇にある「□が2つ」のアイコンをクリックします。
![](https://assets.st-note.com/img/1683029022865-YH4NlGUNUX.png?width=1200)
Arduino が提供するボードマネージャの場合は以下の設定は不要です。
入力ボックスが表示されたら、以下のURLを記入し、「OK」をクリックします。
![](https://assets.st-note.com/img/1683030170659-ko67xFaL2y.png?width=1200)
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
以上で、ボードマネージャの導入と諸設定を完了しました。
最初の作業での記憶を辿っているのですが、確か上記の手順でした。記憶違いもあり得ますこと、ご了承ください。
ライブラリのインストール
次に、必要に応じてライブラリをインストールします。
ライブラリとは、プログラムにおいて、汎用性の高い関数や定数の設定部分を抜き出したもので、これがあることで、ユーザは、改めて定義することなく、便利な関数・定数を利用できる様になります。
今回のLチカは標準の関数だけで実装できるので、この章の作業は不要ですが、説明だけ記載しておきます。
まず最初の画面に戻って、左端のサイドバーで、上から3つめ(本の背表紙の様な)のアイコンを選択します。
![](https://assets.st-note.com/img/1683030285528-9i7w70asj2.png)
すると、「ライブラリマネージャ」の検索画面が表示されますので、検索様のキーワードをダイアログに記入して、検索を掛けます。
![](https://assets.st-note.com/img/1683032026252-akKE4TIGIz.png)
表示された選択肢から、必要に合ったライブラリをインストールします。
選択後は、殆どArduino IDE が進めてしまうので、作業で戸惑う事はないと思います。
なお、この記事では一般的な手順として上記記しましたが、「Lチカ」を実装する程度であれば、追加のライブラリのインストールは不要です。
マイコン「ラズベリーパイ Pico W」の用意
ここまでで、PC側の開発環境ができました。ここからは、いよいよ「ラズベリーパイ Pico W」を使った作業になります。
PCとは、MicroUSBケーブルでつなげますので、データ転送可能なケーブル(および、PCによってはUSBハブ)を用意ください。
接続時には、最初だけですが、下の写真の左上方にある、白いボタン(BOOTSELボタン)を押しながらケーブル接続します。
![](https://assets.st-note.com/img/1683069888794-KbX6XoOqOd.png)
こうすることで、PC側には、このマイコンが、単なるストレージとして認識されます。
![](https://assets.st-note.com/img/1683072251403-Z4OCSHjZe0.png)
上図の様に、RP2などの名称で、メディアとして認識されるのでご確認ください。
過去に書き込みしている場合、「Flsh_Nuke.UF2」でメモリをリフレッシュする
ここで、過去に色々と書き込みをした「ラズベリーパイPico W」を使う場合は、一度メモリをリフレッシュし、出荷状態に戻しておきます。
内容が見えなくても、メモリの残容量が少なくなっていて、新しくプログラム・コードを書き込む領域が少なくなっている可能性があるからです。
リフレッシュは簡単で、電子部品のDIYキットのメーカーである、Adafruit(エイダ・フルーツ)社が公開している、「Flsh_Nuke.UF2」というファイルを、ストレージとして認識された ラズパイPico W にコピー&ペーストするだけです。
![](https://assets.st-note.com/img/1683072283804-VwgVlb0RTC.png)
Flsh_Nuke.UF2は、以下のサイトからダウンロードします。
上記にアクセスし、WEBページにある、以下の緑色のボタンをクリックすることで、入手できます。
![](https://assets.st-note.com/img/1683071308904-bPMqJneJA4.png?width=1200)
新品の際に、もとから入っているファイルが2つありますが、これはそのまま残ります。他のファイルは消えてしまいますので、ご注意ください。
ここまでできたら、ラズベリーパイPicoWは、接続したままにしておき、
Arduino IDEを再起動します。
繰り返しますが、Arduino IDEの起動にはずいぶん時間がかかります。以下のアイコンが出続けます・・・。
![](https://assets.st-note.com/img/1683074144812-VJmTHIAwrj.png)
Arduino IDEから、書き込みポートを確認する
Arduino IDEを立ち上げたら、メニューバーの直下を見て、書き込みボードが、「Raspberry Pi Pico W」であることを確認ください。
![](https://assets.st-note.com/img/1683071827665-emd2S1gx4a.png)
また、マイコン用のポート状態を確認します。
メニューバーから「ツール」を選択して、「ポート」を確認します。マイコンが接続されていないと、以下の図の様に選べません。マイコンを接続してから Arduino IDE を起動しなおしてください。
![](https://assets.st-note.com/img/1683071954611-BlnbFn53ux.png)
接続されている場合は、1つだけ選べるはずです。
この段階では、具体的な「ポートXX」とはなっておらず、「UF2 Board」 などとなっていますが、気にしないでください。
![](https://assets.st-note.com/img/1683073533124-hEmLscIxYx.png)
お疲れ様です。ようやく、プログラムを記述する準備ができました!
以上の手順も、記憶を辿っていますが、初期手順として記憶違いの可能性もありますので、ご了承ください。
「Lチカ」のプログラムを書き込む
いよいよ最終段階です。Lチカのプログラムを書き込みます。
Arduino IDE の良いところの一つは、プログラム例が手軽に流用できる点です。Lチカも、既存のプログラムを流用して実装します。
「ファイル」⇒「スケッチ例」と選択します。
![](https://assets.st-note.com/img/1683072539099-LEJOKLVSKP.png)
「付属のスケッチ例」のカテゴリにある、「01Basics」を選択します。
![](https://assets.st-note.com/img/1683072872116-Lcgs5KqOv1.png)
さらに、「Blink」を選択します。ここにLチカの例があります。
![](https://assets.st-note.com/img/1683072935144-XTZUXFtvIL.png)
新しいウィンドウが開き(また時間がかかります)、以下の様なコードが読み込まれます。
![](https://assets.st-note.com/img/1683073134503-ih0JsdHUkc.png?width=1200)
コメントを除いた部分は以下です。
短いですね。
// 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に書き込みます。
ウィンドウの左上にある、「→」ボタンをクリックしてください。一連の作業が自動で進みます。
![](https://assets.st-note.com/img/1683073475962-lnJI5K3NEV.png)
下はコンパイル中のウィンドウです。(初回は、シリアルポートがまだ未接続かの様なコメントが出ますが、気にしないでください)
![](https://assets.st-note.com/img/1683073379443-d2uu6q1mR7.png?width=1200)
コンパイルが終わると、ボードマネージャによって書き込みが行われます。
![](https://assets.st-note.com/img/1683073762619-OL4Cxlhf8a.png?width=1200)
ここまで、とても長いです。Arduino IDE の欠点 1つですが、ひたすら待ちます。
(書き込みが済むと、メッセージが出る場合もありますが、どうした事か、出ない場合もあります。何ならこのままずっと書き込み中になってしまう事もあります。あまり長い場合は再起動していますが、読者の皆さんご自身で善処願います。)
うまくLEDが点灯したでしょうか。
![](https://assets.st-note.com/img/1683074061727-0C0kzEUL7G.png)
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で動きましたが、他のものは使えないコードが殆どです。
スケッチ例を引用する場合は、ボードマネージャに付随した、以下部分からにしましょう。
![](https://assets.st-note.com/img/1683076556862-358kyregxl.png)
![](https://assets.st-note.com/img/1683076599662-LWO7wnaPNl.png)
Picoで動かないプログラムでも、コンパイルまで何のエラーもなく進む事が多いのですが、コードを書き込んでみると動きません。
一連の手順がつかめました。次の記事では、GASとの通信プログラムにチャレンジします。
![](https://assets.st-note.com/img/1683073231315-O2GwB0UIdW.png)