ubuntu上のArduino IDEでPico開発

せっかくArduino IDEをインストールしたので、Raspberry Pi Pico W もArduino IDEで開発できるように環境をセットアップしたいと思います。

公式の「Arduino Mbed OS RP2040 Boards」のインストール

「ファイル」-「基本設定」で「追加のボードマネージャのURL」に下記を追加します。

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

こんな感じに入力して、「OK」をクリックします。

「ツール」-「ボード」-「ボードマネージャ」を選択すると、左側のペインに追加可能なボードの一覧が表示されるので、公式の「Arduino Mbed OS RP2040 Boards」と、別パッケージで「Raspberry Pi Pico/RP2040」がありますが、今回は公式の「Arduino Mbed OS RP2040 Boards」をインストールします。

公式の「Arduino Mbed OS RP2040 Boards」の最新は4.1.3でした。

今回はインストールしませんが、「Raspberry Pi Pico/RP2040」の最新は3.9.3のようです。

「インストール」ボタンをクリックするとインストールを開始します。

画面に右下の出力ウィンドウに「installed」が出力されれば完了です。

ボードの設定を行います。
「ツール」-「ボード」-「Arduino Mbed OS RP2048 Boards」-「Raspberry Pi Pico」

ポートの設定を行います。
「ツール」-「ポート」-「/dev/ttyACM0」

実行するサンプルコードを選択します。
「ファイル」-「スケッチ例」-「01.Basics」-「Blink」

サンプルコードをロードしました。

「→」をクリックして実行します。

がーん!なぜかエラーが…

原因の追究をしてみたが…

ツールのコンソール出力のエラー内容は

Failed uploading: uploading error: exit status 1

なのだが、ターミナルには下記のようなエラーも出力されていた。

level=error msg="Upload port detection failed, watcher closed" task=port_detection

やはり、この手のエラーはシリアル絡みだよなぁ。ということで、インストール時の手順を確認すると、Downloading and installing the Arduino IDE 2の最後に、udevのルールファイルの作成の記述があった。

/etc/udev/rules.d/99-arduino.rules

に、下記の内容を記述するらしい。

SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", GROUP="plugdev", MODE="0666"

ただし、このudevのルールファイルを記述しても意味がないのだ。

それは、lsusbコマンドで確認してみると、ブートモードで装着時は

$ lsusb | grep 2e8a
Bus 003 Device 004: ID 2e8a:0003 Raspberry Pi RP2 Boot

MicroPythonインストール時は

$ lsusb | grep 2e8a
Bus 003 Device 003: ID 2e8a:0005 MicroPython Board in FS mode

というように、デバイスIDが異なっているため、このudevのルールは反応しない。

で、さらに調べるとインストール時の手順で

Configuring platform.
Please run as root

というメッセージが出力されていたので、下記のような対応が必要だったらしい。

$ sudo .arduino15/packages/arduino/hardware/mbed_rp2040/4.1.3/post_install.sh

ちなみに、post_install.sh が生成したファイルの中身はこんな感じ

$ cat /etc/udev/rules.d/60-arduino-mbed.rules

# Arduino Mbed bootloader mode udev rules

SUBSYSTEMS=="usb", ATTRS{idVendor}=="2e8a", MODE:="0666"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", MODE:="0666"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1fc9", MODE:="0666"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0525", MODE:="0666"

ということで、デバイスIDの2e8aに対応できる、こちらならイケそうな気がするが…

残念。この対処でも書き込みに成功することはなかった…

「Raspberry Pi Pico/RP2040」のインストール

結局、公式の「Arduino Mbed OS RP2040 Boards」については、問題の原因特定ができずに断念しました。
次に、「Raspberry Pi Pico/RP2040」をインストールしてみました。

ボードの設定を行います。
今回はサポートボードの選択肢が非常に多いです。「Raspberry Pi Pico W」を選択します。
「ツール」-「ボード」-「Raspberry Pi Pico/RP2040」-「Raspberry Pi Pico W」

ポートの設定を行います。
今回は、「BOOTSEL」ボタンを押しながらUSBを挿入しました。
「ツール」-「ポート」-「UF2 Board」

なにもしない空のコードですが、書き込めるか試してみます。

おぉ、今回は無事に書き込めたようです。

再度、書き込む際はシリアルポートを選択します。
「ツール」-「ポート」-「/dev/ttyACM0(Degz Robotics Suibo RP2040, Generic RP2040, Generic Sea-Picro, Raspberry Pi Pico W)」

今度は、先ほど失敗した「Blink」をロードして書き込んでみます。

無事に書き込むことができました。

後日、公式版でエラーになって原因は探らないとですねぇ

Arduino

前の記事

ubuntuでArduino IDE
Arduino

次の記事

ArduinoでSeeed Studio XIAO ESP32C3