メインコンテンツまでスキップ

Seeed Studio XIAO SAMD21 入門ガイド

pir

以前は Seeeduino XIAO という名称だった Seeed Studio XIAO SAMD21 は、Seeed Studio XIAO ファミリ、Arduino と互換性のある強力な親指サイズの開発ボードシリーズの最初の製品です。低消費電力マイクロコントローラである強力な ATSAMD21G18A-MU を搭載しています。一方で、この小さなボードは処理性能に優れる一方で、必要とする電力は少なくなっています。非常に小型に設計されており、ウェアラブルデバイスや小規模なプロジェクトに使用できます。

Seeed Studio XIAO SAMD21 には 14 本のピンがあり、そのうち 11 本はデジタルインターフェース、11 本はアナログインターフェース、10 本は PWM インターフェース(d1〜d10)、1 本は DAC 出力ピン D0、1 つの SWD パッドインターフェース、1 つの I2C インターフェース、1 つの SPI インターフェース、1 つの UART インターフェース、シリアル通信インジケータ(T/R)、点滅用 LED(L)をピン多重化によって利用できます。LED(Power, L, RX, TX)の色は緑、黄、青、青です。さらに、Seeed Studio XIAO SAMD21 には Type-C インターフェースがあり、電源供給とコードの書き込みが可能です。リセットボタンは 2 つあり、それらを短絡させることでボードをリセットできます。

ドキュメント

Seeed Studio XIAO SAMD21 の使い方に関するドキュメントが 2 種類あり、それぞれ異なる分野に焦点を当てています。参考として以下の表を確認してください。

Seeed によるドキュメントNanase によるドキュメント
ピン配置図インターフェース
Seeed Studio XIAO SAMD21 入門ガイドSeeed Studio XIAO SAMD21 と MicroSD カード(SPI)
Seeed Studio XIAO SAMD21 GPIO の使い方Seeed Studio XIAO SAMD21 と GPS(UART)
Seeed Studio XIAO SAMD21 リソースシングルサイクル IOBUS

Seeed Studio XIAO SAMD21 上の CircuitPython

特長

  • 強力な CPU:ARM® Cortex®-M0+ 32bit 48MHz マイクロコントローラ(SAMD21G18)、256KB フラッシュ、32KB SRAM 搭載。
  • 柔軟な互換性:Arduino IDE と互換。
  • プロジェクトの操作が容易:ブレッドボードに対応。
  • 小型サイズ:親指ほどの大きさ(21x17.8mm)で、ウェアラブルデバイスや小規模プロジェクト向け。
  • 複数の開発インターフェース:11 本のデジタル/アナログピン、10 本の PWM ピン、1 つの DAC 出力、1 つの SWD ボンディングパッドインターフェース、1 つの I2C インターフェース、1 つの UART インターフェース、1 つの SPI インターフェース。

仕様

製品名Seeed Studio XIAO SAMD21
チップセットMicrochip SAMD21G18
プロセッサ最大 48 MHz で動作する ARM Cortex-M0+ プロセッサ
RAM32KB SRAM
フラッシュ256KB フラッシュ
インターフェースGPIO ピン x14
デジタルピン x11
アナログピン x11
DAC x1
I2C x1
UART x1
SPI x1
オンボードユーザー LED x1
電源 LED x1
シリアル通信ステータス LED(TX/RX インジケータ)x2
無線接続/
電源入力電圧(Type-C):5V
入力電圧(BAT):5V
最大出力5V@500mA
3.3V@200mA
ソフトウェア互換性Arduino, PlatformIO, MicroPython, CircuitPython, Zephyr
XIAO シリーズ展示 - Seeed Studio Wiki
動作温度-40 ~ 85°C
寸法21×17.8mm
バリエーションSeeed Studio XIAO SAMD21 (Pre-Soldered) - Seeed Studio
Seeed Studio XIAO SAMD21 - Arduino Microcontroller - SAMD21 Cortex M0+ (3 PCs) - Seeed Studio

ハードウェア概要

pir

pir

pir

pir

注意

汎用 I/O ピンについて: MCU の動作電圧は 3.3V です。汎用 I/O ピンに接続された入力電圧が 3.3V を超えると、チップが損傷する可能性があります。

電源ピンについて: 内蔵の DC-DC コンバータ回路は 5V 電圧を 3.3V に変換でき、VIN-PIN および 5V-PIN を介して 5V 電源でデバイスに給電することができます。

XIAO SAMD21 の背面にある VIN および GND パッドは、特に充電式リチウム電池(LiPo/Li-Ion)を直接接続するために設計されていないことを理解することが重要です。このボードには、安全な動作に必要なバッテリーマネジメント回路が搭載されていません。これらのパッドは、ボード内蔵の保護ダイオードをバイパスする代替の電源入力ポイントにすぎません。プロジェクトをバッテリーで駆動したい場合は、充電と保護機能を備えた専用の外部バッテリーマネジメントモジュールを使用し、そのモジュールの安定化出力を XIAO の 5V または 3V3 ピンに接続する必要があります。

使用時には十分注意し、シールドカバーを持ち上げないでください。

ピンマップ

XIAO ピン機能チップピン説明
5VVBUS電源入力/出力
GND
3V33V3_OUT電源出力
D0アナログPA02GPIO, ADC
D1アナログPA04GPIO, ADC
D2アナログPA10GPIO, ADC
D3アナログPA11GPIO, ADC
D4アナログ,SDAPA08GPIO, I2C データ, ADC
D5アナログ,SCLPA09GPIO, I2C クロック, ADC
D6アナログ,TXPB08GPIO, UART 送信, ADC
D7アナログ,RXPB09GPIO, UART 受信, ADC
D8アナログ,SPI_SCKPA07GPIO, SPI クロック, ADC
D9アナログ,SPI_MISOPA05GPIO, SPI データ, ADC
D10アナログ,SPI_MOSIPA06GPIO, SPI データ
ResetRESリセット
TX_LEDPA19TX_LED
RX_LEDPA18RX_LED
Power_LEDVBUSCHG-LED_赤
USER_LEDPA17ユーザーライト_黄

ブートローダーモードに入る

ユーザーのプログラミング処理が失敗したとき、Seeed Studio XIAO SAMD21 のポートが消えてしまう場合があります。次の操作によってこの問題を解決できます。

  • Seeed Studio XIAO SAMD21 をコンピュータに接続します。
  • ピン配置図の RST ピンを、ピンセットまたは短絡用の線で 2 回短絡させます。
  • オレンジ色の LED が点滅し、その後点灯します。

この時点で、チップはブートローダーモードに入り、書き込み用ポートが再び現れます。samd21 チップには 2 つのパーティションがあり、1 つはブートローダー、もう 1 つはユーザープログラムです。製品は出荷時にシステムメモリ内にブートローダーコードを書き込みます。上記の手順を実行することで、モードを切り替えることができます。

pir

リセット

Seeed Studio XIAO SAMD21 をリセットしたい場合は、次の手順を実行します。

  • Seeed Studio XIAO SAMD21 をコンピュータに接続します。
  • ピンセットまたは短絡用の線で、RST ピンを 1 回だけ 短絡させます。
  • オレンジ色の LED が点滅し、その後点灯します。

注意:内蔵 LED の動作は Arduino 上のものとは逆です。Seeed Studio XIAO SAMD21 では、ピンを Low にしなければなりませんが、他のマイクロコントローラでは High にする必要があります。  

割り込み

Seeed Studio XIAO SAMD21 上のすべてのピンは割り込みをサポートしますが、5 番ピンと 7 番ピンは同時には使用できません。割り込みの詳細についてはこちらを確認してください。

ピン多重化

ピンを自分で設定する必要はなく、ピンを使用した後は関数を直接呼び出すことができます。

デジタル入力と出力

  • ピン 6 をデジタルピンとして使用します。
const int buttonPin = 6;     // the number of the pushbutton pin
const int ledPin = 13; // the number of the LED pin

int buttonState = 0; // variable for reading the pushbutton status

void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
}

void loop() {
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);

// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
} else {
// turn LED off:
digitalWrite(ledPin, LOW);
}
}

AnalogRead

  • ピン 6 をアナログピンとして使用します:


void setup() {
// declare the ledPin as an OUTPUT:
pinMode(ledPin, OUTPUT);
}

void loop() {
// read the value from the sensor:
sensorValue = analogRead(sensorPin);
// turn the ledPin on
digitalWrite(ledPin, HIGH);
// stop the program for <sensorValue> milliseconds:
delay(sensorValue);
// turn the ledPin off:
digitalWrite(ledPin, LOW);
// stop the program for for <sensorValue> milliseconds:
delay(sensorValue);
}

Serial

  • ピン 6 を UART の TX ピンとして使用します(UART の RX ピンはピン 7):

void setup() {
Serial1.begin(115200);
while (!Serial);
}

void loop() {
Serial1.println("Hello,World");
delay(1000);
}

I2C

  • ピン 5 を IIC の SCL ピンとして使用します(IIC の SDA ピンはピン 4):
// Wire Master Writer
// by Nicholas Zambetti <http://www.zambetti.com>

// Demonstrates use of the Wire library
// Writes data to an I2C/TWI slave device
// Refer to the "Wire Slave Receiver" example for use with this

// Created 29 March 2006

// This example code is in the public domain.


#include <Wire.h>

void setup()
{
Wire.begin(); // join i2c bus (address optional for master)
}

byte x = 0;

void loop()
{
Wire.beginTransmission(4); // transmit to device #4
Wire.write("x is "); // sends five bytes
Wire.write(x); // sends one byte
Wire.endTransmission(); // stop transmitting
x++;
delay(500);
}

SPI

  • ピン 8 を SPI の SCK ピンとして使用します(SPI の MISO ピンはピン 9、MOSI ピンはピン 10):
#include <SPI.h>
const int CS = 7;
void setup (void) {
digitalWrite(CS, HIGH); // disable Slave Select
SPI.begin ();
SPI.setClockDivider(SPI_CLOCK_DIV8);//divide the clock by 8
}

void loop (void) {
char c;
digitalWrite(CS, LOW); // enable Slave Select
// send test string
for (const char * p = "Hello, world!\r" ; c = *p; p++) {
SPI.transfer (c);
}
digitalWrite(CS, HIGH); // disable Slave Select
delay(2000);
}

QTouch

QTouch の使用方法については、サンプルプロジェクトを用意しています: How to Make a Fruit Piano on Seeed Studio XIAO SAMD21 ’s Q-Touch Function

アナログ入力と出力

PWM ベースの「アナログ出力」を備えているだけでなく、SAMD21 にはデジタル-アナログコンバータ(DAC)という形で真のアナログ出力機能もあります。このモジュールは 0〜3.3V のアナログ電圧を生成できます。より自然な音のオーディオを生成したり、アナログデバイスを制御するための一種の「デジタル可変抵抗」として使用したりできます。

DAC は Arduino のピン A0 でのみ利用可能で、analogWrite(A0, <value>) を使って制御します。DAC は最大 10 ビット分解能まで設定できます(セットアップ内で必ず analogWriteResolution(10) を呼び出してください)。これは、0〜1023 の値が 0〜3.3V のどこかの電圧に対応することを意味します。

DAC に加えて、SAMD21 の ADC チャンネルも ATmega328 とは一線を画しています。最大 12 ビット分解能を備えているためです。つまり、アナログ入力値は 0〜4095 の範囲を取り、0〜3.3V の電圧を表します。ADC を 12 ビットモードで使用するには、セットアップ内で必ず analogReadResolution(12) を呼び出してください。

DAC をシリアルプロットする

ここでは、DAC と ADC の両方を示すサンプルを紹介します。実験をセットアップするには、A0 と A1 を接続します — A0 にアナログ電圧を出力し、それを A1 で読み取ります。これは、これまでのチュートリアルの中で最もシンプルな回路です:

注記

Seeed Studio XIAO SAMD21 は Seeed Studio XIAO SAMD21 expansion board を使用しています

このスケッチは、A0 に 0〜3.3V の値を取る正弦波出力を生成します。次に A1 を使ってその出力を ADC に読み込み、0〜3.3V の電圧に変換します。

もちろん、シリアルモニタを開いて電圧値のストリームを確認することもできます。しかし、テキストだけでは正弦波がイメージしにくい場合は、Tools > Serial Plotter から Arduino の新しい Serial Plotter を確認してみてください。

DAC

Aleksei Tertychnyi 氏にコードをご提供いただきありがとうございます。関連するすべての機能は彼によって開発・提供されました。

#define DAC_PIN A0 // Make code a bit more legible
float x = 0; // Value to take the sin of
float increment = 0.02; // Value to increment x by each time
int frequency = 440; // Frequency of sine wave

void setup()
{
analogWriteResolution(10); // Set analog out resolution to max, 10-bits
analogReadResolution(12); // Set analog input resolution to max, 12-bits

Serial.begin(9600);
}

void loop()
{
// Generate a voltage value between 0 and 1023.
// Let's scale a sin wave between those values:
// Offset by 511.5, then multiply sin by 511.5.
int dacVoltage = (int)(511.5 + 511.5 * sin(x));
x += increment; // Increase value of x

// Generate a voltage between 0 and 3.3V.
// 0= 0V, 1023=3.3V, 512=1.65V, etc.
analogWrite(DAC_PIN, dacVoltage);

// Now read A1 (connected to A0), and convert that
// 12-bit ADC value to a voltage between 0 and 3.3.
float voltage = analogRead(A1) * 3.3 / 4096.0;
Serial.println(voltage); // Print the voltage.
delay(1); // Delay 1ms
}

結果

pir

はじめに

ハードウェア

必要な部材

  • Seeed Studio XIAO SAMD21 x1
  • コンピュータ x1
  • USB Type-C ケーブル x1
ヒント

一部の USB ケーブルは電源供給のみで、データ転送ができません。USB ケーブルを持っていない場合や、お使いの USB ケーブルがデータ転送に対応しているか分からない場合は、seeed USB type C support USB 3.1 を確認してください。

  • ステップ 1. Seeed Studio XIAO SAMD21 と Type-C ケーブルを用意します。

  • ステップ 2. Seeed Studio XIAO SAMD21 をコンピュータに接続します。その後、黄色の電源 LED が点灯するはずです。

ソフトウェア

注記

Arduino を初めて使用する場合は、Getting Started with Arduino を参照することを強くお勧めします。

  • ステップ 1. Arduino ソフトウェアをインストールする必要があります。

Arduino アプリケーションを起動する

事前にダウンロードした Arduino アプリケーション(arduino.exe)をダブルクリックします。

注記

Arduino ソフトウェアが別の言語で起動した場合は、設定ダイアログで変更できます。詳細は Arduino Software (IDE) ページ を参照してください。

  • ステップ 2. Blink のサンプルを開きます

LED 点滅のサンプルスケッチを開きます: File > Examples >01.Basics > Blink

pir

  • ステップ 3. Seeeduino を Arduino IDE に追加します

File > Preference をクリックし、Additional Boards Manager URLs に以下の URL を入力します:

https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json

pir

Tools-> Board-> Boards Manager... をクリックし、検索欄にキーワード "Seeed Studio XIAO SAMD21" を入力します。「Seeed SAMD Boards」が表示されるので、インストールします。

pir

  • ステップ 4. ボードとポートを選択します

ボードをインストールしたら、Tools-> Board をクリックし、「Seeed Studio XIAO」を見つけて選択します。これで Arduino IDE 用の Seeed Studio XIAO SAMD21 ボードの設定が完了しました。

pir

Tools | Serial Port メニューから Arduino ボードのシリアルデバイスを選択します。これは通常 COM3 以降です(COM1COM2 は通常ハードウェアシリアルポート用に予約されています)。確認するには、Arduino ボードを取り外してからメニューを再度開き、消えたエントリが Arduino ボードであることを確認します。ボードを再接続し、そのシリアルポートを選択します。

pir

  • ステップ 5. プログラムをアップロードします

あとは、環境内の「Upload」ボタンをクリックするだけです。数秒待ち、アップロードが成功すると、ステータスバーに「Done uploading.」というメッセージが表示されます。

pir

アップロードが完了して数秒後、ボード上の 13 番ピン(L)の LED が(オレンジ色で)点滅し始めるはずです。そうなればおめでとうございます!Arduino のセットアップが完了しました。問題がある場合は、トラブルシューティングの提案を参照してください。

注記

フラッシュの最大サイズは 8KB です。詳細な情報はリソース内の ATSAMD218A-MU データシートを参照してください。

サンプルアプリケーション

リソース

ハードウェア設計

メカニカル設計

ソフトウェア & ツール

コース用リソース

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

弊社製品をお選びいただきありがとうございます。私たちは、製品をできるだけスムーズにご利用いただけるよう、さまざまなサポートを提供しています。お好みやニーズに応じて選択いただけるよう、複数のコミュニケーションチャネルを用意しています。

Loading Comments...