Pular para o conteúdo principal

Introdução ao Seeed Studio XIAO SAMD21

pir

Visão geral

O Seeed Studio XIAO SAMD21, que costumava se chamar Seeeduino XIAO, é a primeira estreia da família Seeed Studio XIAO, uma série de poderosas placas de desenvolvimento do tamanho de um polegar compatíveis com Arduino. Ele traz o poderoso ATSAMD21G18A-MU, que é um microcontrolador de baixo consumo. Por outro lado, esta pequena placa tem bom desempenho de processamento, mas consome menos energia. Ela é projetada em um tamanho minúsculo e pode ser usada para dispositivos vestíveis e projetos pequenos.

O Seeed Studio XIAO SAMD21 possui 14 PINs, que podem ser usados como 11 interfaces digitais, 11 interfaces analógicas, 10 interfaces PWM (d1-d10), 1 pino de saída DAC D0, 1 interface de pad SWD, 1 interface I2C, 1 interface SPI, 1 interface UART, indicador de comunicação serial (T/R), LED de pisca (L) por meio de multiplexação de pinos. As cores dos LEDs (Power, L, RX, TX) são verde, amarelo, azul e azul. Além disso, o Seeed Studio XIAO SAMD21 possui uma interface Type-C que pode fornecer energia e fazer o download de código. Há dois botões de reset; você pode curto-circuitá-los para reiniciar a placa.

Alimentado pelo processador ARM Cortex-M0+ de 32 bits SAMD21G18A da Microchip, o XIAO SAMD21 Plus traz flexibilidade e expansibilidade aprimoradas ao pequeno e versátil XIAO SAMD21. Mantendo todos os recursos poderosos, incluindo compatibilidade com Arduino, MicroPython e PlatformIO, a variante Plus apresenta castelações redesenhadas e layout de pads na parte traseira, oferecendo 16 GPIOs adicionais, gerenciamento integrado de bateria de íon de lítio, botões dedicados de Reset e Boot e um LED RGB WS2812 programável onboard. Ele é ideal para projetos avançados de IoT, wearables alimentados por bateria, aplicações embarcadas e designs de SoM prontos para produção.

Documentações

Existem dois documentos sobre o uso do Seeed Studio XIAO SAMD21 que se concentram em áreas diferentes; consulte a tabela abaixo como referência:

Documentação da SeeedDocumentação da Nanase
Diagrama de pinagemInterface
Introdução ao Seeed Studio XIAO SAMD21Seeed Studio XIAO SAMD21 com cartão MicroSD (SPI)
Uso de GPIO no Seeed Studio XIAO SAMD21Seeed Studio XIAO SAMD21 com GPS (UART)
Recursos do Seeed Studio XIAO SAMD21IOBUS de ciclo único

Recursos

  • MCU poderosa: processador Microchip ATSAMD21G18A Arm® Cortex®-M0+ a 48 MHz, com 256 KB de Flash, 32 KB de SRAM e suporte USB nativo.
  • I/O expandido: o XIAO SAMD21 Plus mantém o layout padrão de 14 pinos do XIAO e adiciona 16 GPIOs por meio de castelações SMD traseiras de 1,27 mm, com suporte a PWM, DAC, I2C, UART, SPI, I2S e SWD.
  • Gerenciamento de energia integrado: suporta conexão direta de bateria de íon de lítio, carregamento onboard, proteção contra retorno de corrente e indicação de status de carga.
  • Desenvolvimento flexível: compatível com Arduino IDE, PlatformIO, CircuitPython e TinyGo.
  • Compacto e pronto para o ecossistema: mantém o fator de forma XIAO de 21 × 17,8 mm compatível com protoboard, enquanto adota o layout padronizado XIAO Plus na parte traseira para placas de expansão e designs de carriers personalizados.

Especificações

Product NameSeeed Studio XIAO SAMD21Seeed Studio XIAO SAMD21 Plus
Chipset

Microchip SAMD21G18

ProcessorProcessador Arm® Cortex®-M0+ operando a até 48 MHz
RAM32 KB de SRAM
Flash256 KB de Flash
Interface

Pino GPIO ×14
Pino digital ×11
Pino analógico ×11
DAC ×1
I2C ×1
UART ×1
SPI ×1

Pino GPIO ×30
Pino digital ×27
Pino analógico ×11
DAC ×1
I2C ×2
UART ×1
SPI ×1
I2S ×1

Onboard

LED de usuário ×1
LED de alimentação ×1
LED de status TX/RX ×2

LED de usuário ×1
Botão de reset ×1
Botão de boot ×1

Battery ManagementNenhumPMIC onboard
Power

Tensão de entrada (Type-C): 5 V
Entrada BAT: Não suportada

Tensão de entrada (Type-C): 5 V
Entrada BAT: bateria de íon de lítio/LiPo de célula única de 3,7 V

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

Arduino, PlatformIO, MicroPython, CircuitPython, Zephyr e mais

Visão geral de hardware

Frente do XIAO SAMD21

Verso do XIAO SAMD21

cuidado

Para pinos de I/O gerais: A tensão de trabalho do MCU é 3,3 V. A tensão de entrada conectada aos pinos de I/O gerais pode causar danos ao chip se for maior que 3,3 V.

Para pinos de alimentação: O circuito conversor DC-DC integrado capaz de transformar 5 V em 3,3 V permite alimentar o dispositivo com uma fonte de 5 V pelos pinos VIN-PIN e 5V-PIN.

É fundamental entender que os pads VIN e GND na parte de trás do XIAO SAMD21 não foram projetados para conectar diretamente uma bateria, especialmente uma bateria recarregável de lítio (LiPo/Li-Ion). A placa não possui o circuito essencial de gerenciamento de bateria necessário para uma operação segura. Esses pads são simplesmente um ponto alternativo de entrada de energia que ignora o diodo de proteção integrado da placa. Se você quiser alimentar seu projeto com uma bateria, deve usar um módulo externo dedicado de gerenciamento de bateria que forneça carregamento e proteção e, em seguida, conectar a saída regulada desse módulo ao pino de 5 V do XIAO.

Por favor, preste atenção ao usar, não levante a tampa de blindagem.

Mapa de pinos

Pino XIAOFunçãoXIAO SAMD21XIAO SAMD21 PlusDescrição
5VVBUSVBUSVBUSEntrada/saída de alimentação USB 5 V
GNDGNDGNDGNDTerra
3V33V3_OUT3V3_OUT3V3_OUTSaída de alimentação de 3,3 V
D0A0 / DACPA02PA02GPIO, ADC AIN0, saída DAC; sem PWM por hardware
D1A1PA04PA04GPIO, ADC AIN4
D2A2PA10PA10GPIO, ADC AIN18
D3A3PA11PA11GPIO, ADC AIN19
D4SDA0PA08PA08GPIO, ADC AIN16, dados I2C
D5SCL0PA09PA09GPIO, ADC AIN17, clock I2C
D6TXPB08PB08GPIO, ADC AIN2, transmissão UART
D7RXPB09PB09GPIO, ADC AIN3, recepção UART
D8SCKPA07PA07GPIO, ADC AIN7, clock SPI
D9MISOPA05PA05GPIO, ADC AIN5, entrada de dados SPI
D10MOSIPA06PA06GPIO, ADC AIN6, saída de dados SPI
D11TX_LEDPA19-LED TX interno no XIAO SAMD21; não definido no Plus
D12GPIOPA18 (RX_LED)PA28GPIO de expansão do Plus
D13SCL1PA17 (USER_LED)PA17GPIO de expansão do Plus e clock I2C1
D14SDA1-PA16GPIO de expansão do Plus e dados I2C1
D15GPIO-PA15GPIO de expansão do Plus
D16GPIO-PA14GPIO de expansão do Plus
D17GPIO-PA13GPIO de expansão do Plus
D18GPIO-PA12GPIO de expansão do Plus
D19I2S_SD-PA19GPIO de expansão do Plus e dados I2S
D20I2S_SCK-PA20GPIO de expansão do Plus e clock I2S
D21I2S_WS-PA21GPIO de expansão do Plus e seleção de palavra I2S
D22GPIO-PB10GPIO de expansão do Plus
D23GPIO-PB11GPIO de expansão do Plus
D24GPIO-PB23GPIO de expansão do Plus
D25GPIO-PA23GPIO de expansão do Plus
D26GPIO-PB2GPIO de expansão do Plus
D27GPIO-PA18GPIO de expansão do Plus
VBAT_ENBattery Enable-PB2Controle de alimentação da bateria no Plus
AIN11_VBATVoltage Read-PB3Leitura da tensão da bateria no Plus
ResetRESETNRESETNRESETNEntrada de reset ativo em nível baixo, pino 40 do encapsulamento
TX_LEDLEDPA19-Indicador TX da placa original, ativo em nível baixo
RX_LEDLEDPA18-Indicador RX da placa original, ativo em nível baixo
USER_LEDLEDPA17-LED de usuário da placa original, ativo em nível baixo
POWER_LEDPower indicator3V3-LED verde de alimentação da placa original; não é um GPIO do MCU
RGB_LEDWS2812B data-PA27Dados do LED RGB endereçável do Plus
USER_BUTTONButton-PB22Botão de usuário do Plus, ativo em nível baixo
VBAT_ENBattery ADC enable-PB02Habilita a medição da tensão da bateria
AIN11_VBATBattery ADC-PB03 / AIN11Tensão da bateria através de um divisor 1/2
CHARGE_LEDCharging indicator--LED de carregamento controlado por hardware no Plus; não é um GPIO do MCU
SWDIOSWD debugPA31PA31Dados do Serial Wire Debug
SWCLKSWD debugPA30PA30Clock do Serial Wire Debug

Entrar no modo Bootloader

Para XIAO SAMD21

Às vezes, a porta do Seeed Studio XIAO SAMD21 pode desaparecer quando o processo de programação do usuário falha. Podemos resolver esse problema com a seguinte operação:

  • Conecte o Seeed Studio XIAO SAMD21 ao seu computador.
  • Use uma pinça ou fios curtos para fazer curto-circuito nos pinos RST do diagrama duas vezes.
  • Os LEDs laranja piscam e acendem.

Neste ponto, o chip entra no modo Bootloader e a porta de gravação aparece novamente. Como o chip samd21 possui duas partições, uma é o Bootloader e a outra é o programa do usuário. O produto grava um código de bootloader na memória do sistema quando sai de fábrica. Podemos alternar os modos executando as etapas acima.

pir

Para XIAO SAMD21 Plus

Conecte o XIAO SAMD21 Plus ao seu computador. Pressione o botão Reset duas vezes consecutivas para entrar no modo Bootloader.

Reset

Se você quiser resetar o Seeed Studio XIAO SAMD21, execute as seguintes etapas:

  • Conecte o Seeed Studio XIAO SAMD21 ao seu computador.
  • Use uma pinça ou fios curtos para fazer curto-circuito nos pinos RST apenas uma vez
  • Os LEDs laranja piscam e acendem.

Atenção: O comportamento do LED embutido é o inverso daquele em um Arduino. No Seeed Studio XIAO SAMD21, o pino precisa ser puxado para nível baixo, enquanto em outros microcontroladores ele precisa ser puxado para nível alto.  

Interrupção

Todos os pinos no Seeed Studio XIAO SAMD21 suportam interrupções, mas dois pinos não podem ser usados ao mesmo tempo: pino 5 e pino 7. Para mais detalhes sobre interrupção, verifique aqui.

Introdução

Hardware

Materiais necessários

  • Seeed Studio XIAO SAMD21 x1
  • Computador x1
  • Cabo USB Type-C x1
dica

Alguns cabos USB podem apenas fornecer energia e não transferir dados. Se você não tiver um cabo USB ou não souber se o seu cabo USB pode transmitir dados, você pode verificar seeed USB type C support USB 3.1.

  • Etapa 1. Prepare um Seeed Studio XIAO SAMD21 e um cabo Type-C.

  • Etapa 2. Conecte o Seeed Studio XIAO SAMD21 ao seu computador. Então o LED de alimentação amarelo deve acender.

Software

nota

Se esta é a sua primeira vez usando Arduino, recomendamos fortemente que você consulte Getting Started with Arduino

  • Etapa 1. Você precisa instalar o software Arduino.

Inicie o aplicativo Arduino

Clique duas vezes no aplicativo Arduino (arduino.exe) que você baixou anteriormente.

nota

Se o software Arduino carregar em um idioma diferente, você pode alterá-lo na caixa de diálogo de preferências. Consulte a página Arduino Software (IDE) para mais detalhes.

  • Etapa 2. Abra o exemplo Blink

Abra o sketch de exemplo de piscar LED: File > Examples >01.Basics > Blink.

pir

  • Etapa 3. Adicione o Seeeduino ao seu Arduino IDE

Clique em File > Preference, e preencha Additional Boards Manager URLs com a URL abaixo:

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

pir

Clique em Tools-> Board-> Boards Manager..., digite a palavra‑chave "Seeed Studio XIAO SAMD21" no campo de busca. Em seguida aparecerá Seeed SAMD Boards. Instale‑o.

pir

  • Passo 4. Selecione sua placa e porta

Após instalar a placa, clique em Tools-> Board, encontre Seeed Studio XIAO e selecione‑a. Agora você já configurou a placa Seeed Studio XIAO SAMD21 para a Arduino IDE.

pir

Selecione o dispositivo serial da placa Arduino no menu Tools | Serial Port. Provavelmente será COM3 ou superior (COM1 e COM2 geralmente são reservadas para portas seriais de hardware). Para descobrir, você pode desconectar sua placa Arduino e reabrir o menu; a entrada que desaparecer deve ser a placa Arduino. Reconecte a placa e selecione essa porta serial.

pir

  • Passo 5. Envie o programa

Agora, simplesmente clique no botão Upload no ambiente. Aguarde alguns segundos e, se o envio for bem‑sucedido, a mensagem "Done uploading." aparecerá na barra de status.

pir

Alguns segundos após o término do envio, você deverá ver o LED do pino 13 (L) na placa começar a piscar (em laranja). Se isso acontecer, parabéns! Você colocou o Arduino para funcionar. Se tiver problemas, consulte as sugestões de solução de problemas.

nota

O tamanho máximo da flash é 8 KB. Para mais informações, consulte o datasheet do ATSAMD21G18A-MU na seção de recursos.

No XIAO SAMD21 Plus, o pino L (LED) foi removido. Ele foi substituído pelo RGB_LED, que é controlado pelo pino PA27.

‑ Altere a placa alvo para XIAO M0 Plus.

pir

  • Instale a biblioteca Adafruit_NeoPixel e atualize‑a para a versão mais recente.

pir

‑ Substitua o código pelo trecho abaixo. O pino para o RGB_LED é o PA27, que foi redefinido como PIN_LED_RGB.

cuidado

Os LEDs RGB podem causar fadiga ocular ou lesões se operados com brilho excessivo; recomenda‑se o uso de proteção ocular adequada.

#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);
}

‑ Clique em Upload para gravar o programa. Quando concluído, o LED RGB acenderá.

pir

nota

O tamanho máximo da flash é 8 KB. Para mais informações, consulte o datasheet do ATSAMD21G18A-MU na seção de recursos.

Multiplexação de pinos

Não precisamos configurar os pinos manualmente; depois de usar os pinos, você pode simplesmente chamar uma função diretamente.

Entrada e saída digital

  • Use o pino 6 como pino 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

  • Use o pino 6 como pino 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

  • Use o pino 6 como pino TX da UART (o pino RX da UART é o pino 7):

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

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

I2C

  • Use o pino 5 como pino SCL do IIC (o pino SDA do IIC é o pino 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

  • Use o pino 8 como pino SCK do SPI (o pino MISO do SPI é o pino 9, o pino MOSI do SPI é o pino 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 como usar o QTouch, fornecemos um projeto de exemplo: How to Make a Fruit Piano on Seeed Studio XIAO SAMD21 ’s Q-Touch Function.

Entrada e saída analógica

Embora ainda tenha "saídas analógicas" baseadas em PWM, o SAMD21 também possui saída analógica verdadeira na forma de um conversor digital‑para‑analógico (DAC). Este módulo pode produzir uma tensão analógica entre 0 e 3,3 V. Ele pode ser usado para produzir áudio com som mais natural ou como uma espécie de "potenciômetro digital" para controlar dispositivos analógicos.

O DAC está disponível apenas no pino A0 do Arduino e é controlado usando analogWrite(A0, <value>). O DAC pode ser configurado para resolução de até 10 bits (certifique‑se de chamar analogWriteResolution(10) na sua função setup), o que significa que valores entre 0 e 1023 definirão a tensão em algum ponto entre 0 e 3,3 V.

Além do DAC, os canais ADC do SAMD21 também se destacam em relação ao ATmega328: eles são equipados com resolução de até 12 bits. Isso significa que os valores de entrada analógica podem variar de 0 a 4095, representando uma tensão entre 0 e 3,3 V. Para usar os ADCs no modo de 12 bits, certifique‑se de chamar analogReadResolution(12) na sua função setup.

Plotando o DAC via Serial

Aqui está um exemplo que demonstra tanto o DAC quanto o ADC. Para montar o experimento, conecte A0 a A1 — vamos acionar A0 com uma tensão analógica e depois lê‑la com A1. É o circuito mais simples que já colocamos em um tutorial:

nota

O Seeed Studio XIAO SAMD21 usando a placa de expansão Seeed Studio XIAO SAMD21

Este sketch produz uma onda senoidal na saída A0, com valores variando de 0 a 3,3 V. Em seguida, ele usa A1 para ler essa saída em seu ADC e convertê‑la em uma tensão entre 0 e 3,3 V.

Você pode, é claro, abrir o monitor serial para ver o fluxo de valores de tensão. Mas, se a onda senoidal for difícil de visualizar em forma de texto, experimente o novo Serial Plotter do Arduino, indo em Tools > Serial Plotter.

Obrigado a Aleksei Tertychnyi por enviar o código, todas as funcionalidades relacionadas foram desenvolvidas e contribuídas por ele.

#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 da bateria

nota

Apenas o XIAO SAMD21 Plus possui um conector de bateria BAT na parte traseira, por favor, observe.

O XIAO SAMD21 Plus é capaz de usar uma bateria de lítio de 3,7 V como entrada de alimentação. Você pode consultar o diagrama a seguir para o método de fiação.


cuidado

Tenha cuidado para não causar curto-circuito entre os terminais positivo e negativo e queimar a bateria e o equipamento durante a soldagem. Se a bateria estiver com carga, nunca a solde diretamente na placa, pois isso pode queimar a placa de circuito. Um curto-circuito enquanto o circuito estiver energizado representa um risco significativo; é recomendado usar um adaptador.

Exemplo de leitura da tensão da bateria

De acordo com o esquemático, o SGM40567-4.2XG/TR fornece carregamento para bateria de íon de lítio de célula única com uma corrente de carga de aproximadamente 200 mA. O Charge_LED pisca durante o carregamento.

A medição da tensão da bateria é controlada pelo chaveador de carga TPS22916CNYFPR através de PB2/VBAT_EN, reduzindo o consumo de energia em standby. A tensão da bateria é dividida por dois e medida através do pino ADC PB3/AIN11_VBAT.


A tensão da bateria é medida usando um circuito divisor de tensão com resistores. A tensão lida pelo ADC é metade da tensão real da bateria, portanto o software deve multiplicar a medição do ADC por 2 para obter a tensão real da bateria.

No core do Arduino, PB02 e PB03 são mapeados para os números de pino 31 e 32, respectivamente. Defina-os da seguinte forma:

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

// AIN11_VBAT on PB03
#define PIN_VBAT_ADC (32u)
Exemplo de leitura da bateria
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 aplicações de baixo consumo, desabilite BAT_EN após a conclusão da medição da tensão da bateria para reduzir o consumo de energia em repouso causado pelos resistores do divisor de tensão.

  • O Charge_LED pisca enquanto a bateria está carregando.

  • Resultado da medição da tensão da bateria: A tensão medida de uma bateria de íon de lítio pode diferir do valor nominal impresso na bateria. Sempre consulte o valor realmente medido.

Aplicação de exemplo

Recursos

XIAO SAMD21

Projeto de hardware

Projeto mecânico

Software e ferramentas

XIAO SAMD21 Plus

Projeto de hardware

Projeto mecânico

Recursos do curso

Suporte técnico e discussão sobre o produto

Obrigado por escolher nossos produtos! Estamos aqui para oferecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.

Loading Comments...