Recientemente, estaba preparando material para una clase y me enfrenté al problema de instalar la librería Firmata en una Arduino UNO R4 Minima. Esta librería implementa un protocolo de comunicación que permite controlar la tarjeta Arduino desde una aplicación en una computadora. Es decir, la tarjeta Arduino opera como un servido para un cliente en otro equipo.

Sin embargo, instalar Firmata en Arduino UNO R4 no es transparente para un novato. Se requiere aplicar herramientas que no son necesariamente conocidas para el usuario.

El problema es que la revisión de Firmata que se puede instalar desde el gestor de librería es la 2.5.9, la cual está fechada el 4 de diciembre de 2022. Por otro lado, la fecha de lanzamiento de Arduino UNO R4 es el 26 de junio de 2023. Es decir, la versión disponible de la librería es anterior al lanzamiento de la tarjeta.

Una alternativa es instalar la versión más actual de Firmata vía Github; sin embargo, esto presenta algunos problemas. El problema más importante es que existen conflictos con algunas definiciones del propio núcleo de Arduino para el Procesador Renesas RA4M1. En cuanto estos conflictos se resuelvan, sería posible instalar la librería usando herramientas como git. Sin embargo, estas herramientas requieren de mayor conocimiento que no necesariamente dispone un usuario novato.

Después de investigar, encontré una solución en el foro de Arduino. A continuación, presentaré una versión modificada del código desarrollado en la respuesta del foro.

Método

El primer paso consiste instalar la librería Firmata vía el gestor de librerías del entorno de desarrollo (IDE) de Arduino. Este instalará la versión 2.5.9, como ya se había mencionado arriba.

El segundo paso consiste en localizar el directorio o carpeta donde está localizado el sketchbook del usuario. La localización por defecto es:

  • Windows: C:\Users\{username}\Documents\Arduino
  • macOS: /Users/{username}/Documents/Arduino
  • Linux: /home/{username}/Arduino

Si no se encuentra el directorio o carpeta en localización por defecto, puede encontrar su localización en la ventana de preferencias.

Una vez localizado el subdirectorio o carpeta del sketchbook, dentro del subdirectorio libraries se encontrará otro subdirectorio, llamado Firmata. Dentro de este último subdirectorio, se encontrará el archivo Boards.h. Este es el archivo que hay que modificar. Para ello hay que insertar el siguiente código alrededor de la línea 165.

#elif defined(ARDUINO_UNOR4_MINIMA) || defined(ARDUINO_UNOR4_WIFI)
#define TOTAL_ANALOG_PINS	6
#define TOTAL_PINS		20 // 14 digital + 6 analog
#define VERSION_BLINK_PIN	13
#define IS_PIN_DIGITAL(p)	((p) >= 0 && (p) <= 13)
#define IS_PIN_ANALOG(p) 	((p) >= 14 && (p) <= 19)
#define IS_PIN_PWM(p)		(((p) == 3) || \
					((p) >= 5 && (p) <= 9) || \
					((p) >= 10 && (p) <= 13))
#define IS_PIN_SERVO(p)		(((p) == 3) || \
					((p) >= 5 && (p) <= 9) || \
					((p) >= 10 && (p) <= 13))
#define IS_PIN_I2C(p)		((p) == 18 || (p) == 19)
#define IS_PIN_SPI(p)		((p) == SS || \
					(p) == MOSI || \
					(p) == MISO || \
					(p) == SCK)
#define PIN_TO_DIGITAL(p)	(p)
#define PIN_TO_ANALOG(p)	((p)-14)
#define PIN_TO_PWM(p)		PIN_TO_DIGITAL(p)
#define PIN_TO_SERVO(p)		PIN_TO_DIGITAL(p)