中野島ロボット

小さなロボットの自作記事を書いています。

週間中ロボ200 ピコピコやってます!ラズパイOSでArduino IDE でRaspberry Pi Picoを使うには

今週のお題「引っ越し」

はじめに
ここにたどり着いたと言うことは、おそらくラズパイOSでArduinoIDEを使って、Raspberry Pi Picoを使いたいのだが、スケッチが書き込めないと言ったお悩みではありませんか。

f:id:nakarobo:20220309043334p:plain

例えばこんなメッセージが表示されているとか。

Arduino:1.8.13 (Linux), ボード:"Raspberry Pi Pico"

最大16777216バイトのフラッシュメモリのうち、スケッチが13932バイト(0%)を使っています。
最大270336バイトのRAMのうち、グローバル変数が42780バイト(15%)を使っていて、ローカル変数で227556バイト使うことができます。
.....................
スケッチの書き込み中にエラーが発生しました


「ファイル」メニューの「環境設定」から
「より詳細な情報を表示する:コンパイル」を有効にすると
より詳しい情報が表示されます。

 

前提条件
・OSはRaspberry Pi OS Bullsyse 64ビット版です。
・Add/Remove SoftWareで、Arduino IDEがインストールされているものとします。
・ボードマネージャでArduino Mbed OS RP2040 Boards がインストールされているものとします。

手順
Arduino IDEのPico用のボードライブラリには、Arduino純正版と伯爵版があり、これはArduino純正版の操作説明になっています。では解決の手順を説明します。

1. 「おまじない」をかける

端末を開いてArduino IDEの post_install.sh を実行します。

$ cd ~/.arduino15/packages/arduino/hardware/mbed_rp2040/2.7.2
$ sudo ./post_install.sh
Reload rules...

(!) 2.7.2の部分は、Arduino IDEのバージョンで変わるので注意です。

(!) このおまじないはArduino IDEをインストールした最初だけでOKです。

(!) 2.7.2以降では改善されるかもしれません。

2 Arduino IDE でBlinkをコンパイル
実はArduinoでプログラムをコンパイルすると、.uf2ファイルがテンポラリディレクトリに作成されます。例えば Blink.ino だとテンポラリフォルダ
 /tmp/arduino_build_206433/Blink.ino.elf.uf2
の下にコンパイル済みの実行形式が作成されています。

(!) /tmp/arduino_build_XXXXXXの部分は毎回変わります。

Arduino IDEから書き込みができなくても、コンパイルができていれば、

 Blink.ino.elf.uf2

を、PicoをBOOTSELを押しながら、ラズパイのUSB端子に刺してマウントされたフォルダにコピーすればスケッチが書き込めます。

3. 認識を確認
Arduino IDEでシリアルが /dev/ttyACM0 (Raspberry Pi Pico)として認識されるはずです。ボード情報も表示されるはずです。
一度Arduino IDEからスケッチを書き込むと、ブートローダーも一緒に書き込まれているので、次回からはBOOTSELを押して認識させる必要はなくなります。
逆にBOOTSELを押して起動すると、USBメモリとしてマウントされてしまい、USBシリアルの/dev/ttyACM0 が認識されなくなります。

f:id:nakarobo:20220226215114j:plain

ちなみに中野島ロボットが使っているこのラズパイ用のケースの3Dモデルは、3Dモデル共有サイトで公開しています。

www.thingiverse.com


原因

Picoに何も書き込まれていないか、USBシリアルポートを使わないプログラムがArduinoIDE以外で書き込まれた場合は、USBシリアルが機能しないため、Arduino IDEから書き込めなくなっていました。今回の場合は、Raspberry Pi 財団の標準開発環境から書き込んだために発生していました。

おわりに
中野島ロボットの場合は、毎回Windowsで復旧させていました。ラズパイOSもBullsyse になって、Arduino IDEが普通にインストールできるようになっているので、これでRaspberry Pi Pico の開発環境もWindowsからラズパイに引っ越しできます。
やっぱりラズパイは甘くないですね。

おしまい

 

代替案 マイクロパイソンを一旦書き込む

1. おなじないをかける

pi@raspberrypi:~ $ sudo  ~/.arduino15/packages/arduino/hardware/mbed_rp2040/2.7.2/post_install.sh
Reload rules...

2. マイクロパイソンを書き込む
 https://www.raspberrypi.com/documentation/microcontrollers/micropython.html
 の

 https://micropython.org/download/rp2-pico/rp2-pico-latest.uf2

 から

 rp2-pico-latest.uf2 をダウンロードする。これが MicroPython の本体。

 BOOT SEL を押しながらRPi4のUSBに刺すと、/media/pi/RPI-RP2 にマウントされる

 そこにダウンロードした rp2-pico-latest.uf2 をコピーする
 .uf2ファイルをコピーすると、自動で書き込んで、Pico が再起動する。

3. Arduino IDEでシリアルが /dev/ttyACM0 として認識されるはずです。

4. BOOTSELを押しながらUSBに刺すと認識する。
 /dev/ttyACM0(Raspberry Pi Pico)と認識できるようになる。

5. Blinkを書き込む

(!)これだったら、マイクロ Python 使った方がいいですね。いやでもArduino IDEが使いたいんです。


参考情報

https://beta-notes.way-nifty.com/blog/2021/04/post-700a49.html

https://lipoyang.hatenablog.com/entry/2021/11/27/202142

 

購入品情報
ラズパイPicoの魅力は、デュアルコアの強力なプロセッサですが、チップにバグが多数あるので、その機能に当たるとなかなか厄介です。でもArduino IDEが使えるとなるとだいぶ楽になります。