【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」を選びます。
選択後は、ツールメニューに選んだボードが表示される筈です。
最後に、環境設定で上記のモジュールに関するURL情報を記載します。
メニューバーから「ファイル」⇒「基本設定...」を選択します。
「基本設定」ダイアログが表示されたら、一番下の、「追加のボードマネージャのURL」の入力ボックスの右脇にある「□が2つ」のアイコンをクリックします。
入力ボックスが表示されたら、以下のURLを記入し、「OK」をクリックします。
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
以上で、ボードマネージャの導入と諸設定を完了しました。
ライブラリのインストール
次に、必要に応じてライブラリをインストールします。
今回のLチカは標準の関数だけで実装できるので、この章の作業は不要ですが、説明だけ記載しておきます。
まず最初の画面に戻って、左端のサイドバーで、上から3つめ(本の背表紙の様な)のアイコンを選択します。
すると、「ライブラリマネージャ」の検索画面が表示されますので、検索様のキーワードをダイアログに記入して、検索を掛けます。
表示された選択肢から、必要に合ったライブラリをインストールします。
なお、この記事では一般的な手順として上記記しましたが、「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を立ち上げたら、メニューバーの直下を見て、書き込みボードが、「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に書き込みます。
ウィンドウの左上にある、「→」ボタンをクリックしてください。一連の作業が自動で進みます。
下はコンパイル中のウィンドウです。(初回は、シリアルポートがまだ未接続かの様なコメントが出ますが、気にしないでください)
コンパイルが終わると、ボードマネージャによって書き込みが行われます。
(書き込みが済むと、メッセージが出る場合もありますが、どうした事か、出ない場合もあります。何ならこのままずっと書き込み中になってしまう事もあります。あまり長い場合は再起動していますが、読者の皆さんご自身で善処願います。)
うまく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で動きましたが、他のものは使えないコードが殆どです。
スケッチ例を引用する場合は、ボードマネージャに付随した、以下部分からにしましょう。
一連の手順がつかめました。次の記事では、GASとの通信プログラムにチャレンジします。
この記事が気に入ったらサポートをしてみませんか?