Hace años, un autor de Hackaday escribió un artículo sobre los distintos ecosistemas de I2C con conector, con sus ventajas, sus debilidades y los detalles de implementación de cada uno. Ahí destacaba QWIIC, el estándar que nació en SparkFun para llevar I2C a 3,3 V en un conector JST-SH de cuatro pines (o uno compatible).

Desde entonces implementó QWIIC en bastantes diseños y le tomó más cariño todavía. En una nueva columna publicada el 12 de noviembre explica por qué hay que poner esos conectores JST-SH en todo lo que se diseñe con I2C, qué cosas permiten hacer, dónde comprar cables baratos al por mayor y qué referencias consultar. También presenta su propia asignación de pines para llevar USB por un conector QWIIC.

Un conector para cientos de dispositivos

Hay una cantidad enorme de dispositivos que hablan I2C. Sensores ambientales, expansores de GPIO, conversores ADC, chips PWM, controladores de motores y de LED, pantallas pequeñas, chips GPS y LoRa, sensores de voltaje y corriente, memorias, TPM, touchpads y lectores NFC. En cualquier tienda para aficionados se puede buscar sensores compatibles con QWIIC y encontrar el que calce con un proyecto.

El autor aclara que su argumento no es comprar dispositivos QWIIC para todo, aunque sea cómodo. Él nunca ha comprado a propósito nada con la marca QWIIC. Lo que propone es estandarizar en QWIIC los puertos de expansión I2C de las placas propias y usarlo donde se pueda. Según cuenta, eso le simplificó el desarrollo, la depuración y el cableado de todos sus dispositivos con I2C.

¿Cómo sirve QWIIC para depurar I2C?

En la misma línea, esta tarjeta de presentación ZPUI es ahora su herramienta de depuración favorita con QWIIC

El autor empezó poniendo el puerto en sus placas porque parecía lo correcto, sin haber comprado periféricos QWIIC. Resultó que es un conector perfecto para un analizador lógico cuando hay que revisar código de I2C.

Con uno de esos cables baratos y peligrosos que traen los extremos con el orden de pines invertido (compró varios por error), armó un adaptador simple para su analizador lógico. Hoy es de lo primero que saca cuando algo con I2C falla en sus placas. Lo conecta, abre PulseView y ve los errores del bus apenas aparecen.

Como suele poner un solo conector QWIIC por dispositivo, para analizar el bus con el sistema funcionando necesita un divisor con tres conectores en paralelo. Ya había construido algunos en 2018. Mientras cada bus I2C tenga su QWIIC, puede observar tanto los dispositivos de la placa como los externos, hacer ingeniería inversa de drivers y encontrar fallas mirando el bus directamente.

Una de sus mejores compras del año pasado, 100 de estos cables con un solo extremo, de 20 cm cada uno

Más modularidad con cables de un solo extremo

Este año compró cien cables JST-SH terminados en un solo extremo en LCSC, por muy poco dinero. Fue una de las mejores mejoras en su trabajo con dispositivos I2C, porque ahora suelda uno en cada dispositivo I2C que le pasa por las manos. También armó por adelantado varias placas simples con un zócalo JST-SH para agregar QWIIC a cualquier aparato cuando se le ocurre.

La caja solar del ejemplo, durante la prueba de la conexión I2C

El ejemplo que da es un nodo Meshtastic alimentado con energía solar que ayudó a armar. Querían medir voltaje y corriente tanto de la batería como del panel solar. Compraron placas INA219 en Amazon y las soldaron directo a los pines de medición, sin borneras, porque los contactos de esas borneras son malos. Para llegar a la placa Heltec con el I2C usaron un cable JST-SH con el orden de pines de QWIIC y una placa con zócalo JST-SH.

Antes de tocar el firmware de Meshtastic pudo probar el montaje en otro aparato cercano basado en Raspberry Pi que ya tenía QWIIC. Escaneó el bus I2C y confirmó que las direcciones eran las esperadas, que el cableado estaba bien y que los pines ADDR estaban en la posición correcta. Desde la interfaz de Meshtastic eso habría sido imposible. Con QWIIC bastó cambiar el cable de lugar.

El montaje final quedó más limpio. Además evitaron soldar a la placa Heltec, lo que habría dejado el nodo amarrado al sistema de baterías solares, cuando todas las demás partes tenían conectores. Ya no hay que preocuparse de lazos de corriente al apagar el nodo, porque todo se desconecta, y el nodo se puede cambiar en cualquier momento sin soldar si algo se quema.

¿Un touchpad al que hacerle ingeniería inversa? Soldarle un cable JST-SH es un buen comienzo

Según el autor, cada vez que usa QWIIC en un proyecto aparece algún beneficio que no esperaba.

¿Dónde no conviene QWIIC?

En el caso del nodo solar, QWIIC funcionó además como conector de prueba. Si hay que grabar unos bytes en una memoria I2C de la placa, QWIIC sirve. Si la placa depende lo suficiente de I2C, QWIIC puede ser la interfaz del jig de pruebas.

La limitación está en los dispositivos que exigen un pin de interrupción (INT). Ahí la solución es torpe. Pero la mayoría de los dispositivos no lo necesita. Una brújula digital barata, una pantalla OLED o un expansor de GPIO se agregan a cualquier proyecto sin tocar un pin INT, y muchas cosas se pueden consultar periódicamente sin un gasto de CPU que se note.

Símbolo de KiCad Conn_01x04_MountingPin y huella JST_SH_SM04B-SRSS-TB_1x04-1MP_P1.00mm_Horizontal

JST-SH es un conector con guía de inserción, y hay tantos clones que el precio es bajo. Es muy pequeño, pero se conecta y desconecta fácil con los dedos. Existe en versión horizontal y vertical, con una advertencia. Al pasar al conector vertical hay que invertir la asignación de pines. El autor lo aprendió por las malas, cuando tuvo que sellar con silicona caliente varios puertos verticales de placas recién fabricadas para un taller. Fuera de eso, QWIIC no se puede conectar al revés, es difícil de romper y fácil de reemplazar.

USB por los pines de QWIIC

El autor llevó el estándar un paso más allá y puso USB en los pines de I2C. Su razón es que USB necesita con urgencia un conector pequeño y estandarizado que no sea un cable plano FFC.

Mantuvo la ubicación de tierra y de 3,3 V. El objetivo no es que nada se queme si se conecta por error un dispositivo QWIIC en un puerto USB o al revés. Como USB usa señales de 3,3 V, las líneas de datos se pueden asignar libremente. Él puso D+ en SDA y D- en SCL, sin una razón especial. Recomienda agregar un diodo de protección contra descargas electrostáticas, que también se le puede poner a un QWIIC con I2C, aunque USB suele salir más lejos de la placa y es más sensible a la estática. Propone llamarlo QWUSB.

Aunque no lo planeó como respaldo, una huella QWIIC para el puerto USB de subida le permitió hacer cables USB más delgados para una tanda de placas Blepis

En algunas placas sumó un selector de voltaje entre 3,3 V y 5 V, porque algunos dispositivos USB no funcionan con 3,3 V, aunque la mayoría sí. Un LED rojo de bajo voltaje directo va desde la salida del selector hasta 3,3 V. Cuando el selector está en 5 V, el LED se enciende en rojo para avisar de un voltaje peligroso. En los dispositivos más sencillos pone un SY6820 como protección contra sobrecorriente y corriente inversa en sus puertos QWIIC, sean solo de 3,3 V o admitan 5 V.

Su próximo plan es convertir a QWUSB sus cámaras web recuperadas de laptops, que hoy usan cables sueltos. Mientras tanto, el sistema ya le permitió conectar aparatos entre sí en un apuro.

Cables pequeños y resistentes para todo

Con I2C como estándar y USB como variante propia, QWIIC le permitió unir cosas que no sabía que podía conectar con tanta facilidad. Sus placas de expansión pasaron de ser algo a lo que todavía había que soldarle cables a algo que se conecta y se prueba de inmediato.

Su recomendación es poner QWIIC en las placas de cualquiera que trabaje con I2C aunque sea de vez en cuando. Y tiene un deseo, que Raspberry Pi adopte QWIIC, porque sus placas nuevas ya llevan conectores JST-SH. El nuevo Arduino Uno Q ya se sumó, y según el autor queda mejor por eso.