Skip to main content

Primeros pasos con Seeed Studio XIAO nRF52840 Serie

XIAO nRF52840XIAO nRF52840 SenseXIAO nRF52840 PlusXIAO nRF52840 Sense Plus

Como el primer producto inalámbrico de la familia Seeed Studio XIAO, Seeed Studio XIAO nRF52840 está equipado con un potente Nordic nRF52840 MCU que integra conectividad Bluetooth 5.0. Al mismo tiempo, tiene un factor de forma pequeño y exquisito que puede utilizarse para dispositivos wearables y proyectos de Internet de las Cosas. El diseño montable en superficie por un solo lado y la antena Bluetooth integrada pueden facilitar en gran medida el despliegue rápido de proyectos de IoT.

Además, hay una versión avanzada de esta placa, Seeed Studio XIAO nRF52840 Sense. Está integrada con dos sensores adicionales a bordo. Uno de ellos es un micrófono digital de Modulación por Densidad de Pulsos (PDM). Puede recibir datos de audio en tiempo real, lo que permite utilizarlo para reconocimiento de audio. El otro es una Unidad de Medición Inercial (IMU) de 6 ejes, esta IMU puede ser muy útil en proyectos de TinyML como el reconocimiento de gestos. Estos sensores integrados proporcionan una gran comodidad a los usuarios mientras que la placa es ultra pequeña.

Las recién actualizadas XIAO nRF52840 Plus y XIAO nRF52840 Sense Plus proporcionan aumentos considerables en funcionalidad y usabilidad. El número de pines multifunción se ha incrementado a 20, se han añadido recursos I2S y SPI para soportar proyectos más complejos, se han expuesto los pines NFC para una integración más sencilla en aplicaciones de IoT y tarjetas inteligentes, y el pin BAT se ha recolocado para una mejor comodidad de soldadura, dando como resultado una experiencia de hardware más fácil de usar.

En comparación con Seeed Studio XIAO RP2040, Seeed Studio XIAO nRF52840 contiene interfaces más ricas. Lo primero a destacar es que la interfaz de Comunicación de Campo Cercano (NFC) es funcional en la placa. En segundo lugar, hay un pequeño botón de reinicio en el lateral de la interfaz Type-C. En el otro lado, hay un LED 3 en 1 (User LED) junto con un Charge LED para indicar el estado de carga cuando se conecta una batería. Hay 11 E/S digitales que pueden utilizarse como pines PWM y 6 E/S analógicas que pueden utilizarse como pines ADC. Es compatible con las tres interfaces serie más comunes como UART, I2C y SPI. Al igual que Seeed Studio XIAO RP2040, tiene una flash integrada de 2 MB lo que significa que también se puede programar usando Arduino, MicroPython, CircuitPython u otros lenguajes de programación.

Seeed Studio XIAO nRF52840 Sense es compatible con la placa de expansión Seeed Studio XIAO.

Características

  • Potentes capacidades inalámbricas: Bluetooth 5.0 con antena integrada
  • CPU potente: Nordic nRF52840, procesador ARM® Cortex®-M4 de 32 bits con FPU, 64 MHz
  • Ultra bajo consumo: el consumo de energía en espera es inferior a 5μA
  • Chip de carga de batería: admite la gestión de carga y descarga de baterías de litio
  • Flash integrada de 2 MB
  • Micrófono PDM integrado (solo en Seeed Studio XIAO nRF52840 Sense)
  • IMU LSM6DS3TR-C de 6 ejes integrada (solo en Seeed Studio XIAO nRF52840 Sense)
  • Tamaño ultra pequeño: 21 x 17.8mm, factor de forma clásico de la serie Seeed Studio XIAO para dispositivos wearables
  • Interfaces ricas: 1xUART, 1xI2C, 1xSPI, 1xNFC, 1xSWD, 11xGPIO(PWM), 6xADC en XIAO nRF52840 (Sense); y 2xUART, 1xI2C, 2xSPI, 1xI2S, 1xNFC, 1xSWD, 18xGPIO(PWM), 6xADC en XIAO nRF52840 (Sense) Plus
  • Componentes en un solo lado, diseño de montaje en superficie

Comparación de especificaciones

ElementoSeeed Studio XIAO nRF52840Seeed Studio XIAO nRF52840 SenseSeeed Studio XIAO nRF52840 PlusSeeed Studio XIAO nRF52840 Sense Plus
ProcesadorNordic nRF52840, procesador ARM® Cortex®-M4 de 32 bits con FPU, 64 MHz
Conectividad inalámbricaBluetooth Low Energy 5.4/ Bluetooth Mesh/NFC
Memoria256 KB RAM,1MB Flash 2MB onboard Flash
Sensores integradosN/AIMU de 6 DOF (LSM6DS3TR-C), micrófono PDMN/AIMU de 6 DOF (LSM6DS3TR-C), micrófono PDM
Interfaces1xI2C, 1xUART, 1xSPI1xI2C, 2xUART, 2xSPI, 1xI2S
Pines PWM/Analógicos 11/620/6
Botones integradosBotón de reinicio
LEDs integradosLED 3 en 1/ Charge LED
Chip de carga de bateríaBQ25101
Lenguajes de programaciónArduino/ MicroPython/ CircuitPython

Descripción general del hardware

Diagrama de indicación frontal de XIAO nRF52840/XIAO nRF52840 Sense
Diagrama de indicación trasera de XIAO nRF52840/XIAO nRF52840 Sense
Lista de pines de XIAO nRF52840/XIAO nRF52840 Sense

Mapa de pines

Pin XIAOFunciónPin del chipDescripciónArduino Name
5VVBUSEntrada/Salida de alimentación
GND
3V33V3_OUTSalida de alimentación
D0AnalogP0.02GPIO, AIN00
D1AnalogP0.03GPIO, AIN11
D2AnalogP0.28GPIO, AIN42
D3AnalogP0.29GPIO, AIN53
D4Analog,SDAP0.04GPIO, datos I2C, AIN24
D5Analog,SCLP0.05GPIO, reloj I2C, AIN35
D6TXP1.11GPIO, transmisión UART7/6
D7RXP1.12GPIO, recepción UART8/7
D8SPI_SCKP1.13GPIO, reloj SPI9/8
D9SPI_MISOP1.14GPIO, datos SPI10/9
D10SPI_MOSIP1.15GPIO, datos SPI11/10
NFC1P0.09NFC
NFC2P0.10NFC
ResetP0.18RESET
ADC_BATP0.14Leer el valor de voltaje de BAT
6 DOF IMU_PWRP1.08interruptor de alimentación del módulo 6D
6 DOF IMU__INT1P0.11pin de señal de interrupción del módulo 6D
PDM Microphone_DATAP0.16pin de entrada de datos de audio PDM
PDM Microphone_CLKP1.00pin de salida de reloj de audio PDM
RF Switch Port SelectP2.05conmutar antena integrada
RF Switch PowerP2.03Alimentación
CHARGE_LEDP0.17CHG-LED_Red
USER_LED_RP0.26pin de LED RGB rojo controlado por el usuario11
USER_LED_BP0.06pin de LED RGB azul controlado por el usuario13/12
USER_LED_GP0.30pin de LED RGB verde controlado por el usuario12/13

Dos bibliotecas de Arduino

Seeed Studio XIAO nRF52840 integra muchas funciones en una sola placa diminuta y, a veces, puede que no las ejecute de la mejor manera. Por lo tanto, Seeed ha publicado dos bibliotecas de Arduino para maximizar la potencia de cada función. Por lo tanto:

  • Se recomienda usar la biblioteca Seeed nRF52 Boards si quieres aplicar la función Bluetooth y la "Low Energy Cost Function".
  • Se recomienda usar la biblioteca Seeed nRF52 mbed-enabled Boards si quieres usarla en aplicaciones de Machine Learning embebido o aplicar la "IMU & PDM advanced function".
  • Ambas bibliotecas ofrecen muy buen soporte cuando se trata del uso básico, como LED, Digital, Analog, Serial, I2C, SPI.

La definición de pines admitida por estas dos bibliotecas puede ser un poco diferente y Seeed seguirá actualizando la wiki hasta que quede claro.

tip
  1. Si utilizas el paquete integrado de Seeed nRF52 Boards, es posible que la función Serial no se compile. La solución es añadir la línea #include <Adafruit_TinyUSB.h> en tu código. Puedes descargar este paquete desde: https://github.com/adafruit/Adafruit_TinyUSB_Arduino

  2. Si prefieres un enfoque más sencillo, puedes elegir Seeed nRF52 mbed-enabled Boards desde el principio. Admite la compilación de la función Serial sin necesidad de modificaciones adicionales.

Primeros pasos

Primero, vamos a conectar la Seeed Studio XIAO nRF52840 (Sense) al ordenador y cargar un código sencillo desde Arduino IDE para comprobar si la placa funciona correctamente.

Configuración de hardware

Necesitas preparar lo siguiente:

tip

Algunos cables USB solo pueden suministrar alimentación y no pueden transferir datos. Si no tienes un cable USB o no sabes si tu cable USB puede transmitir datos, puedes consultar Seeed USB Type-C support USB 3.1.

Conecta la Seeed Studio XIAO nRF52840 (Sense) a tu ordenador mediante un cable USB tipo C.

pir

Configuración de software

  • Paso 1. Descarga e instala la última versión de Arduino IDE según tu sistema operativo

pir

  • Paso 2. Inicia la aplicación Arduino

  • Paso 3. Añade el paquete de placa Seeed Studio XIAO nRF52840 (Sense) a tu Arduino IDE

Ve a File > Preferences y rellena "Additional Boards Manager URLs" con la siguiente URL: https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json

pir

Ve a Tools > Board > Boards Manager..., escribe la palabra clave "seeed nrf52" en el cuadro de búsqueda, selecciona la última versión de la placa que desees e instálala. Puedes instalar ambas.

pir

  • Paso 4. Selecciona tu placa y puerto

Placa

Después de instalar el paquete de placa, ve a Tools > Board y elige la placa que desees, continúa seleccionando "Seeed XIAO nRF52840 Sense". Ahora hemos terminado de configurar la Seeed Studio XIAO nRF52840 (Sense) para Arduino IDE.

pir

Puerto

Ve a Tools > Port y selecciona el nombre del puerto serie de la Seeed Studio XIAO nRF52840 (Sense) conectada. Probablemente será COM3 o superior (COM1 y COM2 suelen estar reservados para puertos serie de hardware). El puerto serie de la Seeed Studio XIAO nRF52840 (Sense) conectada suele contener entre paréntesis Seeed Studio XIAO nRF52840 para Seeed Studio XIAO nRF52840 o Seeed Studio XIAO nRF52840 Sense para Seeed Studio XIAO nRF52840 Sense.

pir

  • Paso 5. Ve a File > Examples > 01.Basics > Blink para abrir el ejemplo Blink

pir

  • Paso 6. Haz clic en el botón Upload para cargar el código de ejemplo Blink en la placa

pir

Una vez cargado, verás el LED rojo integrado parpadeando con un retardo de 1 segundo entre cada parpadeo. Esto significa que la conexión es correcta y ahora puedes explorar más proyectos con la Seeed Studio XIAO nRF52840 (Sense).

Jugar con el LED integrado 3 en 1

Seeed Studio XIAO nRF52840 (Sense) tiene un LED integrado 3 en 1 que es programable por el usuario. Ahora aprenderás cómo controlar los colores RGB uno por uno usando Arduino.

Primero tienes que entender que el comportamiento de este LED no es el habitual cuando se controla mediante código. El LED se ENCIENDE cuando damos una señal LOW y se APAGA cuando damos una señal HIGH. Esto se debe a que este LED se controla mediante un ánodo común y solo se iluminará con una señal de nivel bajo.

Un código de ejemplo sería:

void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
digitalWrite(LED_BUILTIN, HIGH);
}

Aquí, aunque se use HIGH, el LED estará APAGADO. Necesitas reemplazar HIGH por LOW para ENCENDER el LED.

Consulta las siguientes asignaciones de pines de los LED y úsalas en tus códigos:

  • LED rojo = LED_BUILTIN o LED_RED
  • LED azul = LED_BLUE
  • LED verde = LED_GREEN

Verificación del consumo de energía

La Seeed Studio XIAO nRF52840 tiene un bajo consumo de energía y aquí proporcionamos un método para verificarlo. Se recomienda encarecidamente usar la biblioteca Seeed nRF52 Boards aquí.

note

Si estás usando el firmware de fábrica de la Seeed Studio XIAO nRF52840 o nunca has hecho cambios en el firmware de la Seeed Studio XIAO nRF52840, puedes omitir este paso.

  • Paso 2. Usa la biblioteca Seeed nRF52 Boards aquí.

pir

  • Paso 3. Carga la demo deep_sleep aquí y ejecútala con Arduino
// The MIT License (MIT)
// Copyright (c) 2019 Ha Thach for Adafruit Industries

#include "SdFat.h"
#include "Adafruit_SPIFlash.h"

// Uncomment to run example with custom SPI and SS e.g with FRAM breakout
// #define CUSTOM_CS A5
// #define CUSTOM_SPI SPI

#if defined(CUSTOM_CS) && defined(CUSTOM_SPI)
Adafruit_FlashTransport_SPI flashTransport(CUSTOM_CS, CUSTOM_SPI);

#elif defined(ARDUINO_ARCH_ESP32)
// ESP32 use same flash device that store code.
// Therefore there is no need to specify the SPI and SS
Adafruit_FlashTransport_ESP32 flashTransport;

#else
// On-board external flash (QSPI or SPI) macros should already
// defined in your board variant if supported
// - EXTERNAL_FLASH_USE_QSPI
// - EXTERNAL_FLASH_USE_CS/EXTERNAL_FLASH_USE_SPI
#if defined(EXTERNAL_FLASH_USE_QSPI)
Adafruit_FlashTransport_QSPI flashTransport;

#elif defined(EXTERNAL_FLASH_USE_SPI)
Adafruit_FlashTransport_SPI flashTransport(EXTERNAL_FLASH_USE_CS, EXTERNAL_FLASH_USE_SPI);

#else
#error No QSPI/SPI flash are defined on your board variant.h !
#endif
#endif

Adafruit_SPIFlash flash(&flashTransport);


/* If you want to use a specific flash device, for example for a custom built board, first look for it in Adafruit_SPIFlash\src\flash_devices.h
* If it isn't in there you need to create your own definition like the W25Q80DLX_EXAMPLE example below.
* These definitions need to be edited to match information on the data sheet of the flash device that you want to use.
* If you are not sure what the manufacture ID, memory type and capacity values should be, try running the sketch anyway and look at the serial output
* The flash device will report these values to you as a single hexadecimal value (the JDEC ID)
* For example, the first device on the list - the W25Q80DLX - will report its JDEC ID as 0xef4014, which is made of these three values:
* manufacturer_id = 0xef
* memory_type = 0x40
* capacity = 0x14
* With this macro properly defined you can then create an array of device definitions as shown below, this can include any from the list of devices in flash_devices.h, and any you define yourself here
* You need to update the variable on line 71 to reflect the number of items in the array
* You also need to uncomment line 84 and comment out line 81 so this array will be passed to the flash memory driver.
*/
//Example of a user defined flash memory device:
//#define W25Q80DLX_EXAMPLE \
// { \
// .total_size = (1 << 20), /* 1 MiB */ \
// .start_up_time_us = 5000, .manufacturer_id = 0xef, \
// .memory_type = 0x40, .capacity = 0x14, .max_clock_speed_mhz = 80, \
// .quad_enable_bit_mask = 0x02, .has_sector_protection = false, \
// .supports_fast_read = true, .supports_qspi = true, \
// .supports_qspi_writes = false, .write_status_register_split = false, \
// .single_status_byte = false, .is_fram = false, \
// }

/*
* Create an array of data structures and fill it with the settings we defined above.
* We are using two devices, but more can be added if you want.
*/
//static const SPIFlash_Device_t my_flash_devices[] = {
// W25Q80DLX_EXAMPLE,
//};
/*
* Specify the number of different devices that are listed in the array we just created. If you add more devices to the array, update this value to match.
*/
//const int flashDevices = 1;


#include <bluefruit.h>

bool deepPowerDown(Adafruit_SPIFlash& flash, Adafruit_FlashTransport& transport) {
uint32_t id_before = flash.getJEDECID();

transport.begin();
transport.runCommand(0xB9); // SPI deep power-down command
delay(10);

uint32_t id_after = flash.getJEDECID();

return (id_after == 0xFFFFFF || id_after == 0xFFFFFFFF);
}

void setup() {
flash.begin();
Bluefruit.begin();

if (!deepPowerDown(flash, flashTransport)) {
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
while (1) {
yield();
}
}

flash.end();

sd_power_system_off();
}

void loop() {
// nothing to do
}
tip

Aquí nos gustaría expresar nuestro especial agradecimiento al autor por proporcionar el código → daCoder

Si quieres conocer información más detallada sobre este ejemplo, haz clic Here

Corriente de carga de la batería

La corriente de carga de la batería se puede seleccionar como 50 mA o 100 mA, donde puedes configurar Pin13 en alto o bajo para cambiarla a 50 mA o 100 mA. La corriente de carga baja está en el modo de entrada configurado como HIGH LEVEL y la corriente de carga alta está en el modo de salida configurado como LOW LEVEL.

Corriente de carga baja

void setup(){
pinMode (P0_13, OUTPUT);
}
void loop() {
digitalWrite(P0_13, HIGH);
}

Corriente de carga alta

void setup(){
pinMode (P0_13, OUTPUT);
}
void loop() {
digitalWrite(P0_13, LOW);
}

Acceder a los pines SWD para depuración y regrabación del bootloader

Hardware necesario

Software necesario

Es necesario descargar el software Segger desde el sitio web.

  • Paso 1. Usa Jlink para conectar los pines siguientes:

pir

  • Paso 2. Inicia J-Flash y busca nRF52840, creando un nuevo proyecto:

pir

  • Paso 3. Haz clic en "Target" y luego selecciona "Connect".

pir

  • Paso 4. Arrastra el archivo bin o archivo hex al software. Luego presiona F4 y F5 en ese orden. La regrabación habrá finalizado.

Preguntas frecuentes (FAQ)

P1: Mi Arduino IDE se queda bloqueado al cargar código en la placa

Primero puedes intentar resetear la placa haciendo clic una vez en el "Reset Button". Si eso no funciona, haz clic rápidamente dos veces para entrar en bootloader mode. Si eso tampoco funciona, desconecta la placa del PC y vuelve a conectarla.

P2: Mi placa no aparece como dispositivo serie en Arduino IDE

Primero puedes intentar resetear la placa haciendo clic una vez en el "Reset Button". Si eso no funciona, haz clic rápidamente dos veces para entrar en bootloader mode.

P3: ¿Cuáles son las consideraciones al usar XIAO nRF52840 (Sense) para la carga de la batería?

Cuando P0.14 (D14) desactiva la función ADC a un nivel alto de 3.3V, P0.31 estará en el límite de voltaje de entrada de 3.6V. Existe el riesgo de quemar el pin P0.31.

Actualmente, para este problema, recomendamos que los usuarios no desactiven la función ADC de P0.14 (D14) ni configuren P0.14 (D14) a nivel alto durante la carga de la batería.

pir

P4: ¿Cómo se comporta la luz verde cuando se enciende?

Esquema RGB nRF52840

El pin P0.17 se utiliza para controlar el comportamiento de la luz indicadora verde, indicando el estado de carga:

  • Nivel bajo: cuando la carga está en curso.
  • Nivel alto: cuando la batería no se está cargando o está completamente cargada.

Cuando está en nivel bajo, el LED RED_CHG se encenderá.

Para más detalles, consulta la hoja de datos del PMIC: BQ25100 y la hoja de datos de XIAO nRF52840.

Recursos

Seeed Studio XIAO nRF52840

Diseño de hardware

Diseño mecánico

Seeed Studio XIAO nRF52840 Sense

Diseño de hardware

Diseño mecánico

Otros

Seeed Studio XIAO nRF52840 (Sense) Plus

Diseño de hardware

Diseño mecánico

Recursos del curso

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 diferentes preferencias y necesidades.

Loading Comments...