Skip to main content

Seeed Studio XIAO RP2350 入門ガイド(MicroPython)

Seeed Studio XIAO RP2350


XIAO RP2350は、Raspberry Pi RP2350(150MHzで動作するFPU付きデュアルCortex-M33コア、強化されたセキュリティと暗号化機能)の力を、クラシックなXIAOフォームファクターに詰め込んでいます。わずか21x17.8mmのサイズで、19個の多機能GPIO、RGB LED、そして50μAの超低消費電力、バッテリー電源供給、直接バッテリー電圧測定機能を備えたバッテリー管理システムを特徴としています。XIAOエコシステムのおかげで、XIAO RP2350は、ディスプレイ、LEDマトリックス、Groveモジュール、CAN Bus、Vision AIセンサー、mmWaveセンサーなど、幅広いアドオンと互換性があります。MicroPython、C、C++のネイティブサポートにより、XIAO RP2350は、スマート制御、ウェアラブル、DIYキーボードなどのコンパクトでバッテリー駆動のアプリケーションを作成したいあらゆるレベルの開発者に最適です。

特徴

  • 強力なMCUボード: FPU付きの対称デュアルArm Cortex-M33 @ 150MHzを搭載したRaspberry Pi RP2350チップを装備。
  • 強化されたセキュリティ機能: 内蔵のセキュアブートと暗号化ブートローダーがアプリケーションのセキュリティを確保。
  • ソフトウェアサポート: C/C++とMicroPythonに対応し、簡単なプロジェクト開発とプロトタイピングを実現。
  • 豊富なオンボードリソース: RGB LED、2MBフラッシュ、520kB SRAM、19個の多機能GPIO(アナログ、デジタル、I²C、UART、SPI、PWM)を統合。
  • 拡張された8つの新しいIO: 従来のXIAO MCUと比較して、背面に8つのIOピンを追加し、より複雑なアプリケーションをサポート。
  • 効率的な電源設計: スリープモードでわずか50μAの超低消費電力により、バッテリー電源供給を可能にします。内部IOを介した直接バッテリー電圧測定により、バッテリー管理システム(BMS)を強化。
  • コンパクトな親指サイズ設計: 21 x 17.8mmのサイズで、Seeed StudioのクラシックなXIAOフォームファクターを採用し、スペースを重視するアプリケーションに最適。
  • 量産対応: 表面実装デバイス(SMD)設計で、すべてのコンポーネントが前面にあり、両側にスタンプホールがあり、効率的な大量生産を促進。

仕様

製品XIAO RP2040XIAO RP2350
プロセッサRaspberry Pi RP2040Raspberry Pi RP2350
デュアルCortex-M0+ @ 133MHzデュアルCortex-M33 @ 150MHz、FPU
RAM264kB SRAM520kB SRAM
フラッシュ2MBオンボード2MBフラッシュ
LED1ユーザーLED(3色)、1電源LED、1RGB LED1ユーザーLED、1充電LED(バッテリー充電インジケーター)、1RGB LED
インターフェース11ピン:4xアナログ、11xデジタル、1x I²C、1x UART、1x SPI、全PWM19ピン:3xアナログ、19xデジタル、2x I²C、2x UART、2x SPI、全PWM
ボタン1リセットボタン、1ブートボタン
セキュリティ - OTP、セキュアブート、Arm TrustZone
低消費電力 - 4.2V/50uA
ソフトウェア互換性Arduino、PlatformIO、MicroPython、CircuitPython、Zephyr、その他多数Arduino、PlatformIO、MicroPython、CircuitPython、その他多数
動作温度-20°C~70°C
寸法21x17.8 mm

ハードウェア概要

XIAO RP2350 前面ピン配置
XIAO RP2350 Front Pinout
XIAO RP2350 背面ピン配置
XIAO RP2350 Back Pinout
XIAO RP2350 コンポーネント
XIAO RP2350 Components

ピン配置の詳細が必要ですか?下記のアセットとリソースをご覧ください。

ピンマップ

XIAOピン機能チップピン代替機能説明
5VVBUS電源入力/出力
GND
3V33V3_OUT電源出力
D0アナログGPIO26GPIO、ADC
D1アナログGPIO27GPIO、ADC
D2アナログGPIO28GPIO、ADC
D3SPIO_CSnGPIO5GPIO、SPI
D4SDA1GPIO6GPIO、I2Cデータ
D5SCL1GPIO7GPIO、I2Cクロック
D6TX0GPIO0GPIO、UART送信
D7RX0GPIO1GPIO、UART受信
D8SPIO_SCKGPIO2GPIO、SPIクロック
D9SPIO_MISOGPIO4GPIO、SPIデータ
D10SPIO_MOSIGPIO3GPIO、SPIデータ
D11RX1GPIO21GPIO、UART受信
D12TX1GPIO20GPIO、UART送信
D13SCL0GPIO17GPIO、I2Cクロック
D14SDA0GPIO16GPIO、I2Cデータ
D15SPI1_MOSIGPIO11GPIO、SPIデータ
D16SPI1_MISOGPIO12GPIO、SPIデータ
D17SPI1_SCKGPIO10GPIO、SPIクロック
D18SPI1_CsnGPIO9Csn
ADC_BATGPIO29BAT電圧値を読み取り
ResetRUNRUN
BootRP2040_BOOTブートモードに入る
CHARGE_LEDNCHGCHG-LED_赤
RGB LEDGPIO22RGB LED
USER_LEDGPIO25ユーザーライト_黄

サポートプラットフォーム

RP2350を搭載したXIAO RP2350は、MicroPythonとRaspberry Piが提供するC/C++ SDKをサポートしています。この柔軟性により、開発者はプロトタイピングと開発において好みのプログラミング言語と環境を選択できます。

C/C++ SDKMicroPython
c-cpp logoMicroPython

入門ガイド▶️

attention

このページは主にMicroPythonユーザーに焦点を当てています。SDKプログラミングの学習に興味がある方や上級ユーザーの方は、Raspberry Pi Pico-series C/C++ SDKから始めることをお勧めします。このガイドは環境のセットアップとサンプルコードの開始に役立ちます。さらに、XIAO RP2350に関するより具体的な手順については、XIAO RP2350 with C/C++ SDKをご覧ください。

ステップ 1: XIAO RP2350 への MicroPython のインストール

XIAO RP2350 に MicroPython ファームウェアをインストールするには、以下の手順に従ってください:

ステップ 1.1. MicroPython ファームウェアのダウンロード:

  • MicroPython Downloads ページに移動します。
  • XIAO RP2350 と互換性のある最新の .uf2 ファームウェアファイルをダウンロードします。
tip
  1. デフォルトのファームウェアは ARM アーキテクチャ用です。RISC-V を使用したい場合は、リンク内の対応するファームウェアバージョンを使用してください。

  2. 古いファームウェアには様々なソフトウェアの脆弱性が含まれている可能性があるため、最新のファームウェアバージョンを使用していることを確認してください。

ステップ 1.2 BOOTSEL モードに入る:

以下の 2 つの方法のいずれかを使用して、XIAO RP2350 を BOOTSEL モードに入れることができます:

  1. BOOT ボタンを押し続ける
    XIAO RP2350 がコンピュータから切断されている状態で、BOOT ボタンを押し続けます
  2. コンピュータに接続する
    BOOT ボタンを押し続けながら、USB ケーブルを使用して XIAO RP2350 をコンピュータに接続します。
  3. BOOT ボタンを離す
    ボードがコンピュータに接続された後、BOOT ボタンを離すことができます。XIAO RP2350 は BOOTSEL モードになり、コンピュータはそれをリムーバブルストレージデバイスとして認識します。
Boot を押し続ける → ケーブルを接続 → Boot を離す

ステップ 1.3. ファームウェアのインストール:

  • ダウンロードした .uf2 ファイルを XIAO RP2350 のリムーバブルストレージドライブにドラッグアンドドロップします。
  • ファイルがコピーされた後、ボードは自動的に再起動し、ファームウェアのインストールが完了します。

ステップ 2: Thonny IDE のインストール

MicroPython について

MicroPythonPython に似たインタープリター言語です。ただし、Python とは異なり、MicroPython はハードウェア上で直接実行され(ベアメタル)、コマンドを即座に実行するためのインタラクティブプロンプト(REPL)と、内蔵ファイルシステムからスクリプトを実行およびインポートする機能を提供します。

XIAO RP2350 ボードに接続して Python コードの記述と実行を開始するには、minicom、PuTTY、electerm、warp などのシリアル接続をサポートする任意のターミナルツールを使用できます。よりユーザーフレンドリーな体験のために、使いやすさ、統合機能、初心者向けのインターフェースを備えた Thonny を使用できます。これにより、デバイス上で直接 Python コードを記述して実行することを楽しむことができます。

Thonny IDE は MicroPython 開発に優れた初心者向けの Python エディタです。インストール方法は以下の通りです:

  1. Thonny のダウンロード:

    • Thonny Download Page にアクセスします。
    • お使いのオペレーティングシステム(Windows、macOS、または Linux)に適したインストーラーを選択してダウンロードします。
  2. Thonny のインストール:

    • ダウンロードしたインストーラーを実行します。
    • 画面の指示に従ってインストールプロセスを完了します。
  3. MicroPython 用の Thonny の設定:

    • Thonny IDE を開きます
    • Thonny ウィンドウの右下角を確認します。
    • インタープリター選択エリアをクリックします。
    • ドロップダウンから 'MicroPython (RP2040)' を選択します。
    • 正しいポートが選択されていることを確認します—Thonny は通常自動検出します。

これで Thonny IDE を使用して XIAO RP2350 に MicroPython コードを記述してアップロードする準備が整いました!

デバイスが MicroPython で準備できたら、簡単なプロジェクトから始めましょう:

LED を点滅させてみよう! ✨

ボードで LED を点滅させることは、多くの人が最初に実行するプログラムです。XIAO RP2350 でも同様です。

note

XIAO RP2350 の黄色い LED である USER LED は、回路図によると GPIO25/D19 に接続されています。 すべての XIAO ファミリーボードでは、USER LEDlow level に設定すると点灯し、high level に設定すると消灯します。

from machine import Pin # Import the Pin class from the machine module
from time import sleep # Import the sleep function from the time module

# Initialize GPIO25 as an output pin, which controls the USER LED
led = Pin(25, Pin.OUT)

# Turn off the LED initially
led.value(1) # led.on() -> high level -> light off
sleep(0.5) # Wait for 0.5 seconds

# Turn on the LED
led.value(0) # led.off() -> low level -> light on
sleep(0.5) # Wait for 0.5 seconds

# Enter an infinite loop
while True:
# Toggle the LED state (on to off or off to on)
led.toggle()
# Print the current state of the LED
print(f"LED {'ON' if led.value() == 0 else 'OFF'}")
sleep(0.5) # Wait for 0.5 seconds before the next toggle

下の画像に示すように、コードを Thonny IDE にコピーしたら、Run current script ボタンをクリックするか F5 を押すだけです。これによりコードスニペットが実行され、XIAO RP2350 の LED が点滅し始めるのを確認できます。

RGB LED で遊ぶ

XIAO RP2350 には、MicroPython を使用して制御できる内蔵 RGB LED が付属しています。以下は異なる色を循環させる例です:

import array, time, random
from machine import Pin
import rp2

NUM_LEDS = 1
LED_PIN = 22 # PICO_DEFAULT_WS2812_PIN
POWER_PIN = 23 # PICO_DEFAULT_WS2812_POWER_PIN

# Global brightness variable (0.0 to 1.0)
BRIGHTNESS = 0.1

@rp2.asm_pio(sideset_init=rp2.PIO.OUT_LOW, out_shiftdir=rp2.PIO.SHIFT_LEFT, autopull=True, pull_thresh=24)
def ws2812():
T1 = 2
T2 = 5
T3 = 3
wrap_target()
label("bitloop")
out(x, 1) .side(0) [T3 - 1]
jmp(not_x, "do_zero") .side(1) [T1 - 1]
jmp("bitloop") .side(1) [T2 - 1]
label("do_zero")
nop() .side(0) [T2 - 1]
wrap()

# Set up the power pin
power_pin = Pin(POWER_PIN, Pin.OUT)
power_pin.value(1) # Turn on power to the LED

# Create the StateMachine with the ws2812 program, outputting on LED_PIN
sm = rp2.StateMachine(0, ws2812, freq=8_000_000, sideset_base=Pin(LED_PIN))

# Start the StateMachine, it will wait for data on its FIFO.
sm.active(1)

def set_led_color(color):
sm.put(array.array("I", [color]), 8)

def random_color():
return random.randint(0, 255) | (random.randint(0, 255) << 8) | (random.randint(0, 255) << 16)

def interpolate(color1, color2, factor):
r1, g1, b1 = color1 & 255, (color1 >> 8) & 255, (color1 >> 16) & 255
r2, g2, b2 = color2 & 255, (color2 >> 8) & 255, (color2 >> 16) & 255
r = int(r1 + factor * (r2 - r1))
g = int(g1 + factor * (g2 - g1))
b = int(b1 + factor * (b2 - b1))
return (b << 16) | (g << 8) | r

def apply_brightness(color, brightness):
r, g, b = color & 255, (color >> 8) & 255, (color >> 16) & 255
r = int(r * brightness)
g = int(g * brightness)
b = int(b * brightness)
return (b << 16) | (g << 8) | r

print("Starting random color transitions with adjustable brightness...")

# Main loop
current_color = random_color()
while True:
next_color = random_color()
for i in range(100): # 100 steps for smooth transition
transition_color = interpolate(current_color, next_color, i / 100)
final_color = apply_brightness(transition_color, BRIGHTNESS)
set_led_color(final_color)
time.sleep_ms(20) # Adjust this value to change transition speed
current_color = next_color

# Optionally, you can change the brightness here for demo purposes
# BRIGHTNESS = random.random() # This will set a random brightness each cycle

バッテリーと電源管理

追加のコンポーネントなしでバッテリー電圧を読み取ることは可能でしょうか?はい、XIAO RP2350では、これまで以上に簡単になりました。XIAO ESP32C3などの以前のXIAOファミリーメンバーでは、バッテリー電圧を読み取るには抵抗を使って手動でA0に接続する必要がありました。

しかし、XIAO RP2350では、このプロセスが簡素化されています。A3/GPIO29ピンを直接使用してバッテリー電圧レベルを読み取ることができるようになり、設計と開発が合理化されます。バッテリーレベルの読み取りを有効にするために必要なGPIO19ピンをハイに設定することを忘れないでください。

Pico SDKを使用してバッテリー電圧を読み取るこのコードスニペットに従ってください:

from machine import Pin, ADC
import time

# Function to initialize the GPIO pin for enabling battery voltage reading
def init_gpio():
enable_pin = Pin(19, Pin.OUT)
enable_pin.value(1) # Set the pin to high to enable battery voltage reading

def main():
print("ADC Battery Example - GPIO29 (A3)")

init_gpio() # Initialize the enable pin
adc = ADC(Pin(29)) # Initialize the ADC on GPIO29

conversion_factor = 3.3 / (65535) # Conversion factor for 12-bit ADC and 3.3V reference

while True:
result = adc.read_u16() # Read the ADC value
voltage = result * conversion_factor * 2 # Calculate the voltage, considering the voltage divider (factor of 2)
print("Raw value: 0x{:03x}, voltage: {:.2f} V".format(result, voltage))
time.sleep(0.5) # Delay for 500 milliseconds

if __name__ == '__main__':
main()

アセットとリソース

XIAO RP2350は、Raspberry Pi RP2350の力を活用し、Raspberry Piコミュニティからの豊富な共有リソースを活用しています。これにより、この小さなボードで無限の創造性を持ってプロジェクトをカスタマイズする可能性の世界が開かれます。以下は、開始に役立つ重要なリソースとアセットです。

データシートと回路図

関連リソース

拡張とアプリケーション

XIAO シリーズには、学習と使用のための膨大な範囲の周辺機器と周辺アクセサリがあります。完璧なインタラクションを可能にするカラフルなスクリーン、明るくシンプルなRGBライトを備えた統合ボードなど、チェックアウトを待っているものがあります。

XIAOファミリーのメンバーとして、XIAO RP2350も同様です。もちろん、引き出された追加のピンをより有効活用するために、新しい周辺機器とボードが続々と登場し、作成された性能を最大限に活用します。

  • 🌟 アクセサリで拡張
    ディスプレイやLEDマトリックスからGroveモジュールやセンサーまで、XIAOファミリーと互換性のある幅広いアドオンとモジュールを発見し、それらがプロジェクトをどのように強化できるかを学びます。

コミュニティと学習

さらに、活気あるRaspberry Piコミュニティに飛び込んで知識を広げ、新しいプロジェクトアイデアを発見してください。コミュニティ共有のリソース、フォーラム、チュートリアルを活用して、XIAO RP2350での体験を向上させましょう。Seeed Studio Wikiに加えて、学習におすすめの他の場所をいくつか紹介します:

  • Raspberry Pi ドキュメント:RP2350に関する信頼性の高い最新情報を入手できます。
  • Raspberry Pi フォーラム:他の愛好家と交流し、質問をし、プロジェクトを共有しましょう。
  • XIAO GitHub リポジトリ:より集中化されたドキュメントと私たちのチームとのより多くのインタラクションのために、公式XIAOリポジトリを探索してください。参加してください!
  • Reddit の r/embedded:組み込みシステムコミュニティに参加し、洞察を共有し、さまざまなトピックについて議論しましょう。
  • GitHub の Pico トピック:Picoに関連するリポジトリと議論を探索しましょう。
  • Hackster.io:XIAOやRaspberry Piを含むさまざまなハードウェアプラットフォームに関連するプロジェクトとチュートリアルを発見しましょう。
  • Instructables:XIAOや他のハードウェアでの作成のためのDIYプロジェクトとステップバイステップガイドを見つけましょう。
  • Element14 コミュニティ:電子工学と組み込みシステムに関連する議論、ウェビナー、プロジェクトに参加しましょう。

さらに、私たちのSeeed Studio DiscordSeeed Studio フォーラムでプロジェクトを共有することをいつでも歓迎します。これらのプラットフォームは、他のメーカーとつながり、フィードバックを得て、インスピレーションを見つける絶好の機会を提供します。問題のトラブルシューティングでヘルプが必要な場合、最新の作品を披露したい場合、または単にサポートコミュニティの一員になりたい場合、Seeed StudioのDiscordとフォーラムは関わり合い、協力するのに最適な場所です。

技術サポートと製品ディスカッション

私たちの製品をお選びいただき、ありがとうございます!私たちは、お客様の製品体験が可能な限りスムーズになるよう、さまざまなサポートを提供しています。さまざまな好みやニーズに対応するため、複数のコミュニケーションチャネルを提供しています。

Loading Comments...