Placa Arduino UNO R4 WiFi con el conector STEMMA QT Qwiic destacado
Placa Arduino UNO R4 WiFi con el conector STEMMA QT Qwiic destacado

Entre las novedades que introdujo el Arduino UNO R4, la versión WiFi destaca por un pequeño conector de interfaz llamado STEMMA QT/Qwiic. Por razones de compatibilidad de formato, esa conexión no encontró lugar en las tiras de pines tradicionales compatibles con las placas UNO y quedó ubicada al costado izquierdo del ICSP, donde muchos usuarios ni siquiera la notan.

El conector deja accesible un bus I²C que sirve para manejar dispositivos externos como pantallas o sensores, siempre que soporten comunicación I²C.

¿Por qué el Qwiic obliga a usar Wire1?

Las líneas SCL y SDA, a diferencia de lo que ocurría en las placas Arduino anteriores basadas en procesadores Atmel, donde se compartían con los pines A4 y A5 de la tira estándar, están conectadas a un segundo bus I²C. El chip Renesas que usa el R4 pone a disposición dos buses distintos, y el secundario se gestiona llamando al objeto específico Wire1. Ese detalle es el que hace fallar la mayoría de los ejemplos copiados tal cual desde internet.

BusObjeto a invocarDónde está expuesto
PrimarioWirepines A4 y A5 de la tira estándar
SecundarioWire1conector STEMMA QT/Qwiic, al lado del ICSP

La conexión se incorporó en el Arduino R4, y solo en la versión WiFi, para enchufar rápido las placas breakout del estándar SparkFun, porque el conector empleado, uno de cuatro pines en línea simple sobre circuito impreso, es el que adoptan esas placas. Qwiic es un ecosistema de módulos breakout y placas de desarrollo con ese conector, que combina la flexibilidad del I²C con la comodidad de los cables ya fabricados que se venden en el mercado. En la práctica, cablear dispositivos Qwiic es tan simple como conectarlos en serie.

El esquema eléctrico: casi nada de electrónica

Esquema eléctrico de la placa adaptadora
Esquema eléctrico de la placa adaptadora

El circuito no tiene electrónica: solo crea una serie de interconexiones eléctricas que arman una conexión I²C de paso entre entrada y salida, a través de los dos conectores de cuatro pines tipo SparkFun, más cuatro filas de cuatro pads con paso de 2,54 mm listas para soldar tiras hembra o de pines.

El detalle no obvio del diseño es que las filas de pads tienen los contactos ordenados de manera distinta según el lado de la placa. Eso es deliberado: permite montar módulos y sobre todo pantallas, donde el problema aparece por ejemplo con las OLED pequeñas, que traen una disposición diferente de Vcc y GND, además de SDA y SCL. La alimentación que necesitan los breakout sale del propio conector STEMMA QT/Qwiic de la placa Arduino.

Al tener dos conectores JST, la placa permite encadenar varios dispositivos I²C: la que va conectada al Arduino R4 se conecta a su vez a una segunda placa, esta a una tercera y así sucesivamente. Para interconectarlas se usa un cable prearmado con conector JST de cuatro pines a cada extremo y paso de 1 mm, disponible en Futura Elettronica. La placa adaptadora también se vende ya fabricada con el código de producto FT1732M.

Construcción y uso

Fotografía de la placa adaptadora
Fotografía de la placa adaptadora

La placa se puede preparar por fotograbado si se dispone de las dos pistas del lado cobre, aunque dado su costo bajísimo conviene comprarla hecha. Para explicar su uso, la aplicación de ejemplo adquiere datos de un breakout con sensor de presión barométrica y temperatura ambiente, y los muestra en una pantalla OLED monocromática de 0,96 pulgadas basada en el controlador SSD1306. Ambos dispositivos usan interfaz I²C.

El conector JST para la conexión Qwiic STEMMA que se debe usar
El conector JST para la conexión Qwiic STEMMA que se debe usar

Para usar un sensor Bosch BME280 sobre placa breakout hay que montarlo con las tiras de pines adecuadas y respetando la orientación prevista. La advertencia es seria: si no se respeta la posición indicada, la placa pequeña puede dañarse de forma irreparable.

El adaptador con un sensor BME280 I²C sobre placa breakout
El adaptador con un sensor BME280 I²C sobre placa breakout

En una segunda placa adaptadora FT1732M se monta la pantalla OLED, un modelo estándar al que hay que soldarle una tira de cuatro pines, usando la fila de pads cuyos contactos están ordenados como GND, VCC, SCL y SDA.

El adaptador STEMMA QT/Qwiic con el módulo de pantalla de 0,96 pulgadas montado
El adaptador STEMMA QT/Qwiic con el módulo de pantalla de 0,96 pulgadas montado

¿Cómo se configura el sketch?

Para comunicarse con el breakout BME280 hay que cargar primero la biblioteca Adafruit_BME280 en el IDE de Arduino, desde el menú Programa y la opción de gestión de bibliotecas. Después, en el menú Archivo se abre el ejemplo BME280_I2C, se carga en la placa y se abre el monitor serie para ver la presión y la temperatura. Como el conector Qwiic cuelga del bus secundario, en la inicialización de la biblioteca hay que seleccionar el objeto Wire1:

Código
Wire1.begin();
libraryName.begin( Wire1 );

El sketch de prueba publicado arma una estación meteorológica mínima que muestra presión atmosférica y temperatura ambiente. Incluye las bibliotecas Wire.h, Adafruit Sensor.h, BME280.h, GFX.h y SSD1306.h, además de ArduinoGraphics.h y Arduino_LED_Matrix.h. En el bloque de configuración inicializa el monitor serie a 115.200 baudios y luego declara el bus secundario:

Código
Wire1.begin();
Wire1.setClock(100000);
Wire1.setTimeout(1000);

El lazo principal adquiere muestras del sensor y las envía a la pantalla en su dirección I²C correspondiente, con un retardo de 20 ms entre repeticiones.

Las direcciones I²C que hay que revisar

Usar el bus I²C implica definir la dirección de cada periférico en el firmware. Si la consulta falla y no aparece nada en la pantalla, casi siempre el problema está acá.

DispositivoDirección por defecto¿Se puede cambiar?
Sensor BME2800x76Sí, existen módulos preconfigurados en 0x77
Pantalla OLED SSD13060x3CNo, viene fija en el chip controlador

La línea del sketch que hay que editar es uint8_t BME_ADDR = 0x76;, reemplazando el valor por 0x77 cuando corresponda.

Detalle del cableado entre el Arduino UNO R4 y las placas breakout Qwiic/STEMMA
Detalle del cableado entre el Arduino UNO R4 y las placas breakout Qwiic/STEMMA
El montaje armado con la pantalla OLED y el sensor BME280 conectados por Qwiic
El montaje armado con la pantalla OLED y el sensor BME280 conectados por Qwiic

Conclusiones

La aplicación propuesta usa una placa por cada dispositivo I²C, aunque cada adaptador puede alojar varios breakout según el tamaño. El conector STEMMA/Qwiic admite más de dos placas adaptadoras encadenadas, con un límite práctico: la corriente que el bus es capaz de entregar.