Saltar al contenido principal

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 nRF54L15Seeed Studio XIAO nRF54L15 Sense

Software​

tip

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 SenseSeeed Studio Grove Base for XIAOGrove – 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 SenseCH340G 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.

tip

Si no estás familiarizado con la distribución de pines del XIAO nRF54L15, haz clic en XIAO nRF54L15 Pin List para comprobarla.

precaución

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​

tip

Cableado

XIAO nRF54L15Módulo y adaptador CH340G USB a Serial (TTL)
RXTX
TXRX
GNDGND
VBUS5V

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 SenseGrove-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.

tip

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 SenseSeeed 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.

tip

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 SenseePaper Driver Board for Seeed Studio XIAO2.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=py a tools.python3.cmd.windows=python.
    • Cambia tools.python3.args.windows=-3 a tools.python3.args.windows=.

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.

Loading Comments...