Pular para o conteúdo principal

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

Software

dica

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

dica

Se você não estiver familiarizado com a distribuição dos pinos do XIAO nRF54L15, clique em XIAO nRF54L15 Pin List para verificar.

cuidado

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

dica

Fiação

XIAO nRF54L15Módulo&Adaptador CH340G USB para Serial (TTL)
RXTX
TXRX
GNDGND
VBUS5V

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

dica

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

dica

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

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.

Loading Comments...