Skip to main content

Seeed Studio XIAO RP2350(MicroPython) の始め方

note

この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

Seeed Studio XIAO RP2350


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

特徴

  • 強力な MCU ボード: 対称デュアル Arm Cortex-M33 @ 150MHz と FPU を備えた 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, 1 RGB LED1 ユーザー LED, 1 充電 LED(バッテリー充電インジケーター), 1 RGB LED
インターフェース11 ピン: 4x アナログ, 11x デジタル, 1x I²C, 1x UART, 1x SPI, 全て PWM19 ピン: 3x アナログ, 19x デジタル, 2x I²C, 2x UART, 2x SPI, 全て PWM
ボタン1 リセットボタン, 1 BOOT ボタン
セキュリティ - 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 前面ピン配置
XIAO RP2350 背面ピン配置
XIAO RP2350 背面ピン配置
XIAO RP2350 コンポーネント
XIAO RP2350 コンポーネント

ピン配置の詳細が必要ですか?以下の Assets and Resources をご覧ください。

対応プラットフォーム

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

C/C++ SDKMicroPython
c-cpp ロゴMicroPython

はじめに▶️

注意

このページは主に MicroPython ユーザー向けです。SDKプログラミングを学びたい方や上級ユーザー向けには、Raspberry Pi Picoシリーズ C/C++ SDKをお勧めします。このガイドでは環境のセットアップ方法とサンプルコードの使用方法を説明します。また、XIAO RP2350に関連する具体的な指示については、XIAO RP2350 with C/C++ SDKをご覧ください。

MicroPython ファームウェアの問題

2024年11月10日現在、MicroPython.org for RPI_PICO2でダウンロード可能な安定版 MicroPython ファームウェア 1.24.0 は、フラッシュチップの違いにより一部のデバイスと互換性がありません

Seeed Teamは公式の MicroPython メンテナーと協力してこの問題の解決に取り組んでいます。その間、暫定的な解決策として プレビュー版ファームウェア を使用することができます:RP2350 MicroPython Firmware Preview

ステップ 1: XIAO RP2350 に MicroPython をインストールする

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

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

  • MicroPython Downloads ページに移動します。
  • XIAO RP2350 に対応する最新の .uf2 ファームウェアファイルをダウンロードします。

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

XIAO RP2350 を BOOTSEL モードにするには、以下の2つの方法のいずれかを使用します:

  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 を使用することをお勧めします。Thonny は使いやすさ、統合機能、初心者向けのインターフェースを備えており、デバイス上で直接 Python コードを書く楽しさを提供します。

Thonny IDE は MicroPython 開発に最適な初心者向けの Python エディタです。以下の手順でインストールしてください:

  1. Thonny をダウンロードする:

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

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

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

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

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

点滅させてみよう!✨

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

note

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

from machine import Pin # machine モジュールから Pin クラスをインポート
from time import sleep # time モジュールから sleep 関数をインポート

# GPIO25 を出力ピンとして初期化し、USER LED を制御
led = Pin(25, Pin.OUT)

# 初期状態で LED を消灯
led.value(1) # led.on() -> high level -> 消灯
sleep(0.5) # 0.5 秒待機

# LED を点灯
led.value(0) # led.off() -> low level -> 点灯
sleep(0.5) # 0.5 秒待機

# 無限ループに入る
while True:
# LED の状態を切り替え(点灯から消灯、またはその逆)
led.toggle()
# 現在の LED 状態を出力
print(f"LED {'ON' if led.value() == 0 else 'OFF'}")
sleep(0.5) # 次の切り替えまで 0.5 秒待機

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

RGB LED を操作する

XIAO RP2350 には組み込みの RGB LED があり、MicroPython を使用して制御できます。以下は、さまざまな色を循環させる例です:

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

# グローバル輝度変数 (0.0 から 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()

# 電源ピンを設定
power_pin = Pin(POWER_PIN, Pin.OUT)
power_pin.value(1) # LED の電源をオンにする

# ws2812 プログラムを使用して StateMachine を作成し、LED_PIN に出力
sm = rp2.StateMachine(0, ws2812, freq=8_000_000, sideset_base=Pin(LED_PIN))

# StateMachine を開始し、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("ランダムな色の遷移を調整可能な輝度で開始します...")

# メインループ
current_color = random_color()
while True:
next_color = random_color()
for i in range(100): # スムーズな遷移のための 100 ステップ
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) # 遷移速度を変更するにはこの値を調整
current_color = next_color

# デモ目的で輝度を変更する場合
# BRIGHTNESS = random.random() # 各サイクルでランダムな輝度を設定

バッテリーと電源管理

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

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

以下のコードスニペットに従って、Pico SDK を使用してバッテリー電圧を読み取ります:

from machine import Pin, ADC
import time

# バッテリー電圧読み取りを有効にするための GPIO ピンを初期化する関数
def init_gpio():
enable_pin = Pin(19, Pin.OUT)
enable_pin.value(1) # ピンを高レベルに設定してバッテリー電圧読み取りを有効化

def main():
print("ADC バッテリー例 - GPIO29 (A3)")

init_gpio() # 有効化ピンを初期化
adc = ADC(Pin(29)) # GPIO29 上の ADC を初期化

conversion_factor = 3.3 / (65535) # 12 ビット ADC と 3.3V リファレンスの変換係数

while True:
result = adc.read_u16() # ADC 値を読み取る
voltage = result * conversion_factor * 2 # 電圧を計算(電圧分圧を考慮して係数 2 を適用)
print("Raw value: 0x{:03x}, voltage: {:.2f} V".format(result, voltage))
time.sleep(0.5) # 500 ミリ秒の遅延

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リポジトリを探索し、集中化されたドキュメントやチームとの交流を楽しみましょう。ぜひ参加してください!
  • r/embedded on Reddit: 組み込みシステムのコミュニティに参加し、洞察を共有し、さまざまなトピックを議論。
  • Pico トピック on GitHub: Picoに関連するリポジトリや議論を探索。
  • Hackster.io: XIAOやRaspberry Piに関連するプロジェクトやチュートリアルを発見。
  • Instructables: XIAOやその他のハードウェアを使ったDIYプロジェクトやステップバイステップガイドを見つける。
  • Element14 コミュニティ: 電子工学や組み込みシステムに関連するディスカッション、ウェビナー、プロジェクトに参加。

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

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

私たちの製品をお選びいただきありがとうございます!製品の使用体験ができるだけスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルを用意しています。

Loading Comments...