La XIAO RA4M1 es la incorporación más reciente a la familia XIAO, destacándose por su potencia y versatilidad en proyectos de electrónica y programación. En este artículo, te presento sus principales características y funcionalidades. Además, te mostraré cómo programarla utilizando Arduino, el entorno de programación más natural y adecuado para esta placa, para que puedas aprovechar al máximo sus capacidades en tus propios proyectos.
Introducción
En el mundo de los sistemas embebidos y la programación para proyectos de IoT y makers, cada vez hay más opciones de placas pequeñas y potentes que ofrecen un gran abanico de posibilidades. Entre ellas, destaca la XIAO RA4M1 de Seeed Studio, una placa compacta y versátil que ha captado la atención de la comunidad de desarrolladores y aficionados.
En un artículo anterior te mostré las principales características de todas las placas que integran la familia XIAO. En este artículo, vamos a profundizar en la RA4M1, viendo en detalle sus posibilidades y cómo programarla utilizando Arduino.
La XIAO RA4M1
En los párrafos que siguen veremos distintas características de esta pequeña pero potente placa. El procesador que integra, el RA4M1 de la empresa Renesas, es muy potente y está equipado con una rica variedad de módulos periféricos. Sin embargo, el reducido tamaño de la XIAO RA4M1 impone restricciones a la cantidad de pines disponibles, por lo que algunos de estos módulos no se pueden utilizar o tienen funcionalidades limitadas.
Tamaño
Una de las características mas destacadas de la RA4M1 es su reducido tamaño, algo que comparte con las otras placas integrantes de la familia XIAO. Con apenas 21 x 17,8 mm, la RA4M1 hace honor a su nombre: XIAO significa «pequeño» o «diminuto» en chino.
Montaje
La RA4M1, al igual que las demás placas de la familia XIAO, tiene una serie de contactos en sus bordes que permiten soldar un conector tipo header para facilitar su inserción en una protoboard o en otro conector.
Adicionalmente, estas placas tienen todos sus componentes montados en la parte superior y los contactos tienen los denominados «castellated holes». Los castellated holes (también llamados half holes) son una característica de diseño en las placas de circuito impreso (PCB) que consiste en perforaciones ubicadas en el borde de la placa, las cuales están parcialmente expuestas o «cortadas» en la mitad, formando una serie de ranuras o muescas en el borde de la PCB. Estas ranuras se asemejan a las almenas de un castillo, de ahí el nombre «castellated» (derivado de «castle»).
Estas muescas permiten que la placa pueda ser soldada fácilmente a otra PCB, actuando como puntos de contacto. Los castellated holes son útiles para crear módulos o componentes que pueden ser ensamblados como una extensión de otra PCB, sin necesidad de usar conectores adicionales.
Botones y leds
La XIAO RA4M1 cuenta con dos botones ubicados en la parte superior: un botón de RESET, que permite reiniciar la placa rápidamente, y un botón de BOOT, que permite reestablecer el programa bootloader de la placa.
Además, la placa incluye un LED RGB multicolor, controlable por el usuario para indicar diferentes estados o efectos visuales, y dos LEDs comunes adicionales, uno indicador de carga de batería y otro led de usuario, de uso múltiple controlable por programa.
CPU
La XIAO RA4M1 integra un potente microcontrolador RA4M1 de la empresa Renesas que combina un bajo consumo de energía y alto rendimiento:
- Arquitectura: Arm Cortex-M4 core de 32 bits (mas potente que el núcleo M0+ del RP2040 por ejemplo).
- Núcleos: 1
- Velocidad: Hasta 48 MHz
- FPU: Unidad de punto flotante para acelerar cálculos numéricos.
- DSP: Unidad de procesamiento digital de señales para facilitar el tratamiento de señales analógicas.
Memoria
El RA4M1 tiene la particularidad de poseer tanto la memoria Flash como la RAM integradas en el mismo chip. Esto simplifica el diseño del hardware, reduce el costo de los componentes y mejora el rendimiento, ya que el acceso a la memoria interna es más rápido y eficiente que acceder a una memoria externa.
- Flash para código: 256 KB
- Flash para datos: 8 KB
- SRAM: 32 KB incluidos en el chip.
- Protección de datos: Los primeros 16 KB de RAM se pueden proteger usando un sistema ECC (Error Correcting Code) de detección y corrección de errores. El resto de la memoria se puede proteger con un esquema de bit de paridad, permitiendo detectar errores (aunque no corregirlos).
GPIO
Como mencioné al principio, el tamaño tan reducido de la placa tiene su contraparte: la escasa cantidad de pines de interconexión disponibles. De los mas de 30 pines de GPIO (entrada/salida de uso general) del micro RA4M1 en su encapsulado de 48 pines, tan solo 19 están disponibles en la XIAO RA4M1: 11 en los conectores a cada lado de la placa y 8 mas en la forma de «pads» en la parte inferior.
La mayoría de estos pines GPIO funcionan con 3.3V, aunque algunos son tolerantes a 5V, lo cual los hace compatibles con dispositivos que operan a ese voltaje.
Además, algunos de los pines pueden configurarse en modo open-drain, lo cual es útil para aplicaciones que necesitan conectar múltiples salidas a un mismo punto.
La placa también dispone de pines con capacidades PWM, lo cual permite controlar motores, LEDs y otros dispositivos que requieran señales moduladas en anchura de pulso.
Comunicaciones
El RA4M1 no posee modulos adicionales de comunicaciones inalámbricas como Wifi o Bluetooth pero cuenta con potentes interfaces de comunicaciones serie que le permiten conectarse a una amplia variedad de periféricos:
- Serial Communications Interface (SCI): Interfaz serie configurable en 5 modos:
- Asíncrono (UART)
- Síncrono de 8 bits
- I2C (sólo modo maestro)
- SPI simplificado
- Interfaz para tarjetas SD
- I2C: Interfaz IIC (Inter-Integrated Circuit) de dos canales.
- SPI: Dos canales capaces de realizar comunicaciones de alta velocidad full dúplex con otros procesadores o periféricos.
- SSIE: El módulo Serial Sound Interface Enhanced (SSIE) permite enviar y recibir datos de audio digital hacia y desde varios dispositivos que soportan diferentes formatos, como I2S.
- CAN: El módulo CAN cumple con el estándar ISO 11898-1 (CAN 2.0A/CAN 2.0B) y es ideal para trasmitir datos en ambientes con presencia de ruido eléctrico. No incluye el transceptor CAN, que debe ser añadido externamente.
- USB: módulo USB 2.0 de velocidad completa (USBFS) que puede funcionar como host o dispositivo compatible con la especificación USB 2.0.
Sistema
- Reset: 14 fuentes de Reset (POR, pin RESET, WDT, monitor de tensión, etc).
- Monitor de tensión: Monitorea la tensión del pin Vcc y puede producir un Reset o una interrupción cuando alcanza un valor determinado.
- Bajo consumo: Se puede disminuir el consumo desactivando distintos módulos de forma individual.
- RTC: Reloj de tiempo real alimentado con una tensión independiente (de una batería, por ejemplo) para mantener fecha y hora.
- Watchdog: Hay dos módulos de watchdog timers: el WDT estándar y el IWDT (Independant WDT). El primero usa como referencia el reloj del sistema, mientras que el segundo tiene su propia fuente de clock independiente. El WDT es más flexible y puede generar interrupciones o reinicios, mientras que el IWDT es más estricto y típicamente se usa solo para reiniciar el sistema en situaciones críticas.
Seguridad
El microcontrolador RA4M1 de Renesas está diseñado con una serie de características de seguridad que lo hacen adecuado para aplicaciones donde la protección de datos y la integridad del sistema son cruciales, especialmente en dispositivos conectados a IoT y otras aplicaciones sensibles:
- Memoria protegida: Soporta MPU (Memory Protection Unit), que permite definir regiones protegidas en la memoria, previniendo que partes del código accedan a datos no autorizados o modifiquen secciones críticas del sistema. Esta característica es útil para evitar errores de software o intentos maliciosos de acceder a áreas no permitidas.
- Secure Crypto Engine 5 (SCE5): Motor criptográfico avanzado con las siguientes funciones:
- Aceleradores criptográficos para algoritmos de cifrado como AES.
- TRNG (True Random Number Generator) genera números aleatorios con un alto grado de aleatoriedad, fundamental para crear claves seguras en sistemas de cifrado y autenticación.
- Protección de firmware: Permite proteger el código del firmware contra lectura o escritura no autorizada, así como el proceso de actualización.
Señales analógicas
El RA4M1 contiene varios módulo especialmente útiles para el tratamiento de señales analógicas:
- ADC de 14 bits: Un conversor analogico a digital de 14 bits. Se dispone de 5 entradas en los conectores y 3 mas en los pads de la parte inferior.
- DAC de 12 bits: Conversor digital a analógico de 12 bits con un amplificador de salida. Está disponible en el pin A0.
- DAC de 8 bits: Conversor D/A de 8 bits usado como referencia para el comparador analógico.
- Comparador analógico: Circuito comparador de tensión. Puede comparar el valor de la entrada con el valor presente en otro pin, la salida del DAC de 8 bits o una referencia de tensión interna. Una entrada disponible en A5.
- Amplificadores operacionales: Cuatro amplificadores operacionales de uso general para tratar señales analógicas, aunque sólo uno de ellos está conectado a los pines A1, A2 y A3.
- TSN: Sensor de temperatura interno. Entrega una tensión proporcional a la temperatura interna del chip.
Otros módulos
El RA4M1 incorpora varios módulos de hardware adicionales, como Timers, controladores de LCD y entradas para pines táctiles (Touch). Algunos de estos módulos están disponibles en la XIAO RA4M1, mientras que otros tienen funcionalidades limitadas. En futuros artículos, abordaré con más detalle cada uno de estos módulos.
Programación en Arduino
La XIAO RA4M1 es totalmente compatible con Arduino, lo cual la convierte en una excelente opción para desarrolladores que buscan una integración fácil y rápida. A continuación te muestro como preparar el Arduino IDE (usaré la versión 2) para que puedas comenazar a escribir tus propios programas.
Instalación del IDE
Para programar la XIAO RA4M1 con Arduino, primero necesitas instalar el Arduino IDE 2, que es la versión más reciente y mejorada del entorno de desarrollo de Arduino.
Puedes descargar el instalador desde la página oficial de Arduino aquí. Elige la versión compatible con tu sistema operativo (Windows, macOS o Linux) y sigue los pasos de instalación. La instalación es bastante sencilla y similar a la de cualquier otro programa.
Configuración del IDE
Una vez instalado el Arduino IDE debes agregar el soporte para la placa a través del Gestor de Placas.
Este es un procedimiento sencillo y si ya estás usando otra placa como un ESP32 con el IDE, seguro que ya estarás familiarizado con él.
Primero, abre las preferencias del IDE seleccionando del menú las opciones Archivo y luego Preferencias:
Busca donde dice URLS adicionales del gestor de placas y agrega la siguiente dirección:
https://files.seeedstudio.com/arduino/package_renesas_1.2.0_index.json
Si ya tienes cargada una dirección similar para otra placa, no la borres. Agrega una coma al final y a continuación añade la nueva.
Dale click al botón ACEPTAR y en la barra de herramientas de la izquierda del IDE selecciona el Gestor de Placas:
En el cuadro de búsquedas tipea RA4M1. Te aparecerá el instalador del paquete para la XIAO RA4M1. Dale click a INSTALAR.
Luego de unos minutos de descarga e instalación, el IDE estará listo para programar la placa. Conectala con un cable USB y será detectada automáticamente. Si no es así, selecciona la placa y el puerto desde el selector ubicado en la parte superior y a la izquierda:
En el siguiente video te muestro el mismo procedimiento, y como probar el funcionamiento de la placa con el típico programa de ejemplo «Blink» que hace parpadear un led.
Conclusiones
La XIAO RA4M1 es una potente placa que combina un tamaño reducido, bajo consumo, alto rendimiento y una rica variedad de perifericos como pines GPIO multifunción, ADC, DAC, amplificadores operacionales, interfaces serie, CAN, USB y avanzadas funciones de seguridad y aceleradores criptográficos. Esta combinación única de características hacen de la RA4M1 una placa ideal para aplicaciones portátiles o wearables, en Internet de las cosas, aparatos de medición o registradores de datos entre muchas otras.
En este artículo te mostré las principales características de la placa, como la CPU, memoria y los distintos periféricos y módulos disponibles. También vimos las dimensiones de la placa, sus conexiones y las opciones disponibles para montarla o soldarla sobre una PCB. Finalmente, vimos como configurar el Arduino IDE 2 para programarla y la probamos con un sencillo código de ejemplo. En próximos artículos te compartiré algunos proyectos de ejemplo para aplicar esta pequeña pero potente placa.
Como siempre, cualquier duda o sugerencia puedes dejarla mas abajo en la sección de comentarios.