Arduino para Seeed Studio XIAO nRF54L15
Este artículo se desarrolla sobre la base del XIAO nRF54L15 Sense con la plataforma Arduino.
Agradecimientos
Un agradecimiento especial al desarrollador lolren por proporcionar soporte de adaptación de Arduino para el chip nRF54L15. Esto permite el desarrollo y la aplicación práctica del XIAO nRF54L15 en el ecosistema de Arduino. También se expresa gratitud por sus continuos esfuerzos y contribuciones a la construcción ecológica de código abierto relacionada.
Introducción
Preparación de hardware
Antes de comenzar, prepara el hardware XIAO nRF54L15 o XIAO nRF54L15 Sense.
| Seeed Studio XIAO nRF54L15 | Seeed Studio XIAO nRF54L15 Sense |
|---|---|
![]() | ![]() |
Software
Si es la primera vez que usas Arduino, te recomendamos encarecidamente que consultes Getting Started with Arduino.
-
Paso 1. Descarga e instala la versión estable de Arduino IDE de acuerdo con tu sistema operativo.
-
Paso 2. Añadir la URL del Gestor de placas
Abre File → Preferences

Añade la URL para el soporte de XIAO nRF54L15 en el campo Additional Boards Manager URLs.
https://raw.githubusercontent.com/lolren/nrf54-arduino-core/main/package_nrf54l15clean_index.json

- Paso 3. Selecciona XIAO nRF54L15 / Sense y el puerto serie

- Paso 4. Sube el programa
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, LOW);
delay(500);
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
}

Resultado:

Digital
Los pines digitales son interfaces del MCU para leer y escribir niveles lógicos alto/bajo, que pueden adquirir datos externos y controlar dispositivos periféricos. Esta sección ilustra las funciones de los pines digitales implementando el control de encendido y apagado de un LED y el efecto de luz respiratoria PWM.
Preparación de hardware
Necesitas preparar el XIAO nRF54L15 Sense y los dispositivos Grove.
| Seeed Studio XIAO nRF54L15 Sense | Seeed Studio Grove Base for XIAO | Grove – Chainable RGB LED |
|---|---|---|
![]() | ![]() | ![]() |
Software
En el repositorio de lolren, los pines D0 a D10 del XIAO nRF54L15 se redefinen 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
Conecta el Grove – Chainable RGB LED al Pin 0 del Seeed Studio Grove Base for XIAO. El Grove – Chainable RGB LED presentará efectos de parpadeo y atenuación gradual tipo respiración.

UART
UART es un protocolo de comunicación asíncrono half-dúplex, comúnmente utilizado para depuración de dispositivos, salida de registros y transmisión de datos. El XIAO nRF54L15 proporciona un conjunto de pines UART. Esta sección demuestra el uso de UART mediante la impresión de datos por serie.
Preparación de hardware
Necesitas preparar el XIAO nRF54L15 y el dispositivo CH340.
| Seeed Studio XIAO nRF54L15 Sense | CH340G USB to Serial (TTL) Module&Adapter |
|---|---|
![]() | ![]() |
Software
En el XIAO nRF54L15, D6 y D7 corresponden respectivamente a los pines TX y RX. En el archivo de redefinición de pines de lolren, D6 y D7 se definen como PIN_SERIAL1_RX y PIN_SERIAL1_TX. Los puertos serie disponibles para usar son Serial1 o Serial2.
Si no estás familiarizado con la distribución de pines del XIAO nRF54L15, haz clic en XIAO nRF54L15 Pin List para comprobarla.
No utilices PIN_SERIAL1_RX y PIN_SERIAL1_TX para Serial (puerto serie USB).
Esto interrumpirá los canales predeterminados de descarga y depuración, y puede provocar un fallo en la grabación del programa (mal funcionamiento 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
Cableado
| XIAO nRF54L15 | Módulo y adaptador CH340G USB a Serial (TTL) |
|---|---|
| RX | TX |
| TX | RX |
| GND | GND |
| VBUS | 5V |
Abre cualquier herramienta de monitor serie, configura la velocidad en baudios a 115200 y podrás observar los datos de salida.

Analógico
Los pines analógicos se utilizan para leer señales de voltaje continuas a través del ADC. Se pueden conectar a varios sensores como potenciómetros, fotorresistencias, termistores para detección de temperatura, sensores analógicos de escala de grises y sensores infrarrojos. Esta sección demuestra las funciones de los pines analógicos leyendo el valor de ajuste de la perilla de un potenciómetro.
Preparación de hardware
Necesitas preparar el XIAO nRF54L15 Sense y dispositivos Grove.
| Seeed Studio XIAO nRF54L15 Sense | Grove-Rotary Angle Sensor | Seeed Studio Grove Base for XIAO |
|---|---|---|
![]() | ![]() | ![]() |
Software
Hay cuatro grupos de pines analógicos en el XIAO nRF54L15, a saber, de A0 a A3. En la redefinición de pines proporcionada por lolren, estos pines se definen como PIN_A0 a PIN_A3.
Si no estás familiarizado con la distribución de pines del XIAO nRF54L15, haz clic en XIAO nRF54L15 Pin List para comprobarla.
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
Conecta el Grove-Rotary Angle Sensor a la Seeed Studio Grove Base for XIAO.

Gira la perilla y el Monitor Serie de Arduino imprimirá el valor de lectura del ADC y el voltaje analógico convertido.

I2C
I2C es un protocolo de comunicación serie síncrono que permite la comunicación multidispositivo entre dispositivos maestro y esclavo a través de la línea de reloj SCL y la línea de datos SDA. El XIAO nRF54L15 / Sense proporciona dos conjuntos de interfaces I2C. Esta sección demuestra las funciones de I2C controlando la pantalla OLED en la Expansion Board Base for XIAO.
Preparación de hardware
Necesitas preparar el XIAO nRF54L15 Sense y dispositivos con interfaces I2C.
| Seeed Studio XIAO nRF54L15 Sense | Seeed Studio Expansion Board Base for XIAO |
|---|---|
![]() | ![]() |
Software
En el XIAO nRF54L15, D4 y D5 sirven como los pines SCL y SDA respectivamente. En el framework de lolren, el pin D4 se redefine como PIN_WIRE_SCL, y el pin D5 se redefine como PIN_WIRE_SDA.
Si no estás familiarizado con la distribución de pines del XIAO nRF54L15, haz clic en XIAO nRF54L15 Pin List para comprobarla.
#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
Después de cargar el programa, las frases "Hello World!" y "XIAO nRF54L15!" se mostrarán en la Expansion Board Base for XIAO.

SPI
SPI es un protocolo de comunicación serie síncrono y full-dúplex. Generalmente utiliza cuatro cables — reloj SCK, MOSI, MISO y CS — para lograr una transmisión de datos de alta velocidad entre dispositivos maestro y esclavo. En comparación con I2C, SPI ofrece una mayor velocidad de transmisión, menor latencia y una comunicación más simple y directa. Sin embargo, requiere más pines, y cada dispositivo esclavo suele ocupar una línea de selección de chip independiente. Se utiliza comúnmente para conectar periféricos de alta velocidad como memorias Flash, tarjetas SD, pantallas LCD/OLED, módulos ADC/DAC y sensores de alta velocidad. Esta sección demuestra el uso de SPI conectando una pantalla de papel electrónico.
Preparación de hardware
Necesitas preparar un XIAO nRF54L15 y un dispositivo que admita comunicación SPI.
| Seeed Studio XIAO nRF54L15 Sense | ePaper Driver Board for Seeed Studio XIAO | 2.9" Monochrome eInk |
|---|---|---|
![]() | ![]() | ![]() |
Software
- Instala la biblioteca GxEPD2

Modifica y define mediante macros los pines SPI según el archivo de redefinición de pines de 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
Después de cargar el programa, Hello XIAO nRF54L15 se mostrará en la pantalla de papel electrónico.

Preguntas frecuentes
-
P1: Al cargar el programa, aparece un mensaje indicando que no hay ruta para py.
-
R: C:\Users\yourname\AppData\Local\Arduino15\packages\nrf54l15clean\hardware\nrf54l15clean\0.6.27\platform.txt.
- Cambia
tools.python3.cmd.windows=pyatools.python3.cmd.windows=python. - Cambia
tools.python3.args.windows=-3atools.python3.args.windows=.
- Cambia
Soporte técnico y debate sobre el producto
Gracias por elegir nuestros productos. Estamos aquí para ofrecerte diferentes tipos de soporte y garantizar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para adaptarnos a distintas preferencias y necesidades.









