中野島ロボット

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

週刊中ロボ220 ちいさいロボットをXIAO RP2040で動かすには

はじめに
「ちいさいロボット2号」をSeeeduino XIAO RP2040で動かせるか確認を行いました。結論から言うと、そのままのスケッチでは動かないのですが、SG90サーボモーターとI2Cのピンアサインを変えると動かせました。

環境
PC Raspberry PI-400
OS Raspberry Pi OS(64-bit)  Bullseye
IDE Arduino IDE 1.8.13
ボード Seeed Studio XIAO RP2040 
ボードマネージャ Seeed XIAO RP2040 バージョン 2.7.2

なおXIAO RP2040をArduino IDEで動かすまでの設定の本家のページはこちらから

wiki.seeedstudio.com


確認
XIAO RP2040のピン配置を公開されている回路図で確認しました。
ちなみに回路図は2つのバージョンがあり、違いはRGB1のところくらいなので最新版のv1.22を見て確認しました。

XIAO RP2040 NAME
ーーーーーーーーーーーーーーーーーーーー−−−
D0 GPIO26 A0
D1 GPIO27 A1
D2 GPIO28 A2
D3 GPIO29 A3
D4 GPIO6 SDA
D5 GPIO7 SCL
D6 GPIO0 TX
D7 GPIO1 RX
D8 GPIO2 SCK SG90_1
D9 GPIO4 MISO SG90_2
D10 GPIO3 MOSI

なるほどね。

1.サーボモータが片方しか動かない
まずはサーボモーターが片方しか動かない問題について確認してみます。
良く見たらD9,D10とGPIO4、3の関係が入れ子になっている。
・・・・ポカミス?
なので、D10にサーボをつなぎ直すか、ピンアサインを変更すれば、サーボモータが動かせるようになりました。

2.I2Cのセンサが繋がらない
でもまだ駄目だ、であれば、I2Cしかない。
ラズパイPicoのI2Cは
 SDA GP4
 SCL GP5
対する XIAO PI のI2Cは
 SDA GPIO6
 SCL GPIO7

・・・・1ピン違いじゃないですか?合わせておいてくださいよ〜

I2Cのピンアサインを変えるのはちょっと面倒くさい。しょうがないので動いていないXIAO RP2040のボードライブラリを使うことにします。
XIAO RP2040のボードライブラリを、Arduino IDE に入れてコンパイルするとエラーがでます。XIAO PIの必要なディレクトリがないらしい。どうやらフォルダ名の小文字がいけないらしいので、

/home/pi/.arduino15/packages/Seeeduino/hardware/rp2040/2.7.2/variants/Seeed_XIAO_RP2040

をコピーして名前を Seeed_XIAO_RP2040 から SEEED_XIAO_RP2040 に変えます。

/home/pi/.arduino15/packages/Seeeduino/hardware/rp2040/2.7.2/variants/SEEED_XIAO_RP2040

コンパイル時に以下の警告は出ますが、

警告:ライブラリServoはアーキテクチャ(avr, megaavr, sam, samd, nrf52, stm32f4, mbed, mbed_nano, mbed_portenta, mbed_rp2040)に対応したものであり、アーキテクチャ(rp2040)で動作するこのボードとは互換性がないかもしれません。

ちゃんとI2Cが使えるようになります。
おわりに
ボードマネージャでXIAO RP2040のバージョンを下げろとか、本家のページのガセねたのせいでちょっと時間がかかりましたが、とりあえず、ラズパイからはXIAO PIが使えるようになりました。これで「ちいさいロボット」がXIAO RP2040で使うことができるようになりました。
でもWindowsからはまだ、使えない。。。 これままたの機会に
おしまい

購入品情報
Seeed Studio XIAO RP2040 ボードは小さいうえにパワフルです。RP2040のCPUバグの影響か一時的に入手できませんでした。CPUバグの回避方法が判ったので、販売が再開されたようです。でもAmazonではまだ少し高いですね。

なを購入の経緯は過去記事に書いてあります。

www.nakarobo.com