こんにちは、Seeed K.K.の中井です。
今回は、Seeeduino XIAOに新しいラインアップが追加されたのでご紹介したいと思います。また、サンプルを入手できたので早速Micro Pythonで使ってみました。
親指サイズのArduino互換機である「Seeeduino XIAO」、 小型ながらもUSBで通信できてI/Oを11本も使えるということで様々な作品にご利用いただけている人気のデバイスです。 このSeeeduino XIAOに新たにRP2040を搭載したラインアップが追加されました。その名も「Seeed XIAO RP2040」です。
RP2040はご存じの方も多いと思いますが、Raspberry Pi財団が独自に開発した32bitマイコンでRaspberry Pi Picoで使われているものです。 これを搭載する「Seeed XIAO RP2040」は、Seeeduino XIAOと同様の形状ながらもRP2040の強力な処理能力を発揮し、また、低消費電力で動作するという扱いやすいマイコンモジュールとなっています。

Seeed XIAO RP2040のスペック
| CPU | Dual Arm Cortex-M0+ 133MHz |
| RAM | 264kB (64kB x 4, 4kB x 2) |
| ROM | QSPI Flash memory 2MB (Internal Boot ROM 16kB) |
| I / O | 11pins (Digital, Analog, PWM, I2C, UART, SPI, etc.) |
| LED | RGB, Power, User, TX, RX |
| Button | Reset, Boot |
| Dimension | 20.0 x 17.5 x 3.5 mm |
| Programing Language | Arduino, Micro Python, Circuit Python |

Seeeduino XIAOと比較すると、、アナログ入力ピンが半減してDACもなくなっていますが、処理能力とFlashメモリの容量が劇的にパワーアップ! I/Oピン次第ではありますが、I/Oが十分であれば迷わずXIAO RP2040を選択したいところです。

Seeeduino XIAOの拡張ボードに対応
XIAOシリーズということでSeeeduino XIAOと同形状・ピン互換となっているため、拡張ボードなどはSeeeduino XIAOと同様に利用することができます。
Micro Pythonでプログラミング
ここからはMicro Pythonを使って実際に動作させるところまでをやってみました。 Wikiに情報がまとまっているので参考にしています。
ファームウェアをアップデート
XIAO RP2040をMicro Python化するにはMicro Python用のファームウェアにアップデートする必要があります。 ファームウェアはRaspberry Pi Picoのものを使えるようなので、ダウンロードして利用します。
下記のようにMicro Pythonのダウンローページから取得するか、直接最新版のUF2ファイルをダウンロードできます。

続いてXIAO RP2040をブートローダーモードで起動させてダウンロードしたUF2ファイルでアップロードします。
XIAO RP2040と作業用のPCをUSBケーブルで接続して、BOOTボタンを押しながらRESETボタンを押します。 すると、USBメモリのようにドライブに認識されるので、UF2ファイルをドラッグアンドドロップしてあげます。

ファームウェアがアップデートされた場合はUSBシリアルデバイスとして認識されるので、TeraTermなどで接続してCtrl + Dを入力すると次のようにREPLが立ち上がることを確認できました。
MPY: soft reboot MicroPython v1.17 on 2021-09-02; Raspberry Pi Pico with RP2040 Type "help()" for more information. >>>
開発環境「Thonny」の準備
Wikiに倣ってThonnyをインストールしました。シリアル接続でXIAO RP2040と通信可能なIDEであれば何でもよさそうです。
Thonnyを起動させてXIAO RP2040と通信できるようにツール > Optionsを開き、インタプリタタブに移動して、下記のように設定します。
- デバイス:MicroPython (Raspberry Pi Pico)
- Port:XIAO RP2040のシリアルポート



定番のLチカ
動作確認の準備ができたのでまずはLチカ。折角なのでREPLを使ってみました。
USER LEDはピン番号が25のようなので、これを出力に設定してHigh/Lowをトグルしてあげます。


led.toggle()してあげると点灯 <--> 点滅することができました!(REPLはちょっとしたときに便利です)
これをスクリプトファイルとして保存し簡単に実行できるように、<untitled>となっているエディタの方に下記のように入力して実行。どこに保存するのか聞かれるのでRaspberry Pi Picoを選択しファイル名(led.py)を指定して保存。
from machine import Pin import utime led = Pin(25, Pin.OUT) while True: led.toggle() utime.sleep(1.0)
1秒おきにUSER LEDが点滅を繰り返すので意図通りです。
ただ、今の状態ではUSBケーブルを刺し直してリブートさせても自動的にスクリプトが動作するわけではないようです。
自動起動させる
XIAO RP2040が起動したときに自動的にスクリプトを走らせるためには、main.pyを用意してあげます。
main.pyの内容は、先ほどのled.pyと同じでも良いですし、led.pyをimportしてあげるでも良いようです。
import led

自動起動させた場合は、STOPボタンで停止することができます。
停止できなくなった場合の復旧方法
STOPボタンなどで停止できなくなった場合、例えばboot.pyを作成した場合や停止できない無限ループを作ってしまった場合などですが、他のスクリプトに書き換えるにはフラッシュメモリをクリアする必要があります。 そのようなときには、flash_nuke.uf2を書き込むと復旧することができます。flash_nuke.uf2はコチラのページから取得することができます。

- ブートローダーモードで起動して、flash_nuke.uf2を書き込む
- 再度ブートローダーモードにしMicro Python用のファームウェアを書き込む
これで復旧します。(3度ほど復旧させたのでなれたものです)
拡張ボードを使ってHello World
最後にExpansion Boardを使ってLCDにHello Worldを表示させてみました。スクリプトはWikiに記載のものでOKでした。

特にはまったというわけではないのですが、ファイル転送について補足しておきます。
Wikiには「ssd1306.pyをダウンロードしてXIAO RP2040に保存する」ようにと書かれていて、どうやってやるのかわからなかったのではじめは新規ファイルを作成してスクリプトをコピペ、XIAO RP2040に保存していました。このやり方でももちろん問題はないのですが、よくよく調べてみるとThonnyにはファイル転送機能がありました。。
Thonnyのメニュー表示 > ファイルでエクスプローラーを表示させ、ダウンロードしたモジュールを右クリック、Upload to /で簡単にファイルを転送することができます。

変更履歴
| 日付 | 変更者 | 変更内容 |
|---|---|---|
| 2021/10/15 | mnakai | 作成 |
| 2021/12/27 | mnakai | 公開 |