Primeros Pasos con la Serie Seeed Studio XIAO nRF52840
XIAO nRF52840 | XIAO nRF52840 Sense | XIAO nRF52840 Plus | XIAO nRF52840 Sense Plus |
---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Como el primer producto inalámbrico en la familia Seeed Studio XIAO, Seeed Studio XIAO nRF52840 está equipado con un potente MCU Nordic nRF52840 que integra conectividad Bluetooth 5.0. Mientras tanto, tiene un factor de forma pequeño y exquisito que puede ser usado para dispositivos portátiles y proyectos de Internet de las Cosas. El diseño montable en superficie de un solo lado y la antena Bluetooth integrada pueden facilitar enormemente el despliegue rápido de proyectos IoT.
Además, existe 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 de Densidad de Pulsos (PDM). Puede recibir datos de audio en tiempo real lo que le permite ser usado para reconocimiento de audio. El otro es una Unidad de Medición Inercial (IMU) de 6 ejes, este IMU puede ser muy útil en proyectos de TinyML como reconocimiento de gestos. Estos sensores integrados proporcionan una gran conveniencia para los usuarios mientras la placa es ultra-pequeña.
Los recién actualizados XIAO nRF52840 Plus y XIAO nRF52840 Sense Plus proporcionan aumentos considerables en funcionalidad y usabilidad. El número de pines multifuncionales se ha incrementado a 20, se han añadido recursos I2S y SPI para soportar proyectos más complejos, se han expuesto pines NFC para una integración más fácil en aplicaciones IoT y de tarjetas inteligentes, y el pin BAT ha sido reposicionado para una mejor conveniencia de soldadura, resultando en una experiencia de hardware más amigable para el usuario.
Comparado con Seeed Studio XIAO RP2040, Seeed Studio XIAO nRF52840 contiene interfaces más ricas. Lo primero a notar 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 reset en el lado de la interfaz Type-C. En el otro lado, hay un LED 3-en-uno (LED de Usuario) junto con un LED de Carga para indicar el estado de carga cuando una batería está conectada. Hay 11 E/S digitales que pueden ser usadas como pines PWM y 6 E/S analógicas que pueden ser usadas como pines ADC. Soporta las tres interfaces seriales comunes como UART, I2C, y SPI. Igual que Seeed Studio XIAO RP2040, tiene una flash integrada de 2 MB lo que significa que también puede ser programada 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
- Capacidades inalámbricas potentes: 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 menor a 5μA
- Chip de carga de batería: Soporta gestión de carga y descarga de batería de litio
- Flash integrada de 2 MB
- Micrófono PDM integrado (solo en Seeed Studio XIAO nRF52840 Sense)
- IMU LSM6DS3TR-C de 6 ejes integrado (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 portátiles
- 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 de un solo lado, diseño de montaje en superficie
Comparación de especificaciones
Elemento | Seeed Studio XIAO nRF52840 | Seeed Studio XIAO nRF52840 Sense | Seeed Studio XIAO nRF52840 Plus | Seeed Studio XIAO nRF52840 Sense Plus |
---|---|---|---|---|
Procesador | Nordic nRF52840, procesador ARM® Cortex®-M4 de 32 bits con FPU, 64 MHz | |||
Conectividad Inalámbrica | Bluetooth LE 5.2/NFC | |||
Memoria | 256 KB RAM, 1MB Flash 2MB Flash integrada | |||
Sensores Integrados | N/A | 6 DOF IMU (LSM6DS3TR-C), Micrófono PDM | N/A | 6 DOF IMU (LSM6DS3TR-C), Micrófono PDM |
Interfaces | 1xI2C, 1xUART, 1xSPI | 1xI2C, 2xUART, 2xSPI, 1xI2S | ||
Pines PWM/Analógicos | 11/6 | 20/6 | ||
Botones Integrados | Botón de Reset | |||
LEDs Integrados | LED 3 en 1/ LED de Carga | |||
Chip de Carga de Batería | BQ25101 | |||
Lenguajes de Programación | Arduino/ MicroPython/ CircuitPython |
Descripción general del hardware
- XIAO nRF52840/XIAO nRF52840 Sense
- XIAO nRF52840 Plus/XIAO nRF52840 Sense Plus
Diagrama de indicación frontal XIAO nRF52840/XIAO nRF52840 Sense |
---|
![]() |
Diagrama de indicación posterior XIAO nRF52840/XIAO nRF52840 Sense |
![]() |
Lista de pines XIAO nRF52840/XIAO nRF52840 Sense |
![]() |
Diagrama de indicación frontal del XIAO nRF52840 Plus |
---|
![]() |
Diagrama de indicación trasera del XIAO nRF52840 Plus |
![]() |
Lista de pines del XIAO nRF52840 Plus |
![]() |
Dos Librerías de Arduino
Seeed Studio XIAO nRF52840 ensambla muchas funciones en una placa diminuta y a veces puede no rendir al máximo de ellas. Por lo tanto, Seeed ha publicado dos librerías de Arduino para permitir maximizar el poder de cada función. Por consiguiente:
- Se recomienda usar la librería
Seeed nRF52 Boards
si quieres aplicar la función Bluetooth y la "Función de Bajo Costo Energético". - Se recomienda usar la librería
Seeed nRF52 mbed-enabled Boards
si quieres usarla en Aplicaciones de Aprendizaje Automático embebido o aplicar la "función avanzada de IMU y PDM". - Ambas librerías soportan muy bien cuando se trata del uso básico, como LED, Digital, Analógico, Serial, I2C, SPI.
La definición de pines soportada por estas dos librerías podría ser un poco diferente y Seeed mantendrá actualizada la wiki hasta que esté clara.
-
Si usas el paquete integrado de Seeed nRF52 Boards, la función Serial puede no compilar. La solución es agregar la línea
#include <Adafruit_TinyUSB.h>
en tu código. Puedes descargar este paquete desde: https://github.com/adafruit/Adafruit_TinyUSB_Arduino -
Si prefieres un enfoque más simple, puedes elegir Seeed nRF52 mbed-enabled Boards desde el principio. Soporta la compilación de la función Serial sin necesidad de modificaciones adicionales.
Comenzando
Primero, vamos a conectar el Seeed Studio XIAO nRF52840 (Sense) a la computadora y cargar un código simple desde Arduino IDE para verificar si la placa está funcionando bien.
Configuración de hardware
Necesitas preparar lo siguiente:
- 1 x Seeed Studio XIAO nRF52840 o Studio XIAO nRF52840 Sense
- 1 x Computadora
- 1 x Cable USB Type-C
Algunos cables USB solo pueden suministrar energía y no pueden transferir datos. Si no tienes un cable USB o no sabes si tu cable USB puede transmitir datos, puedes verificar Seeed USB Type-C support USB 3.1.
Conecta el Seeed Studio XIAO nRF52840 (Sense) a tu computadora mediante un cable USB Type-C.
Configuración de software
- Paso 1. Descarga e instala la última versión de Arduino IDE según tu sistema operativo
-
Paso 2. Inicia la aplicación Arduino
-
Paso 3. Agrega el paquete de placa Seeed Studio XIAO nRF52840 (Sense) a tu Arduino IDE
Navega a File > Preferences, y llena "Additional Boards Manager URLs" con la url de abajo: https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json
Navega a Tools > Board > Boards Manager..., escribe la palabra clave "seeed nrf52" en la caja de búsqueda, selecciona la última versión de la placa que quieres, e instálala. Puedes instalar ambas.
- Paso 4. Selecciona tu placa y puerto
Placa
Después de instalar el paquete de placa, navega a Tools > Board y elige la placa que quieres, continúa para seleccionar "Seeed XIAO nRF52840 Sense". Ahora hemos terminado de configurar el Seeed Studio XIAO nRF52840 (Sense) para Arduino IDE.
Puerto
Navega a Tools > Port y selecciona el nombre del puerto serial del Seeed Studio XIAO nRF52840 (Sense) conectado. Es probable que sea COM3 o superior (COM1 y COM2 usualmente están reservados para puertos seriales de hardware). El puerto serial del Seeed Studio XIAO nRF52840 (Sense) conectado usualmente contiene paréntesis que están escritos Seeed Studio XIAO nRF52840 para Seeed Studio XIAO nRF52840 o Seeed Studio XIAO nRF52840 Sense para Seeed Studio XIAO nRF52840 Sense.
- Paso 5. Navega a File > Examples > 01.Basics > Blink para abrir el ejemplo Blink
- Paso 6. Haz clic en el botón Upload para cargar el código de ejemplo Blink a la placa
Una vez cargado, verás el LED rojo integrado parpadeando con un retraso de 1 segundo entre cada parpadeo. Esto significa que la conexión es exitosa y ahora puedes explorar más proyectos con el Seeed Studio XIAO nRF52840 (Sense)!
Jugando con el LED 3-en-1 integrado
Seeed Studio XIAO nRF52840 (Sense) tiene un LED 3-en-1 integrado 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 usual cuando se controla por código. El LED se ENCIENDE cuando damos una señal LOW y se APAGA cuando damos una señal HIGH. Esto es porque este LED está controlado por 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 con LOW para ENCENDER el LED.
Consulta los siguientes mapeos de pines de los LEDs y úsalos 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
El Seeed Studio XIAO nRF52840 tiene bajo consumo de energía y aquí proporcionamos un método para verificarlo. Es altamente recomendable usar la librería Seeed nRF52 Boards
aquí.
- Paso 1. Usa el descargador JLink para flashear el firmware del bootloader para el Seeed Studio XIAO nRF52840 (Sense).
Si estás usando el firmware de fábrica del Seeed Studio XIAO nRF52840 o nunca has hecho cambios al firmware del Seeed Studio XIAO nRF52840, puedes omitir este paso.
- Paso 2. Usa la librería
Seeed nRF52 Boards
aquí.
- Paso 3. Sube 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
}
Aquí, nos gustaría expresar nuestro agradecimiento especial al autor por proporcionar el código → daCoder ←
Si quieres conocer información más detallada sobre este ejemplo, haz clic Aquí
Corriente de carga de la batería
La corriente de carga de la batería es seleccionable como 50mA o 100mA, donde puedes configurar el Pin13 como alto o bajo para cambiarla a 50mA o 100mA. La corriente de carga de baja corriente está en el modelo de entrada configurado como NIVEL ALTO y la corriente de carga de alta corriente está en el modelo de salida configurado como NIVEL BAJO.
Corriente de carga baja
void setup(){
pinMode (P0_13, OUTPUT);
}
void loop() {
digitalWrite(P0_13, HIGH);
}
Alta Corriente de Carga
void setup(){
pinMode (P0_13, OUTPUT);
}
void loop() {
digitalWrite(P0_13, LOW);
}
Acceso a los Pines SWD para Depuración y Reflasheo del Bootloader
Hardware Requerido
Software Requerido
Es necesario descargar el software Segger desde el sitio web.
- Paso 1. Usa Jlink para conectar los pines siguientes:
- Paso 2. Inicia J-Flash y busca nRF52840, creando un nuevo proyecto:
- Paso 3. Haz clic en "Target" y luego selecciona "Connect".
- Paso 4. Arrastra el archivo bin o hex al software. Luego presiona F4 y F5 en ese orden. El reflasheo está completo.
FAQ
P1: Mi Arduino IDE se queda colgado al subir código a la placa
Puedes intentar primero reiniciar la placa haciendo clic en el "Botón de Reset" una vez. Si eso no funciona, haz clic rápidamente dos veces para entrar en modo bootloader. Si eso tampoco funciona, desconecta la placa de la PC y conecta la placa nuevamente.
P2: Mi placa no aparece como dispositivo serie en Arduino IDE
Puedes intentar primero reiniciar la placa haciendo clic en el "Botón de Reset" una vez. Si eso no funciona, haz clic rápidamente dos veces para entrar en modo bootloader.
P3: ¿Cuáles son las consideraciones al usar XIAO nRF52840 (Sense) para carga de batería?
Cuando P0.14 (D14) apaga 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 apaguen la función ADC de P0.14 (D14) o configuren P0.14 (D14) en alto durante la carga de la batería.
P4: ¿Cómo se comporta la luz verde cuando se enciende?
El pin P0.17
se usa para controlar el comportamiento de la luz indicadora verde, indicando el estado de carga:
- Nivel bajo: cuando la carga está en progreso.
- 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 hoja de datos XIAO nRF52840.
Recursos
Seeed Studio XIAO nRF52840
-
[Ebook] XIAO: Big Power, Small Board Mastering Arduino and TinyML
-
[PDF] Hoja de datos nRF52840
-
🔗 [Kicad] FootPrint Seeed Studio XIAO nRF52840
Seeed Studio XIAO nRF52840 Sense
-
[PDF] Hoja de datos nRF52840
Seeed Studio XIAO nRF52840 (Sense) Plus
-
[PDF] Hoja de datos nRF52840
-
[ZIP] Seeed Studio XIAO Plus Base con pads de botón extendidos
-
[ZIP] Seeed Studio XIAO Plus Base sin pads de botón extendidos
Recursos del Curso

Soporte Técnico y Discusión del Producto
¡Gracias por elegir nuestros productos! Estamos aquí para brindarle diferentes tipos de soporte para asegurar que su experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para satisfacer diferentes preferencias y necesidades.