Protocolo de comunicación Arduino

Protocolo de comunicación Arduino
Los protocolos de comunicación son el conjunto de reglas que permite que los dispositivos comuniquen e intercambien datos. Estos protocolos son muy significativos en la comunicación de Arduino, ya que Arduino envía constantemente y recibe datos. El uso de estos protocolos ayuda a Arduino a cubrir la detección de errores y los posibles métodos de recuperación de errores. Estos protocolos reúnen dispositivos analógicos y digitales y hacen posible diseñar múltiples proyectos.

Protocolos de comunicación Arduino

Al usar protocolos de comunicación, podemos enviar y recibir los datos de cualquier sensor en Arduino.

Algunos sensores simples como infrarrojos (IR) pueden comunicarse directamente con Arduino, pero algunos de los sensores complejos como el módulo Wi-Fi, el módulo de tarjeta SD y el giroscopio no pueden comunicarse directamente con Arduino sin ningún protocolo de comunicación. Entonces, es por eso que estos protocolos son una parte integral de la comunicación de Arduino.

Arduino tiene múltiples periféricos adjuntos; Entre ellos hay tres periféricos de comunicación utilizados en los tableros Arduino.

  • Uart
  • SPI
  • I2C

Protocolos de comunicación Arduino

La comunicación entre diferentes dispositivos electrónicos como Arduino está estandarizado entre estos tres protocolos; Permite a los diseñadores comunicarse entre diferentes dispositivos fácilmente sin ningún problema de compatibilidad. El funcionamiento de estos tres protocolos son los mismos que tienen el mismo propósito de comunicación, pero difieren en implementación dentro de un circuito. Una descripción adicional de estos protocolos se analizan a continuación.

Uart

UART es conocido como el Transmisor de receptor asíncrono universal. UART es un protocolo de comunicación en serie, lo que significa que los bits de datos se transfieren en forma secuencial uno después del otro. Para configurar la comunicación UART necesitamos dos líneas. Uno es el pin TX (D1) del tablero Arduino y el segundo es el pin RX (D0) del tablero Arduino. El pin TX es para transmitir datos a dispositivos y se utiliza el pin RX para recibir datos. Diferentes tableros Arduino tienen múltiples alfileres UART.

Pin digital Arduino Alfiler
D1 Tx
D0 Rx

Para establecer la comunicación en serie utilizando el puerto UART, necesitamos conectar dos dispositivos en la configuración que se muestra a continuación:

En Arduino Uno, un puerto serie está dedicado a la comunicación que comúnmente se conoce como puerto USB. Como su nombre sugiere un autobús serie universal, así es un puerto serie. El uso del puerto USB Arduino puede establecer la comunicación con las computadoras. El puerto USB está conectado a los pasadores a bordo TX y RX de Arduino. Usando estos pines, podemos conectar cualquier hardware externo que no sea la computadora a través de USB. Arduino IDE proporciona biblioteca de software (SoftWareserial.h) que permite a los usuarios usar pines GPIO como pines seriales TX y RX.

  • UART es fácil de operar con Arduino
  • UART no necesita ninguna señal de reloj
  • La tasa de baudios debe establecerse dentro del límite del 10% de los dispositivos de comunicación para evitar la pérdida de datos
  • Múltiples dispositivos con Arduino en la configuración de esclavos maestros no son posibles con UART
  • UART es medio dúplex, lo que significa que los dispositivos no pueden transmitir y recibir datos al mismo tiempo
  • Solo dos dispositivos a la vez pueden comunicarse con el protocolo UART

Interfaz periférica en serie (SPI)

SPI es un acrónimo de interfaz periférica en serie que está especialmente diseñada para que los microcontroladores se comuniquen con ellos. SPI funciona en modo Full-Duplex, lo que significa que SPI puede enviar y recibir datos simultáneamente. En comparación con UART e I2C, es el periférico de comunicación más rápido en los tableros Arduino. Se usa comúnmente donde se requiere una alta velocidad de datos como en la pantalla LCD y las aplicaciones de la tarjeta Micro SD.

Los pines digitales SPI en Arduino están predefinidos. Para Arduino Uno SPI Pin, la configuración es la siguiente:

Línea SPI GPIO Pin de encabezado ICSP
Sck 13 3
MISO 12 1
Mosi 11 4
Ss 10 -
  • Mosi significa Dominar esclavo en, MOSI es la línea de transmisión de datos para el maestro a esclavo.
  • SCK es un Línea de reloj que define la velocidad de transmisión y las características de inicio final.
  • SS significa SELECCIÓN DE LA SLAVE; La línea SS permite que Master seleccione un dispositivo esclavo particular cuando funcione en una configuración de esclavos múltiples.
  • Miso significa Maestro en esclavo; MISO es esclavo a la línea de transmisión maestra para datos.

Uno de los aspectos más destacados del protocolo SPI es la configuración de esclavo maestro. El uso de SPI One Device se puede definir como maestro para controlar varios dispositivos de esclavos. El maestro tiene el control total de los dispositivos de esclavos a través del protocolo SPI.

SPI es un protocolo sincrónico, lo que significa que la comunicación está vinculada con la señal de reloj común entre el maestro y el esclavo. SPI puede controlar múltiples dispositivos como esclavo en una sola transmisión y recibir línea. Todos los esclavos están conectados al maestro usando común MISO recibir línea junto con Mosi una línea de transmisión común. Sck es también la línea de reloj común entre los dispositivos maestros y esclavos. La única diferencia en los dispositivos de esclavos es que cada dispositivo esclavo se controla a través de Ss Línea de selección. Esto significa que cada esclavo necesita un pin GPIO adicional de la placa Arduino que actuará como una línea de selección para ese dispositivo de esclavos en particular.

Algunos de los principales aspectos destacados del protocolo SPI se enumeran a continuación:

  • SPI es el protocolo más rápido que I2C y UART
  • No se requieren bits de inicio y parada como en UART, lo que significa que es posible la transmisión continua de datos
  • El esclavo se puede abordar fácilmente debido a la configuración simple de esclavos maestros
  • Para cada esclavo se ocupa un pasador adicional en la tabla Arduino. Prácticamente 1 maestro puede controlar 4 dispositivos esclavos
  • Falta el reconocimiento de datos como se usa en UART
  • La configuración maestra múltiple no es posible

Protocolo de comunicación I2C

El circuito inter integrado (I2C) es otro protocolo de comunicación utilizado por Arduino Boards. I2C es el protocolo más difícil y complicado de implementar con Arduino y otros dispositivos. A pesar de su complicación, se ofrece múltiples características que faltan en otros protocolos como múltiples configuraciones de maestro y múltiples esclavos. I2C permite conectar hasta 128 dispositivos con la placa principal de Arduino. Esto solo es posible porque I2C comparte un solo cable entre todos los dispositivos de esclavos. I2C en Arduino utiliza un sistema de direcciones, lo que significa antes de enviar datos al dispositivo de esclavo Arduino primero debe seleccionar el dispositivo esclavo enviando una dirección única. I2C usa solo dos cables que reducen el recuento general de pines arduino, pero el lado malo es I2C es más lento que el protocolo SPI.

Pin analógico de Arduino Pin i2c
A4 SDA
A5 SCL

En el nivel de hardware I2C se limita a solo dos cables, uno para una línea de datos conocida como SDA (datos en serie) y segundo para la línea de reloj SCL (reloj en serie). En estado inactivo, tanto SDA como SCL se reducen. Cuando se deben transmitir los datos, estas líneas se extraen bajas con circuitos MOSFET. Uso de I2C en proyectos Es obligatorio usar resistencias de extracción normalmente un valor de 4.7 kohm. Estas resistencias de extracción aseguran que las líneas SDA y SCL permanezcan altas en su inicio inactivo.

Algunos de los principales aspectos destacados de los protocolos I2C son:

  • El número de alfileres requeridos son muy bajos
  • Se pueden conectar múltiples dispositivos de esclavos maestros
  • Solo usa 2 cables
  • La velocidad es más lenta en comparación con SPI debido a las resistencias de extracción
  • Las resistencias necesitan más espacio en el circuito
  • Aumento de la complejidad del proyecto con el aumento en el número de dispositivos

Comparación entre UART vs I2C vs SPI

Protocolo Uart SPI I2C
Velocidad El más lento Lo más rápido Más rápido que UART
Número de dispositivos Hasta 2 4 dispositivos Hasta 128 dispositivos
Se requieren cables 2 (TX, RX) 4 (SCK, MOSI, MISO, SS) 2 (SDA, SCL)
Modo dúplex Modo dúplex completo Modo dúplex completo Medio duplex
Número de maestros-esclavos posibles Esclavo de un solo maestro Esclavos de un solo maestro-multiple Múltiples esclavos de maestros-multiples
Complejidad Simple Puede controlar fácilmente múltiples dispositivos Complejo con aumento de dispositivos
Bit de reconocimiento No No

Conclusión

En este artículo, hemos cubierto una comparación completa de los tres protocolos UART, SPI e I2C utilizados en Arduino. Conocer todos los protocolos es importante, ya que brinda interminables oportunidades para integrar múltiples dispositivos. Comprender todos los periféricos de comunicación ahorrará tiempo y ayudará a optimizar los proyectos de acuerdo con el protocolo correcto.