banner

Blog

Jul 19, 2023

El zoológico de conectores: ecosistemas I2C

I2C es una interfaz maravillosa. Con cuatro cables y solo dos GPIO, puede conectar una gran cantidad de sensores y dispositivos, ¡en paralelo, además! Verá que I2C se usa básicamente en todas partes, en todos los teléfonos, computadoras portátiles, computadoras de escritorio y cualquier dispositivo con más de unos pocos circuitos integrados en su interior, y la mayoría de los microcontroladores tienen soporte I2C integrado en su hardware. Como resultado, hay una gran cantidad de dispositivos interesantes y útiles con los que puedes usar I2C. Ocasionalmente, las empresas orientadas a los fabricantes crean interfaces plug-and-play para los dispositivos I2C que producen, con pines y conectores estandarizados.

Seguir un pinout estándar es mucho mejor que inventar el suyo propio, y su experiencia con pinouts de pines inconsistentes en módulos I2C genéricos de China seguramente lo reflejará. ¿No sería maravilloso si pudieras conectar un solo conector I2C a un adaptador MPU9050, MLX90614 o HMC5883L que compraste por unos pocos dólares, en lugar del obstáculo habitual de mirar la serigrafía del módulo y soldar los cabezales de los pines en él? ¿Y colocar cuidadosamente los cabezales hembra en los pines correctos?

Como ocurre con cualquier estándar, cuando se trata de convenciones I2C en un conector, se podría adivinar correctamente que hay más de una y todas tienen sus pros y sus contras. ¡No son exactamente quince, pero definitivamente hay seis y medio! En su mayoría son intercompatibles y utilizarlos significa que puedes acceder fácilmente a algunos periféricos bastante potentes. ¡Comencemos con los dos ecosistemas que solo tienen diferencias menores y que encontrarás con más frecuencia!

Hay dos ecosistemas de módulos I2C que se basan en conectores JST-SH de cuatro pines (paso de 1 mm) y son muy intercambiables. Uno de ellos es QWIIC de Sparkfun y el otro es STEMMA QT de Adafruit (se pronuncia 'cutie'). Ambos son fáciles de agregar a su PCB, siempre que tenga listos algunos conectores JST-SH de cuatro pines. Además, ¡los conectores Adafruit y Sparkfun tienen la misma distribución de pines!

Los conectores utilizados son JST-SH, de superficie, con paso de 1 mm. Su familia JST es SR/SH y el número de pieza de la pieza JST original es SM04B-SRSS-TB, pero puede encontrar conectores económicos de terceros con las mismas dimensiones en LCSC utilizando los términos de búsqueda “1x4P SH 1 mm”. Tanto QWIIC como STEMMA tienen páginas a las que consultar cuando haga sus propios diseños. Ahora bien, ¿cuáles son las diferencias entre ambos?

QWIIC se limita a 3,3 V tanto en el lado del host (es decir, la placa MCU, que proporciona energía) como del dispositivo (es decir, el sensor, que consume energía): una decisión razonable que simplifica mucho las cosas. La inmensa mayoría de los dispositivos con los que trabajamos hoy en día son de 3,3 V, hasta el punto de que los problemas de cambio de nivel son prácticamente inauditos. Quizás, el eventual cambio a 1,8 V cambiará eso, pero aún no hemos llegado a ese punto, y factores como los voltajes directos de los LED necesitarán algún tipo de referencia superior a 1,8 V en nuestro proyecto cuando lleguemos allí, de todos modos. Por lo tanto, alimentación de 3,3 V y dos señales I2C de nivel lógico de 3,3 V en un solo conector, simple y llanamente. Lo más probable es que ya pueda agregar QWIIC a su sensor o placa MCU, ¡sin necesidad de ningún componente adicional excepto el conector en sí!

Por el contrario, STEMMA QT está diseñado para ampliar el posible valor educativo y de conveniencia, en línea con otras ofertas de Adafruit. Como tal, permite hosts de 5 V, con dispositivos diseñados para funcionar en el rango de niveles lógicos y de potencia de 3,3 V-5 V, lo que garantiza que su Arduino Uno no quede fuera del juego. Esto es posible porque cada módulo tiene un regulador de voltaje de baja caída como el AP2112K o el MIC5219, que ayuda a mantener las cosas a casi 3,3 V cuando alimenta la placa con 3,3 V. El razonamiento es simple, aparte de los hosts de 5 V como Arduino Uno. , es posible que también desees encadenar tus dispositivos STEMMA con algunos dispositivos que consumen mucha energía, como servos compatibles con I2C o tiras RGB. En resumen, conectar cualquier cosa a cualquier cosa, con cualquier tipo de cadena, no debería resultar en que se escape humo mágico, un evento que rara vez está en la lista de TODO del proyecto de un creador. Una ventaja más de STEMMA QT es la estandarización de los tamaños de las placas de los dispositivos, lo que le permite integrar mecánicamente nuevos sensores en el proyecto incluso antes de que lleguen a usted y generar trucos ingeniosos como este conector hotswap imprimible en 3D de STEMMA Qt.

Para resumir la situación de compatibilidad de voltaje: todos los dispositivos STEMMA QT funcionarán con hosts QWIIC; y todos los dispositivos QWIIC funcionarán con hosts STEMMA Qt de 3,3 V; como resultado, cualquier host QWIIC también es técnicamente un host STEMMA QT. Los dispositivos QWIIC serán tremendamente incompatibles con los hosts STEMMA QT de 5 V, pero dichos hosts son raros y solo hay que estar atento al conectar dispositivos QWIIC con hosts STEMMA. Otro inconveniente menor con ambos estándares es la falta de señales de interrupción, algo que ampliaré más adelante, en la sección "Breakout Garden". ¡Por ahora, echemos un vistazo a la hermana mayor de STEMMA QT!

¡Oh, claro, encadenando! Tanto QWIIC como STEMMA QT son compatibles con el encadenamiento: muchos módulos ofrecen un segundo conector JST-SH en el lado opuesto de la placa, por el que pasan las mismas señales. Esto le permite conectar sus proyectos de una manera cómoda, sin tener que ubicar un lugar en su proyecto donde pueda colocar su MCU sin tenerlo demasiado lejos de todos sus sensores, o sin recurrir a placas de pruebas para dividir su bus I2C en múltiples talones. Muchas placas host también ofrecen múltiples enchufes conectados en paralelo, y hay placas "divisoras" disponibles que convierten un único cable JST-SH con I2C en, digamos, tres enchufes adicionales.

Siempre que sus direcciones no entren en conflicto, generalmente podrá cablear un bus I2C para un proyecto de esa manera. Ah, y asegúrese de no sobrecargar su bus I2C con todos los pullups agregados en paralelo: tienden a ser de 10 kΩ para STEMMA QT y 2,2 kΩ para QWIIC, y al menos en el caso de QWIIC, parece que normalmente puede hacerlo. corte dos puentes de seguimiento con un cuchillo xacto para desconectar los pullups en cualquier módulo. Dado que todas las placas Raspberry Pi que no están basadas en Pico tienen pullups integrados de 1,8 kΩ en sus puertos I2C, es posible que necesite hacerlo desde el principio a medida que encadena dispositivos.

STEMMA tiene la misma distribución de pines que STEMMA QT y QWIIC, pero un conector diferente y más grande. También es flexible en lo que respecta a los voltajes que puede generar en el extremo del host y, a su vez, debe poder aceptar en el extremo del dispositivo. La mayoría de las ventajas de la sección STEMMA QT se aplican a STEMMA, salvo la compatibilidad con QWIIC y el tamaño físico reducido.

Los conectores STEMMA son conectores JST PH con paso de 2 mm, siendo el número de pieza JST S4B-PH-SM4-TB, y hay conectores económicos de terceros disponibles con términos de búsqueda “1x4P PH 2 mm”. Son un poco más fáciles de abordar con un soldador que los conectores SH de paso de 1 mm y, para placas más grandes, encajan bien.

JST-PH es uno de esos casos en los que los enchufes de montaje en superficie resultan ser mucho más resistentes que los de orificio pasante. Con un mecanismo de retención más resistente, las uñas ya no serán suficientes: ¡probablemente querrás usar tu confiable par de cortadores azules para desconectarlos! STEMMA que transporta I2C también tiene una contraparte GPIO y STEMMA analógica, que utiliza conectores JST PH de 3 pines para cosas como tiras WS2812, donde la compatibilidad de 5 V se vuelve excepcionalmente útil. Sin embargo, los conectores de 4 pines están firmemente reservados para I2C, y es difícil no apreciar esa coherencia en entornos educativos y de creación de prototipos: al consultar las docenas de tutoriales que Adafruit tiene sobre dispositivos STEMMA, ¡las secciones de "Cableado" en ellos son más sencillas! En algunos hosts STEMMA, también podrá volver a cablear el puerto a 3,3 V o 5 V a través de un puente de soldadura.

El estándar de conector Grove, el más antiguo de todos, es ahora una especie de oveja negra entre los ecosistemas de conectores I2C, y está aquí mitad como una parte de la historia, mitad como una advertencia. Contrariamente a los principios de los ecosistemas de código abierto, Grove utiliza un conector propietario, lo que hace que los fabricantes se esfuercen por identificarlo correctamente mientras intentan encontrar una fuente que no sea SeeedStudio. A diferencia de todos los demás estándares enumerados aquí, cuando ves un conector Grove de 4 pines, no sabes si es para I2C, UART, dos GPIO digitales o algo analógico, lo que arruina toda la idea de "plug and play".

Para aquellos de ustedes que tienen la mala suerte de tener que interactuar con Grove, también utiliza un rango de voltajes posibles de 3,3 V a 5 V, pero está menos interesado en anunciar explícitamente cuál se usa o permitirle cambiar eso; ambas cosas que STEMMA hace sin romperse. un sudor. Utiliza el mismo pinout para I2C que QWIIC/STEMMA. Si tiene un cable compatible con STEMMA (JST-PH), puede lijarlo un poco para que encaje en un conector Grove.

En otras palabras, hay una buena razón por la que no se utilizan conectores Grove con más frecuencia. No pude evitar notar que Tom's Hardware, al escribir la sección de conclusiones de su propio artículo de descripción general del ecosistema del conector I2C, no pudo encontrar una ventaja de Grove que no fuera genérica para todos los demás ecosistemas de los que hablaron. A menos que quiera renunciar a pagar a SeeedStudio por cada conector y cable que necesite, y no le importe nunca ser compatible con ecosistemas de conectores en los que valga la pena invertir esfuerzo, le recomiendo encarecidamente que evite usar Grove en sus placas. En su lugar, dediquemos tiempo a la siguiente opción, subestimada.

El ecosistema Breakout Garden de Pimoroni utiliza una elegante distribución de pines: toma una fila de cinco pines del encabezado GPIO de Raspberry Pi, los pines 1 a 9, incluidos 3,3 V, SDA, SCL, un pin GPIO y, por supuesto, GND, en este orden. . Seguro que no tienen una patente para este pinout: muchos hackers, incluido yo mismo, hemos estado usando este pinout durante años en nuestras placas equipadas con I2C. Para empezar, dicha configuración de pines significa que puede conectar cualquier placa Breakout Garden a una Raspberry Pi directamente.

Tampoco está limitado a eso: Pimoroni también ofrece bonitos conectores deslizables que le permiten intercambiar en caliente los módulos Breakout Garden. Y, si no desea utilizar los enchufes deslizables, simplemente suelde los cabezales de clavijas macho en ángulo y trátelos como cualquier otro módulo. Los módulos Breakout Garden suelen tener un rango de voltaje de entrada de 3,3 V a 5 V. También afirman tener protección contra polaridad inversa en cada módulo, por lo que, inevitablemente, enchufar un módulo al revés no debería retrasar su proyecto.

Con el pinout de Breakout Garden, también obtienes un GPIO adicional, que comúnmente es NC o se usa como pin de interrupción. Los pines de interrupción son subestimados cuando se trabaja con dispositivos I2C: le permiten descargar su CPU y su bus I2C, evitando el sondeo y permitiendo que su periférico I2C le indique cuando quiere su atención, algo que no es posible a través del bus I2C solo. Para algunos módulos, como este controlador de actuador háptico, el GPIO se utiliza como pin de “disparador”, para la sincronización de acciones. Por supuesto, eso perjudica un poco el concepto de encadenamiento; para ser justos, también lo hace el voluminoso enchufe hotswap. No es que no pueda conectar las placas Breakout Garden en paralelo; después de todo, el pin INT generalmente se puede desactivar para dispositivos I2C, lo que será absolutamente útil, dada la decisión desconcertante de cablear todos los pines INT juntos en sus 6 zócalos. SOMBRERO Raspberry Pi.

Agregar soporte básico para una conexión tipo "Breakout Garden" en su proyecto es tan simple como agregar un conector de cinco pines de 2,54 mm (0,1"), y con eso, obtendrá instantáneamente compatibilidad con el encabezado GPIO de Raspberry Pi. Cuando se trata de crear sus propios módulos, no pude encontrar ninguna dimensión o un módulo oficial de "cómo crear", por lo que probablemente no deba hacer eso, lo que no significa que no pueda realizar ingeniería inversa. los esquemas y las dimensiones y luego intentarlo de todos modos, pero seguro que es bastante desalentador. Si desea agregar un enchufe Breakout Garden, tienen dos filas de clavijas separadas exactamente por 5,08 mm (0,2 ″) y brindan una conveniente conectividad plug & play, aunque con un costo de £ 1 por enchufe (sin incluir el envío). Los enchufes deslizables son los más caros de usar de todos.

¿Está buscando algunos accesorios JST-SH en el mercado? Realmente no puedes equivocarte con los conectores SMD; sin embargo, es absolutamente posible equivocarse cuando se trata de cables pre-engarzados. Engarzar JST-SH con su paso de 1 mm no es nada fácil, y comprar sus propios cables es su mejor opción, excepto cuando vienen mal cableados. Hace un año, me estaba preparando para un proyecto y compré un paquete de cables JST-SH, que se muestran a la derecha. Tras una inspección más cercana, algo se sintió mal.

Resultó que tenían los extremos de los cables conectados en la dirección opuesta, con la configuración de pines de uno invertida respecto a la del otro, con probables consecuencias desastrosas cuando se usan como interconexión. Los cables que compré requerirán un cableado cuidadoso con pinzas, y la próxima vez que compre cables JST-SH de terceros para poder cablear su próximo proyecto, sabrá que debe inspeccionar las imágenes antes de presionar "Comprar ahora". botón.

Si alguna vez ha trabajado con piezas de DFRobot, es posible que también haya visto conectores JST-PH de 4 pines (o 3 pines) en sus placas; son de su ecosistema llamado Gravity. Curiosamente, Adafruit afirma que STEMMA es compatible con Gravity, aparte de sus dispositivos que no son I2C, ya que Gravity hace lo mismo que Grove, donde un conector de 4 pines no garantiza I2C. Sin embargo, al verificar la distribución de pines de los dispositivos Gravity I2C, parece que cada pin está en un lugar diferente, en particular, tierra y energía invertidas. Al igual que STEMMA, utilizan conectores de 3 pines para dispositivos digitales y analógicos. Lo divertido es que también lograron cambiar la distribución de pines en algún momento, invirtiendo también la polaridad del pin de alimentación, sin dejar de usar el mismo conector, un no-no para los estándares de conectores. ¡Proceda con precaución!

EasyC es básicamente QWIIC copiado a una T, con la misma distribución de pines, conectores, capacidades de encadenamiento y límite de voltaje de 3,3 V, pero sin mencionar QWIIC de ninguna manera en sus páginas web y recursos, lo cual es una decepción. La interoperabilidad de diferentes ecosistemas es parte de lo que los hace valiosos y, posiblemente, podría estar más inclinado a comprarles si supiera que el estándar que utilizan es ampliamente aceptado, en contraposición a la "distribución aleatoria de pines en algún conector". . EasyC está impulsado por una empresa de e-radionica con sede en Croacia, que produce una variedad mediana de módulos útiles, incluidos bastantes clones y remezclas de módulos chinos, a precios europeos. Los archivos de diseño de sus módulos no están vinculados desde los archivos de productos, ¡pero al menos algunos de ellos parecen estar en su GitHub! Curiosamente, también tienen en stock un cable “EasyC” de 5 cm que, tras una inspección más cercana, tiene el mismo cableado invertido que los cables de los que hablé en la sección anterior. Quizás estaría justificado pensar un poco más en el ecosistema EasyC.

A veces vemos empresas que intentan algo JST-SH, pero no lo logran. Un ejemplo de esto es una placa algo reciente de Lolin, la Lolin D1 Mini Pro, con un conector JST-SH de 4 pines con la etiqueta "I2C". Se le podría perdonar que piense que se trata de un pinout tipo QWIIC; Dado que este conector está marcado como "I2C", se podría argumentar que han sido engañados, apuñalados por la espalda y, muy posiblemente, engañados. En lugar del pinout GND-VCC-SDA-SCL, esta placa usa GND-SDA-SCL-VCC, y parece que incluso hay algunos accesorios como escudos hechos con este pinout en mente. Es como si alguien le hubiera enviado a Lolin una carta diciendo “oye, deberías poner I2C en un conector JST-SH” y luego se negara a dar más detalles. Afortunadamente, si los pines GND coinciden, la probabilidad de destruir cosas no es tan extrema.

¿Cuál de los estándares deberías seguir al diseñar tus propias tablas? Le he proporcionado toda la información que pueda necesitar para tomar sus propias decisiones, pero si está buscando una recomendación o una guía, con gusto también se la proporcionaré.

Personalmente, no uso conectores STEMMA (JST-PH) de tamaño completo, ya que con demasiada frecuencia son lo suficientemente voluminosos como para hacer que la PCB parezca pequeña y pueden hacer que las placas pequeñas sean un poco difíciles de manejar debido a su altura. Además, pueden ser más difíciles de desconectar. Los conectores JST-SH, sin embargo, son demasiado atractivos debido a la perspectiva de ser compatibles con dos ecosistemas a la vez, siempre y cuando evite los hosts de 5V. Y, ¡un encabezado de 5 pines simple y estándar proporciona una sorprendente cantidad de beneficios por la rapidez con la que puede agregarlo!

En resumen, le recomiendo que combine un conector pin tipo Breakout Garden y el conector QWIIC/STEMMA QT JST-SH en sus placas. De esta manera, siempre tendrás compatibilidad con tres de los cuatro ecosistemas de los que vale la pena hablar, y conectar tu placa I2C a una Raspberry Pi será tan sencillo como conseguir cinco cables de puente. Con esta combinación, nunca más tendrás que pensar en los pines del encabezado I2C y tendrás una señal de interrupción a mano para los momentos en que realmente puedas usar una.

¿Tienes que agregar cambio de nivel? No si no usas 5 V en tus proyectos, y especialmente si estás haciendo una ruptura para un IC que tiene una amplia gama de voltajes de entrada, como, por ejemplo, EEPROM y RTC I2C. Personalmente trabajo principalmente con 3,3 V y no tengo carretes de reguladores AP2112 para esparcir en cada placa que hago; afortunadamente, tampoco tengo hosts I2C de 5 V. En caso de que desee que sus dispositivos sean compatibles con 5 V, no puede equivocarse con la solución MOSFET clásica, increíblemente elegante y económica para cambio de nivel I2C.

De ellos, QWIIC, STEMMA y Breakout Garden hasta ahora han resistido la prueba del tiempo, y las empresas de electrónica de aficionados los respaldan hasta el final. Es justo que nos beneficiemos de los estándares que crearon. Con suerte, los conocimientos y las instrucciones proporcionadas nos acercarán a los días de interoperabilidad universal, cuando la placa MCU de un hacker pueda interactuar sin problemas con los sensores de otro hacker. A partir de ahí, algún día, nuestros adaptadores OLED SSD1306 favoritos podrían comenzar a llegar a nuestros buzones equipados con un conector JST-SH y un cable adicional. Hoy no es ese día, pero con cada huella JST-SH que agreguemos a nuestra PCB, creo que lo solucionaremos pronto.

COMPARTIR