Comunicaciones serie en Arduino (UART, I2C y SPI)

Publicado por Loli Diéguez en

El uso de pines digitales y analógicos en el Arduino tarde o temprano se pueden quedar cortos para tus proyectos y será necesario que uses algún periférico conectado a tu placa Arduino. 

Tradicionalmente, en los ordenadores convencionales, los periféricos son dispositivos externos como el ratón, el teclado, las unidades de disco, etc... que se conectan a la ordenador principal pero son independientes de él. Cuando hablamos de periféricos en Arduino, este término se refiere a una parte de la placa que está dedicada a una tarea específica que no está relacionada con la CPU. Los periféricos se pueden considerar como unidades integradas en la placa Arduino que facilitan las tareas especiales.

Si bien el Arduino contiene muchos periféricos, en este articulo os comento brevemente los puertos de comunicaciones serie de los que esta placa esta provisto, como son el puerto UART, el I2C y el SPI. Estos tres formatos de transmisión de datos en serie, están disponibles en Arduino, aunque cada modelo de placa tiene un numero diferente de pines I2C y SPI.

Puertos Serie Arduino Uno

 

Puerto UART en Arduino

UART significa recepción y transmisión asíncronas universales y es un protocolo de comunicación simple que permite que Arduino se comunique con dispositivos serie. El sistema UART usa los pines digitales 0 (RX) y 1 (TX) y con otro PC a través del puerto USB.

 

Arduino UART

 

Este periférico, que se encuentra en todas las placas Arduino, permite que Arduino se comunique directamente con un PC gracias al hecho de que Arduino tiene un convertidor de USB a serie incorporado (ATmega16U2).

 

Arduino ATmega16U2

 

Con este componente, los programas escritos en Windows, Mac o Linux se pueden usar con un Arduino conectado a través de USB como si fuera un puerto serie.

 

Puerto I2C en Arduino

El siguiente método de comunicación serie que os comento es I2C, que es un protocolo de comunicaciones para una interfaz de dos cables que permite conectar dispositivos de baja velocidad como microcontroladores, EEPROM, convertidores A/D y D/A, interfaces de E/S y otros periféricos similares en sistemas integrados. Fue inventado por Philips y ahora es usado por casi todos los principales fabricantes de circuitos integrados.

Si bien este periférico casi nunca se usa para la comunicación entre dispositivos PCs, es increíblemente popular entre los módulos y sensores, lo que lo hace útil para proyectos que requieren muchos componentes trabajando juntos. De hecho, I2C permite conectar casi hasta 128 dispositivos a tu placa Arduino.

 

I2C

 

Cuando conectas dos circuitos entre sí, piensa en el dispositivo principal como el "maestro" y los dispositivos conectados, como sensores, expansiones de pines y controladores, como "esclavos". I2C hace posible la conexión de múltiples maestros y esclavos a tu placa, a la vez que mantiene una vía de comunicación clara.

Es posible mantener una vía de comunicación clara, ya que este protocolo utiliza un sistema de direcciones y un bus compartido, lo que permite que muchos dispositivos pueden conectarse a los mismos cables y Arduino tendrá que "llamar" a cada dispositivo conectado al bus, a través de la dirección que se le asigne, es decir, Arduino primero tendrá que seleccionar un dispositivo específico transmitiendo una dirección única antes de enviar datos al modulo en cuestión. I2C usa menos cables y todos los datos se transmiten por un solo cable, lo que mantiene el número de pines bajo. La compensación por este cableado simplificado es a velocidades más lentas que el SPI.

 

Puerto SPI en Arduino

Por ultimo, tenemos el protocolo SPI que significa Interfaz Periférica Serial. Al igual que I2C, SPI es una forma diferente de protocolo de comunicaciones en serie especialmente diseñado para que los microcontroladores se comuniquen entre sí. Sin embargo, tiene algunas diferencias clave con respecto a I2C.

La diferencia más notable desde el principio es que, si bien puedes usar múltiples maestros y esclavos con I2C, con el puerto SPI permite un solo dispositivo maestro con un máximo de cuatro dispositivos esclavos.

SPI en Arduino

Normalmente, SPI es mucho más rápido que I2C debido al protocolo simple y, aunque las líneas de datos/reloj se comparten entre dispositivos, cada dispositivo requiere un cable de dirección único. SPI se encuentra comúnmente en lugares donde la velocidad es importante, como con las tarjetas SD y los módulos de pantalla, o cuando la información se actualiza y cambia rápidamente, como con los sensores de temperatura.

 

Como ves, Arduino tiene muchas mas opciones para conectar dispositivos ademas de sus pines digitales y analógicos, lo que os he traído hoy es una simple introducción a estos protocolos de comunicaciones serie que Arduino tiene, en artículos futuros os comentaré cada protocolo más a fondo...Espero que te guste!


Compartir esta publicación



← Publicación más antigua Publicación más reciente →