Tabla de contenido:

El adaptador I2C (I-Squared-C) más barato del mundo: 5 pasos (con imágenes)
El adaptador I2C (I-Squared-C) más barato del mundo: 5 pasos (con imágenes)

Video: El adaptador I2C (I-Squared-C) más barato del mundo: 5 pasos (con imágenes)

Video: El adaptador I2C (I-Squared-C) más barato del mundo: 5 pasos (con imágenes)
Video: MODULO I2C PARA PANTALLAS LCD (display 16x2) + CODIGO ARDUINO + CONEXIONES|| BIEN EXPLICADO 2024, Noviembre
Anonim
El adaptador I2C (I-Squared-C) más barato del mundo
El adaptador I2C (I-Squared-C) más barato del mundo

¡Cree una interfaz de sensor para su computadora por menos de un dólar! Actualización 9/06/08: Después de explorar varias vías, he llegado a la conclusión de que no existe una forma práctica de implementar esta técnica en Microsoft Windows. Esto no es un pequeño ataque al sistema operativo, ¡realmente me he vuelto loco al intentarlo! ¡Perdón! Los usuarios de Windows que necesitan capacidades I2C se benefician mejor con las soluciones existentes basadas en USB. Actualización 24/05/08: se ha agregado compatibilidad con Linux, así como un código de muestra para el controlador Nintendo Wii Nunchuk y el "LED inteligente" BlinkM. Consulte el archivo README.txt incluido con el código fuente para obtener instrucciones sobre cómo compilar y configurar en Linux. I2C (abreviatura de Inter-Integrated Circuit) es un bus serie de dos cables que se usa normalmente en computadoras para la comunicación de bajo nivel entre componentes internos. I2C también es popular en robótica. Todo tipo de sensores y actuadores están disponibles en una forma compatible con I2C: telémetros ultrasónicos, sensores de aceleración, inclinación, temperatura y presión, servocontroladores y expansores de bus que proporcionan líneas adicionales de uso general (GPIO)., Microchip PIC, etc.) tienen soporte para I2C integrado. Pero la potencia de procesamiento disponible en los microcontroladores es limitada, y el desarrollo de software, con compiladores cruzados especializados y entornos de programación, a veces puede ser una tarea ardua. Con las computadoras portátiles y las computadoras de placa única cada vez más pequeñas y asequibles, es cada vez más común ver estos sistemas utilizados directamente en proyectos de robótica y electrónica. Esto proporciona una gran potencia para nuevas capacidades, como el procesamiento de la visión y una inteligencia artificial más sofisticada, y amplía enormemente el alcance de las herramientas y los lenguajes de desarrollo disponibles … pero también presenta un nuevo problema: la interconexión de estos sistemas "regulares" con los periféricos se realiza normalmente a través de la corriente principal. puertos de consumo como USB; no hay un "puerto I2C" disponible externamente al que podamos acceder para hacer uso de nuestros sensores … ¿o sí?

Paso 1: Opciones existentes

Opciones existentes
Opciones existentes
Opciones existentes
Opciones existentes

Una forma de conectar dispositivos I2C a una computadora de escritorio o portátil común es a través de un adaptador USB a I2C. Hay al menos una docena de opciones de este tipo, que van desde kits de bricolaje con software de código abierto hasta unidades comerciales sofisticadas con cada campana y silbido.

Una desventaja del enfoque de USB a I2C es el costo. Un modelo comercial con todas las funciones puede costar $ 250 o más. Incluso las alternativas caseras "gratuitas" asumen una colección de piezas y una inversión previa en un programador de microcontroladores y el conocimiento relacionado para hacer uso de él. Otro inconveniente es la relativa escasez de soporte de controladores fuera del popular pliegue de Windows. Pocos de estos dispositivos funcionan de forma nativa en computadoras Macintosh o Linux.

Paso 2: DDC es I2C

DDC es I2C
DDC es I2C
DDC es I2C
DDC es I2C
DDC es I2C
DDC es I2C

Cuando dije en la introducción que no hay un puerto I2C externo en la mayoría de las computadoras, mentí. Resulta que lo hay, y ha estado allí durante casi una década, en su mayoría inactivo.

La mayoría de las tarjetas gráficas y monitores modernos tienen soporte para algo llamado Display Data Channel (DDC), un enlace de comunicación dentro de un cable de video que permite que la computadora y la pantalla negocien resoluciones compatibles entre sí y permitan el control por software de las funciones del monitor a las que normalmente se accede con botones físicos en el monitor. DDC es, de hecho, simplemente una implementación de un bus I2C con algunas reglas establecidas. Al aprovechar esta conexión entre la computadora y el monitor (o haciendo uso de las líneas DDC en un puerto de video de repuesto sin usar, como la conexión de monitor externo en una computadora portátil), uno puede interactuar con algunos dispositivos I2C prácticamente sin costo, sin pasar por el Necesidad habitual de un dispositivo adaptador por completo. Todo lo que necesitamos para acceder físicamente a este bus I2C es un cable de video pirateado …

Paso 3: disección del cable

Disección del cable
Disección del cable
Disección del cable
Disección del cable

Se necesitan cuatro cables para nuestra interfaz I2C: alimentación de + 5 V, tierra, datos en serie y reloj en serie. Los pines para los distintos tipos de puertos de video se pueden encontrar en Wikipedia o Pinouts.ru. Recuerde si utiliza un cable VGA para encontrar uno con el complemento completo de pines; algunos solo incluyen un subconjunto. Al cortar el aislamiento y el blindaje desde el exterior del cable, es probable que encuentre dos grupos de cables dentro. Los cables más gruesos, o haces de cables envueltos en un blindaje adicional, suelen llevar la señal de vídeo. No estamos interesados en estos y se pueden recortar. Los cables más delgados y sin blindaje suelen transportar las señales DDC (I2C), entre otras. Un multímetro o un probador de continuidad puede ayudar a encontrar los cuatro cables correctos para su cable. El uso de un conector desnudo puede ser ventajoso aquí, ya que solo necesita soldar cuatro cables a los pines de interés. Una nota sobre la potencia de + 5V: la corriente disponible es muy limitada; aproximadamente 50 mA según la especificación DDC. La mayoría de los dispositivos I2C beben solo un poquito de corriente, por lo que debería ser posible ejecutar varios a la vez … pero si usa más de uno o dos LED (u otros dispositivos comparativamente de alta corriente), se debe proporcionar energía externa.

Paso 4: El adaptador completo

El adaptador completo
El adaptador completo

Aquí está el adaptador terminado. ¡Eso es todo al respecto! Hice el mío más rechoncho para que pudiera caber fácilmente en la bolsa de mi computadora portátil, y agregué un enchufe de cuatro pines que se conecta directamente a un servocontrolador I2C que tengo.

Paso 5: software y proyectos

Software y proyectos
Software y proyectos
Software y proyectos
Software y proyectos

El código fuente de Mac OS X y Linux para trabajar con el adaptador se puede descargar de mi sitio web (el enlace de descarga se encuentra en la parte inferior de la página). Está escrito en C y necesitará tener instalado gcc (Linux generalmente lo incluye de forma predeterminada, mientras que los usuarios de Mac deberán instalar las herramientas de desarrollo que son un instalador opcional en el disco del sistema operativo original o que se pueden descargar de forma gratuita desde Apple). Se incluye un código de ejemplo para leer un sensor de temperatura, hacer parpadear un "LED inteligente" BlinkM, escribir y verificar una EEPROM en serie, leer un controlador Nintento Wii Nunchuk (solo Linux) y comunicarse con una placa de servocontrolador. Desafortunadamente, este esquema de adaptador no lo es compatible con todos los sistemas. El soporte para DDC no es obligatorio, por lo que no todas las tarjetas de video admiten esta capacidad. Hasta ahora he tenido buena suerte con los sistemas Mac que tienen chips gráficos ATI o Intel, pero los sistemas basados en NVIDIA no tienen suerte. En el lado de Linux, solo probé con éxito un IBM ThinkPad A31p (gráficos ATI), pero no funcionaría con un Asus EeePC (Intel). Las imágenes aquí muestran una plataforma de prueba que muestra varios dispositivos I2C en acción. La computadora lee continuamente la temperatura ambiente de un sensor de temperatura I2C, registra periódicamente estos datos en un chip EEPROM serie I2C (sí, podría simplemente imprimir en un archivo, pero esto fue para demostrar más las aplicaciones I2C), y luego un servo (a través de un controlador I2C) sirve como un dial indicador improvisado. Con la biblioteca y el código de muestra para estos dispositivos ya en su lugar, solo tomó unos minutos armar esta demostración (y la mayor parte fue para hacer que el indicador se marque).

Recomendado: