Saltar al contenido principal

Primeros pasos con Seeed Studio XIAO SAMD21

pir

Descripción general

El Seeed Studio XIAO SAMD21, que solía llamarse Seeeduino XIAO, es la primera aparición de la familia Seeed Studio XIAO, una serie de potentes placas de desarrollo del tamaño de un pulgar compatibles con Arduino. Incorpora el potente ATSAMD21G18A-MU, que es un microcontrolador de bajo consumo. Por otro lado, esta pequeña placa tiene un buen rendimiento de procesamiento pero necesita menos energía. Está diseñada en un tamaño diminuto y puede utilizarse para dispositivos wearables y proyectos pequeños.

Seeed Studio XIAO SAMD21 tiene 14 pines, que pueden utilizarse para 11 interfaces digitales, 11 interfaces analógicas, 10 interfaces PWM (d1-d10), 1 pin de salida DAC D0, 1 interfaz de pad SWD, 1 interfaz I2C, 1 interfaz SPI, 1 interfaz UART, indicador de comunicación serie (T/R), luz de parpadeo (L) mediante multiplexación de pines. Los colores de los LED (Power, L, RX, TX) son verde, amarillo, azul y azul. Además, Seeed Studio XIAO SAMD21 tiene una interfaz Type-C que puede suministrar energía y descargar código. Hay dos botones de reinicio, puedes cortocircuitarlos para reiniciar la placa.

Impulsado por el procesador ARM Cortex-M0+ de 32 bits SAMD21G18A de Microchip, XIAO SAMD21 Plus aporta una mayor flexibilidad y capacidad de expansión al diminuto y versátil XIAO SAMD21. Mientras mantiene todas las potentes funciones, incluida la compatibilidad con Arduino, MicroPython y PlatformIO, la variante Plus incorpora castelaciones rediseñadas y una distribución de pads en la parte posterior, ofreciendo 16 GPIO adicionales, gestión integrada de baterías de iones de litio, botones dedicados de Reset y Boot, y un LED RGB WS2812 programable a bordo. Es ideal para proyectos avanzados de IoT, wearables alimentados por batería, aplicaciones embebidas y diseños de SoM listos para producción.

Documentación

Hay dos documentos sobre el uso de Seeed Studio XIAO SAMD21 que se centran en diferentes áreas; consulta la siguiente tabla como referencia:

Documentación de SeeedDocumentación de Nanase
Diagrama de pinesInterfaz
Primeros pasos con Seeed Studio XIAO SAMD21Seeed Studio XIAO SAMD21 con tarjeta MicroSD (SPI)
Uso de GPIO de Seeed Studio XIAO SAMD21Seeed Studio XIAO SAMD21 con GPS (UART)
Recursos de Seeed Studio XIAO SAMD21IOBUS de ciclo único

Características

  • Potente MCU: procesador Microchip ATSAMD21G18A Arm® Cortex®-M0+ a 48 MHz, con 256 KB de Flash, 32 KB de SRAM y compatibilidad nativa con USB.
  • E/S ampliadas: XIAO SAMD21 Plus mantiene la disposición estándar de 14 pines de XIAO y añade 16 GPIO mediante castelaciones SMD traseras de 1,27 mm, con compatibilidad con PWM, DAC, I2C, UART, SPI, I2S y SWD.
  • Gestión de energía integrada: admite conexión directa de batería de iones de litio, carga a bordo, protección contra retroceso y señalización del estado de carga.
  • Desarrollo flexible: compatible con Arduino IDE, PlatformIO, CircuitPython y TinyGo.
  • Compacto y listo para el ecosistema: mantiene el factor de forma XIAO de 21 × 17,8 mm, apto para protoboard, mientras adopta la distribución estandarizada de pads traseros XIAO Plus para placas de expansión y diseños de portadoras personalizadas.

Especificaciones

Product NameSeeed Studio XIAO SAMD21Seeed Studio XIAO SAMD21 Plus
Chipset

Microchip SAMD21G18

ProcessorProcesador Arm® Cortex®-M0+ funcionando hasta 48 MHz
RAM32 KB SRAM
Flash256 KB Flash
Interface

GPIO Pin ×14
Digital Pin ×11
Analog Pin ×11
DAC ×1
I2C ×1
UART ×1
SPI ×1

GPIO Pin ×30
Digital Pin ×27
Analog Pin ×11
DAC ×1
I2C ×2
UART ×1
SPI ×1
I2S ×1

Onboard

User LED ×1
Power LED ×1
TX/RX Status LED ×2

User LED ×1
Reset Button ×1
Boot Button ×1

Battery ManagementNingunaPMIC a bordo
Power

Tensión de entrada (Type-C): 5 V
Entrada BAT: No compatible

Tensión de entrada (Type-C): 5 V
Entrada BAT: batería de iones de litio/LiPo de una sola celda de 3,7 V

BAT-to-3V3 Backflow ProtectionNo
Working Temperature-40°C a 85°C
Dimensions21 × 17,8 mm
Software Compatibility

Arduino, PlatformIO, MicroPython, CircuitPython, Zephyr y más

Descripción general del hardware

Parte frontal de XIAO SAMD21

Parte trasera de XIAO SAMD21

precaución

Para pines de E/S generales: La tensión de funcionamiento del MCU es de 3,3 V. Una tensión de entrada conectada a los pines de E/S generales puede causar daños al chip si es superior a 3,3 V.

Para pines de alimentación: El circuito convertidor DC-DC integrado capaz de convertir 5 V en 3,3 V permite alimentar el dispositivo con una fuente de 5 V a través de los pines VIN-PIN y 5V-PIN.

Es fundamental entender que las almohadillas VIN y GND en la parte posterior del XIAO SAMD21 no están diseñadas para conectar directamente una batería, especialmente una batería recargable de litio (LiPo/Li-Ion). La placa carece del circuito esencial de gestión de batería necesario para un funcionamiento seguro. Estas almohadillas son simplemente un punto de entrada de alimentación alternativo que evita el diodo de protección integrado de la placa. Si deseas alimentar tu proyecto con una batería, debes utilizar un módulo externo de gestión de batería dedicado que proporcione carga y protección, y luego conectar la salida regulada de ese módulo al pin de 5 V del XIAO.

Presta atención al uso, no levantes la cubierta de protección.

Mapa de pines

Pin XIAOFunciónXIAO SAMD21XIAO SAMD21 PlusDescripción
5VVBUSVBUSVBUSEntrada/salida de alimentación USB de 5 V
GNDGNDGNDGNDTierra
3V33V3_OUT3V3_OUT3V3_OUTSalida de alimentación de 3,3 V
D0A0 / DACPA02PA02GPIO, ADC AIN0, salida DAC; sin PWM por hardware
D1A1PA04PA04GPIO, ADC AIN4
D2A2PA10PA10GPIO, ADC AIN18
D3A3PA11PA11GPIO, ADC AIN19
D4SDA0PA08PA08GPIO, ADC AIN16, datos I2C
D5SCL0PA09PA09GPIO, ADC AIN17, reloj I2C
D6TXPB08PB08GPIO, ADC AIN2, transmisión UART
D7RXPB09PB09GPIO, ADC AIN3, recepción UART
D8SCKPA07PA07GPIO, ADC AIN7, reloj SPI
D9MISOPA05PA05GPIO, ADC AIN5, entrada de datos SPI
D10MOSIPA06PA06GPIO, ADC AIN6, salida de datos SPI
D11TX_LEDPA19-LED TX interno en XIAO SAMD21; no definido en Plus
D12GPIOPA18 (RX_LED)PA28GPIO de expansión Plus
D13SCL1PA17 (USER_LED)PA17GPIO de expansión Plus y reloj I2C1
D14SDA1-PA16GPIO de expansión Plus y datos I2C1
D15GPIO-PA15GPIO de expansión Plus
D16GPIO-PA14GPIO de expansión Plus
D17GPIO-PA13GPIO de expansión Plus
D18GPIO-PA12GPIO de expansión Plus
D19I2S_SD-PA19GPIO de expansión Plus y datos I2S
D20I2S_SCK-PA20GPIO de expansión Plus y reloj I2S
D21I2S_WS-PA21GPIO de expansión Plus y selección de palabra I2S
D22GPIO-PB10GPIO de expansión Plus
D23GPIO-PB11GPIO de expansión Plus
D24GPIO-PB23GPIO de expansión Plus
D25GPIO-PA23GPIO de expansión Plus
D26GPIO-PB2GPIO de expansión Plus
D27GPIO-PA18GPIO de expansión Plus
VBAT_ENBattery Enable-PB2Control de alimentación de la batería en Plus
AIN11_VBATVoltage Read-PB3Lectura del voltaje de la batería en Plus
ResetRESETNRESETNRESETNEntrada de reinicio activo en bajo, pin 40 del encapsulado
TX_LEDLEDPA19-Indicador TX de la placa original, activo en bajo
RX_LEDLEDPA18-Indicador RX de la placa original, activo en bajo
USER_LEDLEDPA17-LED de usuario de la placa original, activo en bajo
POWER_LEDPower indicator3V3-LED verde de alimentación de la placa original; no es un GPIO del MCU
RGB_LEDWS2812B data-PA27Datos del LED RGB direccionable Plus
USER_BUTTONButton-PB22Botón de usuario Plus, activo en bajo
VBAT_ENBattery ADC enable-PB02Habilita la medición del voltaje de la batería
AIN11_VBATBattery ADC-PB03 / AIN11Voltaje de la batería a través de un divisor 1/2
CHARGE_LEDCharging indicator--LED de carga controlado por hardware en Plus; no es un GPIO del MCU
SWDIOSWD debugPA31PA31Datos de Serial Wire Debug
SWCLKSWD debugPA30PA30Reloj de Serial Wire Debug

Entrar en modo Bootloader

Para XIAO SAMD21

A veces el puerto de Seeed Studio XIAO SAMD21 puede desaparecer cuando falla el proceso de programación del usuario. Podemos resolver este problema mediante la siguiente operación:

  • Conecta el Seeed Studio XIAO SAMD21 a tu ordenador.
  • Usa pinzas o cables cortos para puentear los pines RST del diagrama dos veces.
  • Los LED naranjas parpadean y se encienden.

En este punto, el chip entra en modo Bootloader y el puerto de grabación vuelve a aparecer. Debido a que el chip samd21 tiene dos particiones, una es el Bootloader y la otra es el programa de usuario. El producto graba un código de bootloader en la memoria del sistema cuando sale de fábrica. Podemos cambiar de modo realizando los pasos anteriores.

pir

Para XIAO SAMD21 Plus

Conecta el XIAO SAMD21 Plus a tu ordenador. Pulsa el botón de Reset dos veces consecutivas para entrar en modo Bootloader.

Reset

Si quieres reiniciar el Seeed Studio XIAO SAMD21, realiza los siguientes pasos:

  • Conecta el Seeed Studio XIAO SAMD21 a tu ordenador.
  • Usa pinzas o cables cortos para puentear los pines RST solo una vez
  • Los LED naranjas parpadean y se encienden.

Ten en cuenta: El comportamiento del LED integrado es el inverso al de un Arduino. En el Seeed Studio XIAO SAMD21, el pin tiene que ponerse en bajo, mientras que en otros microcontroladores tiene que ponerse en alto.  

Interrupción

Todos los pines en Seeed Studio XIAO SAMD21 soportan interrupciones, pero hay dos pines que no se pueden usar al mismo tiempo: pin 5 y pin 7. Para más detalles sobre las interrupciones, consulta aquí.

Primeros pasos

Hardware

Materiales requeridos

  • Seeed Studio XIAO SAMD21 x1
  • Ordenador x1
  • Cable USB Type-C x1
tip

Algunos cables USB solo pueden suministrar energía y no pueden transferir datos. Si no tienes un cable USB o no sabes si tu cable USB puede transmitir datos, puedes comprobar seeed USB type C support USB 3.1.

  • Paso 1. Prepara un Seeed Studio XIAO SAMD21 y un cable Type-C.

  • Paso 2. Conecta el Seeed Studio XIAO SAMD21 a tu ordenador. Entonces el LED de alimentación amarillo debería encenderse.

Software

nota

Si es la primera vez que usas Arduino, te recomendamos encarecidamente que consultes Getting Started with Arduino

  • Paso 1. Necesitas instalar un software de Arduino.

Inicia la aplicación Arduino

Haz doble clic en la aplicación Arduino (arduino.exe) que has descargado previamente.

nota

Si el software de Arduino se carga en un idioma diferente, puedes cambiarlo en el cuadro de diálogo de preferencias. Consulta la página Arduino Software (IDE) para más detalles.

  • Paso 2. Abre el ejemplo Blink

Abre el sketch de ejemplo de parpadeo del LED: File > Examples >01.Basics > Blink.

pir

  • Paso 3. Añade Seeeduino a tu Arduino IDE

Haz clic en File > Preference, y rellena Additional Boards Manager URLs con la siguiente URL:

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

pir

Haz clic en Tools-> Board-> Boards Manager..., escribe la palabra clave "Seeed Studio XIAO SAMD21" en el cuadro de búsqueda. Aparecerá Seeed SAMD Boards. Instálalo.

pir

XIAO SAMD21 Parpadeo

  • Paso 4. Selecciona tu placa y puerto

Después de instalar la placa, haz clic en Tools-> Board, busca Seeed Studio XIAO y selecciónala. Ahora ya has configurado la placa Seeed Studio XIAO SAMD21 para Arduino IDE.

pir

Selecciona el dispositivo serie de la placa Arduino en el menú Tools | Serial Port. Probablemente será COM3 o superior (COM1 y COM2 suelen estar reservados para los puertos serie de hardware). Para averiguarlo, puedes desconectar tu placa Arduino y volver a abrir el menú; la entrada que desaparezca debería ser la placa Arduino. Vuelve a conectar la placa y selecciona ese puerto serie.

pir

  • Paso 5. Sube el programa

Ahora, simplemente haz clic en el botón Upload en el entorno. Espera unos segundos y, si la carga se realiza correctamente, aparecerá el mensaje "Done uploading." en la barra de estado.

pir

Unos segundos después de que termine la carga, deberías ver que el LED del pin 13 (L) de la placa empieza a parpadear (en naranja). Si es así, ¡enhorabuena! Has puesto Arduino en funcionamiento. Si tienes problemas, consulta las sugerencias de resolución de problemas.

nota

El tamaño máximo de la memoria flash es de 8 KB. Para obtener más información, consulta la hoja de datos ATSAMD21G18A-MU en la sección de recursos.

XIAO SAMD21 Plus Parpadeo

En la XIAO SAMD21 Plus, el pin L (LED) se ha eliminado. Ha sido reemplazado por el RGB_LED, que se controla mediante el pin PA27.

‑ Cambia la placa de destino a XIAO M0 Plus.

pir

  • Instala la biblioteca Adafruit_NeoPixel y actualízala a la última versión.

pir

‑ Sustituye el código por el fragmento que aparece a continuación. El pin para RGB_LED es PA27, que se ha redefinido como PIN_LED_RGB.

precaución

Los LED RGB pueden causar fatiga ocular o lesiones si se utilizan con un brillo excesivo; se recomienda una protección ocular adecuada.

#include <Adafruit_NeoPixel.h>

#define NUMPIXELS 1

Adafruit_NeoPixel pixels(NUMPIXELS, PIN_NEOPIXEL, NEO_GRB + NEO_KHZ800);

void setup() {
pixels.begin();

pinMode(NEOPIXEL_POWER, OUTPUT);
digitalWrite(NEOPIXEL_POWER, HIGH);

// Set overall brightness (0~255)
// Recommended eye-friendly range: 10~50
pixels.setBrightness(50);
}


void loop() {

pixels.clear();
pixels.setPixelColor(0, pixels.Color(15, 25, 205));
pixels.show();
delay(400);


pixels.clear();
pixels.setPixelColor(0, pixels.Color(103, 25, 205));
pixels.show();
delay(400);


pixels.clear();
pixels.setPixelColor(0, pixels.Color(233, 242, 205));
pixels.show();
delay(400);


pixels.clear();
pixels.setPixelColor(0, pixels.Color(233, 23, 23));
pixels.show();
delay(400);


pixels.clear();
pixels.setPixelColor(0, pixels.Color(12, 66, 101));
pixels.show();
delay(400);


pixels.clear();
pixels.show();
delay(500);
}

‑ Haz clic en Upload para grabar el programa. Una vez completado, se encenderá el LED RGB.

pir

nota

El tamaño máximo de la memoria flash es de 8 KB. Para obtener más información, consulta la hoja de datos ATSAMD21G18A-MU en la sección de recursos.

Multiplexación de pines

No necesitamos configurar los pines nosotros mismos; después de usar los pines, puedes llamar directamente a una función.

Entrada y salida digital

  • Usa el pin 6 como pin digital:
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

  • Usa el pin 6 como pin analógico:


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

  • Usa el pin 6 como pin TX de UART (el pin RX de UART es el pin 7):

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

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

I2C

  • Usa el pin 5 como pin SCL de IIC (el pin SDA de IIC es el pin 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

  • Usa el pin 8 como pin SCK de SPI (el pin MISO de SPI es el pin 9, el pin MOSI de SPI es el pin 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

Para saber cómo usar QTouch, proporcionamos un proyecto de ejemplo: How to Make a Fruit Piano on Seeed Studio XIAO SAMD21 ’s Q-Touch Function.

Entrada y salida analógica

Aunque todavía tiene "salidas analógicas" basadas en PWM, el SAMD21 también incorpora una salida analógica real en forma de un convertidor digital‑analógico (DAC). Este módulo puede producir una tensión analógica entre 0 y 3,3 V. Puede utilizarse para producir audio con un sonido más natural, o como una especie de "potenciómetro digital" para controlar dispositivos analógicos.

El DAC solo está disponible en el pin A0 de Arduino y se controla usando analogWrite(A0, <value>). El DAC se puede configurar hasta una resolución de 10 bits (asegúrate de llamar a analogWriteResolution(10) en tu configuración), lo que significa que los valores entre 0 y 1023 ajustarán la tensión a un valor entre 0 y 3,3 V.

Además del DAC, los canales ADC del SAMD21 también se diferencian del ATmega328: están equipados con una resolución de hasta 12 bits. Esto significa que los valores de entrada analógica pueden ir de 0 a 4095, representando una tensión entre 0 y 3,3 V. Para usar los ADC en modo de 12 bits, asegúrate de llamar a analogReadResolution(12) en tu configuración.

Trazado en serie del DAC

Aquí tienes un ejemplo que demuestra tanto el DAC como el ADC. Para montar el experimento, conecta A0 a A1: aplicaremos a A0 una tensión analógica y luego la leeremos con A1. Es el circuito más sencillo que hemos puesto nunca en un tutorial:

nota

El Seeed Studio XIAO SAMD21 utiliza la Seeed Studio XIAO SAMD21 expansion board

Este sketch produce una señal de salida senoidal en A0, con valores que van de 0 a 3,3 V. Luego utiliza A1 para leer esa salida en su ADC y convertirla en una tensión entre 0 y 3,3 V.

Por supuesto, puedes abrir el monitor serie para ver el flujo de valores de tensión. Pero si la onda sinusoidal es difícil de visualizar mediante texto, prueba el nuevo Serial Plotter de Arduino, yendo a Tools > Serial Plotter.

Gracias a Aleksei Tertychnyi por enviar el código, todas las funcionalidades relacionadas fueron desarrolladas y aportadas por él.

#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
// Frequency of sine wave is about 1.37 Hz

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
}

Resultado

pir

Uso de la batería

nota

Solo el XIAO SAMD21 Plus incorpora un conector de batería BAT en su parte posterior, por favor téngalo en cuenta.

El XIAO SAMD21 Plus es capaz de utilizar una batería de litio de 3,7 V como entrada de alimentación. Puede consultar el siguiente diagrama para el método de cableado.


precaución

Tenga cuidado de no cortocircuitar los terminales positivo y negativo y quemar la batería y el equipo al soldar. Si la batería tiene carga, nunca la suelde en la placa, ya que esto puede quemar la placa de circuito. Un cortocircuito mientras el circuito está alimentado representa un riesgo significativo; se recomienda utilizar un adaptador.

Ejemplo de lectura del voltaje de la batería

Según el esquema, el SGM40567-4.2XG/TR proporciona carga para baterías de litio de una sola celda con una corriente de carga de aproximadamente 200 mA. El Charge_LED parpadea durante la carga.

La medición del voltaje de la batería está controlada por el interruptor de carga TPS22916CNYFPR a través de PB2/VBAT_EN, reduciendo el consumo de energía en espera. El voltaje de la batería se divide por dos y se mide a través del pin ADC PB3/AIN11_VBAT.


El voltaje de la batería se mide utilizando un circuito divisor de resistencias. El voltaje leído por el ADC es la mitad del voltaje real de la batería, por lo que el software debe multiplicar la medición del ADC por 2 para obtener el voltaje real de la batería.

En el núcleo de Arduino, PB02 y PB03 están asignados a los números de pin 31 y 32, respectivamente. Defínalos de la siguiente manera:

// VBAT_EN on PB02
#define PIN_VBAT_EN (31u)

// AIN11_VBAT on PB03
#define PIN_VBAT_ADC (32u)
Ejemplo de lectura de batería
constexpr float ADC_VREF = 3.3f;
constexpr float ADC_MAX = 4095.0f;
constexpr float DIVIDER_RATIO = 2.0f; // R5 = R6 = 10 kΩ

float readBatteryVoltage() {
digitalWrite(PIN_VBAT_EN, HIGH);
delay(10);

analogRead(PIN_VBAT_ADC); // Discard a stale reading

uint32_t sum = 0;
constexpr int samples = 16;

for (int i = 0; i < samples; i++) {
sum += analogRead(PIN_VBAT_ADC);
delay(2);
}

digitalWrite(PIN_VBAT_EN, LOW);

float adcRaw = sum / static_cast<float>(samples);
float adcVoltage = adcRaw * ADC_VREF / ADC_MAX;

return adcVoltage * DIVIDER_RATIO;
}

void setup() {
Serial.begin(115200);

pinMode(PIN_VBAT_EN, OUTPUT);
digitalWrite(PIN_VBAT_EN, LOW);

analogReadResolution(12); // SAMD21 ADC: 0–4095
}

void loop() {
float batteryVoltage = readBatteryVoltage();

Serial.print("Battery: ");
Serial.print(batteryVoltage, 3);
Serial.println(" V");

delay(1000);
}

nota

Para aplicaciones de bajo consumo, desactive BAT_EN después de completar la medición del voltaje de la batería para reducir el consumo de energía en reposo causado por las resistencias del divisor de voltaje.

  • El Charge_LED parpadea mientras la batería se está cargando.

  • Resultado de la medición del voltaje de la batería: el voltaje medido de una batería de iones de litio puede diferir del valor nominal impreso en la batería. Consulte siempre el valor medido real.

La aplicación de ejemplo

Recursos

XIAO SAMD21

Diseño de hardware

Diseño mecánico

Software y herramientas

XIAO SAMD21 Plus

Diseño de hardware

Diseño mecánico

Recursos del curso

Soporte técnico y debate sobre el producto

Gracias por elegir nuestros productos. Estamos aquí para ofrecerle diferentes tipos de soporte y garantizar que su experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para adaptarnos a diferentes preferencias y necesidades.

Loading Comments...