Seeed XIAO RP2040

こんにちは、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の強力な処理能力を発揮し、また、低消費電力で動作するという扱いやすいマイコンモジュールとなっています。

f:id:mnakai:20211007091550p:plain

www.seeedstudio.com

Seeed XIAO RP2040のスペック

CPUDual Arm Cortex-M0+ 133MHz
RAM264kB (64kB x 4, 4kB x 2)
ROMQSPI Flash memory 2MB
(Internal Boot ROM 16kB)
I / O11pins (Digital, Analog, PWM, I2C, UART, SPI, etc.)
LEDRGB, Power, User, TX, RX
ButtonReset, Boot
Dimension20.0 x 17.5 x 3.5 mm
Programing LanguageArduino, Micro Python, Circuit Python

f:id:mnakai:20211007091356p:plain

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

f:id:mnakai:20211007093140p:plain

Seeeduino XIAOの拡張ボードに対応

XIAOシリーズということでSeeeduino XIAOと同形状・ピン互換となっているため、拡張ボードなどはSeeeduino XIAOと同様に利用することができます。

www.seeedstudio.com

www.seeedstudio.com

Micro Pythonでプログラミング

ここからはMicro Pythonを使って実際に動作させるところまでをやってみました。 Wikiに情報がまとまっているので参考にしています。

wiki.seeedstudio.com

ファームウェアをアップデート

XIAO RP2040をMicro Python化するにはMicro Python用のファームウェアにアップデートする必要があります。 ファームウェアはRaspberry Pi Picoのものを使えるようなので、ダウンロードして利用します。

下記のようにMicro Pythonのダウンローページから取得するか、直接最新版のUF2ファイルをダウンロードできます。

f:id:mnakai:20211014095625j:plain

続いてXIAO RP2040をブートローダーモードで起動させてダウンロードしたUF2ファイルでアップロードします。

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

f:id:mnakai:20211014100319p:plain

ファームウェアがアップデートされた場合は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のシリアルポート

f:id:mnakai:20211014104545p:plain

f:id:mnakai:20211014104755p:plain

f:id:mnakai:20211014103714j:plain

定番のLチカ

動作確認の準備ができたのでまずはLチカ。折角なのでREPLを使ってみました。

USER LEDはピン番号が25のようなので、これを出力に設定してHigh/Lowをトグルしてあげます。

f:id:mnakai:20211014111921p:plain

f:id:mnakai:20211014112535p:plain

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.pyimportしてあげるでも良いようです。

import led

f:id:mnakai:20211014115426p:plain

自動起動させた場合は、STOPボタンで停止することができます。

停止できなくなった場合の復旧方法

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

f:id:mnakai:20211015090217p:plain

  • ブートローダーモードで起動して、flash_nuke.uf2を書き込む
  • 再度ブートローダーモードにしMicro Python用のファームウェアを書き込む

これで復旧します。(3度ほど復旧させたのでなれたものです)

拡張ボードを使ってHello World

最後にExpansion Boardを使ってLCDにHello Worldを表示させてみました。スクリプトはWikiに記載のものでOKでした。

f:id:mnakai:20211015112017p:plain

特にはまったというわけではないのですが、ファイル転送について補足しておきます。

Wikiには「ssd1306.pyをダウンロードしてXIAO RP2040に保存する」ようにと書かれていて、どうやってやるのかわからなかったのではじめは新規ファイルを作成してスクリプトをコピペ、XIAO RP2040に保存していました。このやり方でももちろん問題はないのですが、よくよく調べてみるとThonnyにはファイル転送機能がありました。。

Thonnyのメニュー表示 > ファイルでエクスプローラーを表示させ、ダウンロードしたモジュールを右クリック、Upload to /で簡単にファイルを転送することができます。

f:id:mnakai:20211015111205p:plain

変更履歴

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