Arduino para Seeed Studio XIAO nRF54L15
Este artigo é desenvolvido com base no XIAO nRF54L15 Sense com a plataforma Arduino.
Agradecimentos
Agradecimentos especiais ao desenvolvedor lolren por fornecer suporte de adaptação Arduino para o chip nRF54L15. Isso possibilita o desenvolvimento e a aplicação prática do XIAO nRF54L15 no ecossistema Arduino. Agradecemos também por seus esforços contínuos e contribuições para a construção do ecossistema de código aberto relacionado.
Introdução
Preparação de hardware
Antes de começar, prepare o hardware XIAO nRF54L15 ou XIAO nRF54L15 Sense.
| Seeed Studio XIAO nRF54L15 | Seeed Studio XIAO nRF54L15 Sense |
|---|---|
![]() | ![]() |
Software
Se esta é a sua primeira vez usando Arduino, recomendamos fortemente que você consulte Introdução ao Arduino.
-
Passo 1. Baixe e instale a versão estável da Arduino IDE de acordo com o seu sistema operacional.
-
Passo 2. Adicionar URL do Boards Manager
Abra File → Preferences

Adicione a URL para suporte ao XIAO nRF54L15 no campo Additional Boards Manager URLs.
https://raw.githubusercontent.com/lolren/nrf54-arduino-core/main/package_nrf54l15clean_index.json

- Passo 3. Selecione XIAO nRF54L15 / Sense e a porta serial

- Passo 4. Envie o programa
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, LOW);
delay(500);
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
}

Resultado:

Digital
Pinos digitais são interfaces do MCU para leitura e escrita de níveis lógicos alto/baixo, que podem adquirir dados externos e controlar dispositivos periféricos. Esta seção ilustra as funções dos pinos digitais implementando o controle de ligar/desligar LED e o efeito de luz respiratória por PWM.
Preparação de hardware
Você precisa preparar o XIAO nRF54L15 Sense e dispositivos Grove.
| Seeed Studio XIAO nRF54L15 Sense | Seeed Studio Grove Base for XIAO | Grove – Chainable RGB LED |
|---|---|---|
![]() | ![]() | ![]() |
Software
No repositório de lolren, os pinos D0 a D10 do XIAO nRF54L15 são redefinidos como PIN_D0 a PIN_D10.
void setup() {
pinMode(PIN_D0, OUTPUT);
}
void loop() {
digitalWrite(PIN_D0, LOW);
delay(500);
digitalWrite(PIN_D0, HIGH);
delay(500);
for (int i = 0; i <= 255; i++) {
analogWrite(PIN_D0, i); // The duty cycle increases gradually.
delay(5);
}
for (int i = 255; i >= 0; i--) {
analogWrite(PIN_D0, i); // The duty cycle decreases gradually.
delay(5);
}
}
Resultado
Conecte o Grove – Chainable RGB LED ao pino 0 da Seeed Studio Grove Base for XIAO. O Grove – Chainable RGB LED apresentará efeitos de piscagem e escurecimento gradual de luz respiratória.

UART
UART é um protocolo de comunicação assíncrono half-duplex, comumente usado para depuração de dispositivos, saída de logs e transmissão de dados. O XIAO nRF54L15 fornece um conjunto de pinos UART. Esta seção demonstra o uso de UART por meio da impressão de dados seriais.
Preparação de hardware
Você precisa preparar o XIAO nRF54L15 e o dispositivo CH340.
| Seeed Studio XIAO nRF54L15 Sense | Módulo&Adaptador CH340G USB para Serial (TTL) |
|---|---|
![]() | ![]() |
Software
No XIAO nRF54L15, D6 e D7 correspondem aos pinos TX e RX, respectivamente. No arquivo de redefinição de pinos de lolren, D6 e D7 são definidos como PIN_SERIAL1_RX e PIN_SERIAL1_TX. As portas seriais disponíveis para uso são Serial1 ou Serial2.
Se você não estiver familiarizado com a distribuição dos pinos do XIAO nRF54L15, clique em XIAO nRF54L15 Pin List para verificar.
Não use PIN_SERIAL1_RX e PIN_SERIAL1_TX para Serial (porta serial USB).
Isso interromperá os canais padrão de download e depuração e pode resultar em falha na gravação do programa (falha de SWD/CDC).
#define RX_PIN PIN_SERIAL1_RX
#define TX_PIN PIN_SERIAL1_TX
#define BAUD 115200
void setup() {
// Set RX and TX pins
Serial1.setPins(RX_PIN, TX_PIN);
// Initialize baud rate and communication configuration
Serial1.begin(BAUD, SERIAL_8N1);
}
void loop() {
Serial1.print("Hello XIAO nRF54L15!\n");
delay(1000);
}
Resultado
Fiação
| XIAO nRF54L15 | Módulo&Adaptador CH340G USB para Serial (TTL) |
|---|---|
| RX | TX |
| TX | RX |
| GND | GND |
| VBUS | 5V |
Abra qualquer ferramenta de monitor serial, defina a taxa de baud para 115200 e você poderá observar os dados de saída.

Analógico
Os pinos analógicos são usados para ler sinais de tensão contínuos por meio do ADC. Eles podem ser conectados a vários sensores, como potenciômetros, fotorresistores, termistores para detecção de temperatura, sensores analógicos de escala de cinza e sensores infravermelhos. Esta seção demonstra as funções dos pinos analógicos lendo o valor de ajuste de um botão de potenciômetro.
Preparação de hardware
Você precisa preparar o XIAO nRF54L15 Sense e dispositivos Grove.
| Seeed Studio XIAO nRF54L15 Sense | Grove-Rotary Angle Sensor | Seeed Studio Grove Base for XIAO |
|---|---|---|
![]() | ![]() | ![]() |
Software
Há quatro grupos de pinos analógicos no XIAO nRF54L15, nomeados de A0 a A3. Na redefinição de pinos fornecida por lolren, esses pinos são definidos como PIN_A0 a PIN_A3.
Se você não estiver familiarizado com a distribuição dos pinos do XIAO nRF54L15, clique em XIAO nRF54L15 Pin List para verificar.
const int analogPin = PIN_A0;
void setup() {
Serial.begin(115200);
analogReadResolution(12);
}
void loop() {
int analogValue = analogRead(analogPin);
// Assume reference voltage is 3.3V
int voltage_mv = analogValue * 3300 / 4095;
Serial.printf("ADC value = %d\n", analogValue);
Serial.printf("Voltage = %d mV\n", voltage_mv);
delay(1000);
}
Resultado
Conecte o Grove-Rotary Angle Sensor ao Seeed Studio Grove Base for XIAO.

Gire o botão e o Monitor Serial do Arduino imprimirá o valor de leitura do ADC e a tensão analógica convertida.

I2C
I2C é um protocolo de comunicação serial síncrono que permite a comunicação multi-dispositivo entre dispositivos mestre e escravo por meio da linha de clock SCL e da linha de dados SDA. O XIAO nRF54L15 / Sense fornece dois conjuntos de interfaces I2C. Esta seção demonstra as funções de I2C controlando o display OLED na Expansion Board Base for XIAO.
Preparação de hardware
Você precisa preparar o XIAO nRF54L15 Sense e dispositivos com interfaces I2C.
| Seeed Studio XIAO nRF54L15 Sense | Seeed Studio Expansion Board Base for XIAO |
|---|---|
![]() | ![]() |
Software
No XIAO nRF54L15, D4 e D5 servem respectivamente como os pinos SCL e SDA. No framework lolren, o pino D4 é redefinido como PIN_WIRE_SCL, e o pino D5 é redefinido como PIN_WIRE_SDA.
Se você não estiver familiarizado com a distribuição dos pinos do XIAO nRF54L15, clique em XIAO nRF54L15 Pin List para verificar.
#include <U8x8lib.h>
#include <Wire.h>
#define SCL PIN_WIRE_SCL
#define SDA PIN_WIRE_SDA
U8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(/* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); // OLEDs without Reset of the Display
void setup(void) {
u8x8.begin();
u8x8.setFlipMode(0);
}
void loop(void) {
u8x8.setFont(u8x8_font_chroma48medium8_r);
u8x8.setCursor(2, 10);
u8x8.print("Hello World!");
u8x8.setCursor(1, 28);
u8x8.print("XIAO nRF54L15!");
}
Resultado
Após enviar o programa, as frases "Hello World!" e "XIAO nRF54L15!" serão exibidas na Expansion Board Base for XIAO.

SPI
SPI é um protocolo de comunicação serial síncrono e full-duplex. Geralmente usa quatro fios — clock SCK, MOSI, MISO e CS — para alcançar transmissão de dados em alta velocidade entre dispositivos mestre e escravo. Em comparação com I2C, o SPI apresenta uma taxa de transmissão mais alta, menor latência e comunicação mais simples e direta. No entanto, ele requer mais pinos, e cada dispositivo escravo geralmente ocupa uma linha de seleção de chip independente. É comumente usado para conectar periféricos de alta velocidade, como memória Flash, cartões SD, displays LCD/OLED, módulos ADC/DAC e sensores de alta velocidade. Esta seção demonstra o uso de SPI conectando um display de papel eletrônico.
Preparação de hardware
Você precisa preparar um XIAO nRF54L15 e um dispositivo que suporte comunicação SPI.
| Seeed Studio XIAO nRF54L15 Sense | ePaper Driver Board for Seeed Studio XIAO | 2.9" Monochrome eInk |
|---|---|---|
![]() | ![]() | ![]() |
Software
- Instale a biblioteca GxEPD2

Modifique e defina por macro os pinos SPI de acordo com o arquivo de redefinição de pinos do Lolren.
#include <Arduino.h>
#include <SPI.h>
#include <GxEPD2_BW.h>
#include <Fonts/FreeMonoBold9pt7b.h>
#include <Fonts/FreeMonoBold12pt7b.h>
// -------- Pin Definitions (from pins_arduino.h) --------
// PIN_D0=RST, PIN_D1=CS, PIN_D3=DC, PIN_D5=BUSY
// SPI: SCK=PIN_D8, MISO=PIN_D9, MOSI=PIN_D10 (macros are already defined)
#define EPD_RST PIN_D0 // 0
#define EPD_CS PIN_D1 // 1
#define EPD_DC PIN_D3 // 3
#define EPD_BUSY PIN_D2 // 5
// -------- 029BN-T94-D2 Driver --------
GxEPD2_BW<GxEPD2_290_T94_V2, GxEPD2_290_T94_V2::HEIGHT> display(
GxEPD2_290_T94_V2(EPD_CS, EPD_DC, EPD_RST, EPD_BUSY)
);
const char* LINE1 = "Hello XIAO nRF54L15";
void setup() {
Serial.begin(115200);
delay(2000);
Serial.println("=== EPaper Start ===");
// Close serial port to avoid TX(D1) interfering with CS(D1)
delay(100);
Serial.end();
// Directly specify using macros, fully consistent with pins_arduino.h
SPI.setPins(PIN_SPI_SCK, PIN_SPI_MISO, PIN_SPI_MOSI, -1);
SPI.begin();
// Pass 0 to disable GxEPD2 internal serial debug output
display.init(0);
display.setRotation(1); // Landscape 296×128
display.setTextColor(GxEPD_BLACK);
display.setFullWindow();
display.firstPage();
do {
display.fillScreen(GxEPD_WHITE);
// ---- LINE1: Large font, upper half ----
display.setFont(&FreeMonoBold12pt7b);
int16_t tbx, tby;
uint16_t tbw, tbh;
display.getTextBounds(LINE1, 0, 0, &tbx, &tby, &tbw, &tbh);
uint16_t x1 = (display.width() - tbw) / 2 - tbx;
uint16_t y1 = display.height() / 2 - 4;
display.setCursor(x1, y1);
display.print(LINE1);
} while (display.nextPage());
display.hibernate();
// Reopen serial port for confirmation after screen refresh
Serial.begin(115200);
delay(100);
Serial.println("=== Done ===");
}
void loop() {
delay(1000000);
}
Resultado
Após enviar o programa, Hello XIAO nRF54L15 será exibido na tela de papel eletrônico.

FAQ
-
P1: Ao enviar o programa, é exibido um aviso informando que não há caminho para py.
-
R: C:\Users\yourname\AppData\Local\Arduino15\packages\nrf54l15clean\hardware\nrf54l15clean\0.6.27\platform.txt.
- Altere
tools.python3.cmd.windows=pyparatools.python3.cmd.windows=python. - Altere
tools.python3.args.windows=-3paratools.python3.args.windows=.
- Altere
Suporte Técnico e Discussão de Produtos
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.









