banner
Hogar / Blog / El zoológico de conectores: ecosistemas I2C
Blog

El zoológico de conectores: ecosistemas I2C

Sep 14, 2023Sep 14, 2023

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 cada teléfono, computadora portátil, computadora 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 puede usar I2C. Ocasionalmente, las empresas orientadas a los fabricantes crean interfaces plug-and-play para los desgloses de dispositivos I2C que producen, con pines y conectores estandarizados.

Seguir un pinout estándar es mucho mejor que inventar uno propio, y su experiencia con pinouts de encabezado de pin inconsistentes en módulos I2C genéricos de China seguramente lo reflejará. ¿No sería maravilloso si pudiera enchufar un solo conector portador de I2C en un MPU9050, MLX90614 o HMC5883L que compró 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 colocando cuidadosamente los encabezados hembra en los pines correctos?

Al igual que con cualquier estándar, cuando se trata de convenciones I2C-on-a-conector, adivinará correctamente que hay más de uno, y todos tienen sus pros y sus contras. No son exactamente quince, ¡pero definitivamente hay seis y medio! En su mayoría son compatibles entre sí, y usarlos significa que puede acceder fácilmente a algunos periféricos bastante potentes. Comencemos con los dos ecosistemas que solo tienen pequeñas diferencias, ¡y que encontrarás más!

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 (pronunciado 'cutie'). Ambos son fáciles de agregar a su PCB, siempre que tenga algunos conectores JST-SH de cuatro pines listos. Además, ¡los conectores Adafruit y Sparkfun tienen el mismo pinout!

Los conectores que se utilizan son JST-SH, de montaje en 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 baratos de terceros con las mismas dimensiones en LCSC usando los términos de búsqueda "1x4P SH 1mm". Tanto QWIIC como STEMMA tienen páginas para consultar al hacer sus propios diseños. Ahora, ¿cuáles son las diferencias entre los dos?

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 gran 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 desconocidos. Tal vez, el cambio eventual a 1,8 V cambiará eso, pero aún no hemos llegado allí, y factores como los voltajes directos de LED requerirán algún tipo de referencia superior a 1,8 V en nuestro proyecto cuando lleguemos allí, de todos modos. Entonces, potencia 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 componentes adicionales, excepto el conector en sí!

Por el contrario, STEMMA QT está diseñado para expandir 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 potencia y nivel lógico de 3,3 V-5 V, asegurándose de que su Arduino Uno no se quede fuera del juego. Esto es posible porque cada módulo tiene un regulador de voltaje de caída baja como el AP2112K o el MIC5219, que ayuda a mantener las cosas en 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 desee encadenar sus dispositivos STEMMA con algunos dispositivos que consumen mucha energía, como servos inteligentes para I2C o tiras RGB. En resumen, enchufar cualquier cosa en cualquier cosa, con cualquier tipo de cadena, no debería resultar en un escape de humo mágico, un evento que rara vez se encuentra en la lista TODO del proyecto de un fabricante. 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 genera trucos ingeniosos como este zócalo de intercambio en caliente imprimible en 3D 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 ferozmente incompatibles con los hosts STEMMA QT de 5 V, pero tales hosts son raros, y solo debe estar atento cuando interactúe dispositivos QWIIC con hosts STEMMA. Otro inconveniente menor con estos dos estándares es la falta de señales de interrupción; eso, lo ampliaré a continuación, en la sección "Breakout Garden". ¡Por ahora, echemos un vistazo a la hermana mayor de STEMMA QT!

¡Oh, cierto, 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 varios talones. Muchas placas host también ofrecen múltiples enchufes conectados en paralelo, y hay placas "divisoras" disponibles que convierten un solo cable JST-SH con I2C en, digamos, tres enchufes adicionales.

Siempre que sus direcciones no entren en conflicto, generalmente estará bien cableando 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 10 kΩ para STEMMA QT y 2.2 kΩ para QWIIC, y al menos en el caso de QWIIC, parece que normalmente puede corte dos puentes de rastreo 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 bastante pronto a medida que encadena dispositivos.

STEMMA tiene el mismo pinout que STEMMA QT y QWIIC, pero un conector diferente y más grande. También es flexible cuando se trata de voltajes que puede emitir en el extremo del host y, a su vez, debe poder aceptar en el extremo del dispositivo. La mayoría de las ventajas en la sección STEMMA QT se aplican a STEMMA, excepto por la compatibilidad con QWIIC y el tamaño físico reducido.

Los conectores STEMMA son conectores JST PH con paso de 2 mm, con el número de pieza JST S4B-PH-SM4-TB, y conectores económicos de terceros disponibles con los 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 mucho más resistentes que los de orificio pasante. Con un mecanismo de retención más resistente, sus uñas ya no serán suficientes; ¡probablemente querrá usar su confiable par de cortadores azules al ras para desenchufarlos! STEMMA portador de I2C también tiene una contraparte GPIO y STEMMA analógica, que usa 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 tal consistencia es difícil de no apreciar 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 esos son muy 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 del conector Grove, el más antiguo de todos, ahora es algo así como una oveja negra entre los ecosistemas de conectores I2C, y está aquí mitad como parte de la historia, mitad como una advertencia. Contrariamente a los principios de los ecosistemas de código abierto, Grove utiliza un conector patentado, lo que hace que los fabricantes se apresuren a identificarlo correctamente mientras intentan encontrar una fuente que no sea SeeedStudio. A diferencia de todos los demás estándares enumerados aquí, cuando ve un conector Grove de 4 pines, no sabe si es para I2C, UART, dos GPIO digitales o algo analógico, lo que arruina toda la idea de "conectar y usar".

Para aquellos de ustedes que tienen la mala suerte de tener que interactuar con Grove, también usa 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 los conectores Grove no se usan con más frecuencia. No pude evitar notar que Tom's Hardware, al escribir la sección de conclusión 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 esté bien que nunca sea compatible con ecosistemas de conectores en los que valga la pena invertir esfuerzo, le recomiendo que evite usar Grove en sus placas. Dediquemos tiempo a la siguiente opción, menospreciada.

El ecosistema Breakout Garden de Pimoroni utiliza un pinout elegante: toma una fila de cinco pines del encabezado GPIO de Raspberry Pi, 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 piratas informáticos, incluido yo mismo, han estado usando este pinout durante mucho tiempo en nuestras placas equipadas con I2C. Tal pinout, para empezar, significa que puede conectar cualquier placa Breakout Garden a una Raspberry Pi directamente.

Tampoco está limitado a eso: Pimoroni también ofrece buenos 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 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 reclaman protección de 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 obtiene un GPIO adicional, que generalmente es NC o se usa como un pin de interrupción. Los pines de interrupción se subestiman cuando se trabaja con dispositivos I2C: le permiten descargar su CPU y su bus I2C, evitando sondeos y permitiendo que su periférico I2C le señale 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 usa como un pin "disparador" para la sincronización de acciones. Eso daña un poco el concepto de encadenamiento, por supuesto; sin embargo, para ser justos, también lo hace el voluminoso enchufe de intercambio en caliente. No es que no pueda conectar 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 desconcertante decisión de conectar todos los pines INT juntos en su zócalo de 6 SOMBRERO Raspberry Pi.

Agregar soporte básico para una conexión similar a "Breakout Garden" en su proyecto es tan simple como agregar un encabezado de pin de cinco pines de 2,54 mm (0,1″), y con eso, obtiene instantáneamente la 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 esté destinado a hacer eso, lo que no significa que no pueda aplicar ingeniería inversa. los esquemas y las dimensiones y luego intente de todos modos, pero seguro que es bastante desalentador. Si desea agregar un enchufe Breakout Garden, tienen dos filas de clavijas separadas exactamente 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 deslizantes son los más caros de usar de todos estos.

¿Está buscando algunos accesorios JST-SH en el mercado? Realmente no puedes equivocarte con los conectores SMD; sin embargo, absolutamente puede equivocarse cuando se trata de cables preengarzados. 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, el pinout de uno inverso al del otro, con consecuencias probablemente desastrosas cuando se usa como interconexión. Los cables que compré requerirán un recableado cuidadoso con pinzas, y la próxima vez que compre cables JST-SH de terceros para poder conectar su próximo proyecto, sabrá 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. Sorprendentemente, 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 el pinout de los dispositivos Gravity I2C, parece que cada pin está en un lugar diferente, en particular, la conexión a tierra y la alimentación están invertidas. Al igual que STEMMA, utilizan conectores de 3 pines para dispositivos digitales y analógicos. La parte divertida es que también lograron cambiar el pinout para aquellos en algún momento, también invirtiendo la polaridad del pin de alimentación, sin dejar de usar el mismo conector, un no-no para los estándares de conector. ¡Proceda con precaución!

EasyC es básicamente QWIIC copiado a una T, con el mismo pinout, 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 podría decirse que podría estar más inclinado a comprarles si supiera que el estándar que están usando es ampliamente aceptado, en lugar de "distribución aleatoria de pines en algún conector". . EasyC está dirigido por una empresa e-radionica con sede en Croacia, que produce una variedad de módulos útiles de tamaño mediano, que incluyen bastantes clones y remezclas de módulos chinos, a precios europeos. Los archivos de diseño para sus módulos no están vinculados a los archivos del producto, ¡pero al menos algunos de ellos parecen estar en su GitHub! Curiosamente, también tienen 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. Tal vez, estaría justificado pensar un poco más en el ecosistema EasyC.

A veces vemos empresas que intentan algo de JST-SH, pero no lo consiguen del todo. Un ejemplo de eso es una placa algo reciente de Lolin, la Lolin D1 Mini Pro, con un conector JST-SH de 4 pines etiquetado como "I2C". Se le podría perdonar por pensar que este es un pinout similar a 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, con la combinación de pines GND, la probabilidad de destruir cosas no es tan extrema.

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

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 placa de circuito impreso 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 posibilidad de ser compatibles con dos ecosistemas a la vez, siempre que evite los hosts de 5V. Y, ¡un encabezado simple de 5 pines estándar proporciona una sorprendente cantidad de beneficios por la rapidez con la que puede agregarlo!

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

¿Tienes que añadir cambio de nivel? No si no usa 5 V en sus proyectos, y especialmente si está haciendo una ruptura para un IC que tiene una amplia gama de voltajes de entrada, como, por ejemplo, EEPROM I2C y RTC. Personalmente, trabajo principalmente con 3,3 V, y no tengo carretes de reguladores AP2112 para rociar en cada placa que hago; afortunadamente, tampoco tengo hosts I2C de 5V. 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 el cambio de nivel I2C.

De estos, QWIIC, STEMMA y Breakout Garden hasta ahora han resistido la prueba del tiempo, con compañías de electrónica aficionadas que los respaldan hasta allí. Es justo que nos beneficiemos de los estándares que crearon. Con suerte, las ideas y las instrucciones proporcionadas nos acercarán a los días de interoperabilidad universal, cuando la placa MCU de un pirata informático puede interactuar sin problemas con los sensores de otros piratas informáticos. A partir de ahí, un día, nuestros desbloqueos 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 de JST-SH que agreguemos a nuestra PCB, creo que pronto nos ocuparemos de ello.