Protocolo de comunicación Arduino

Protocolo De Comunicacion Arduino



Los protocolos de comunicación son el conjunto de reglas que permite que los dispositivos se comuniquen e intercambien datos. Estos protocolos son muy importantes en la comunicación de Arduino, ya que Arduino envía y recibe datos constantemente. 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 unen dispositivos analógicos y digitales y hacen posible el diseño de múltiples proyectos.

Protocolos de comunicación de Arduino

Mediante el uso de protocolos de comunicación, podemos enviar y recibir datos de cualquier sensor en Arduino.

Algunos sensores simples como el infrarrojo (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 varios periféricos conectados; entre ellos hay tres periféricos de comunicación utilizados en las placas Arduino.



Protocolos de comunicación de Arduino

La comunicación entre diferentes dispositivos electrónicos como Arduino está estandarizada entre estos tres protocolos; permite a los diseñadores comunicarse fácilmente entre diferentes dispositivos sin problemas de compatibilidad. El funcionamiento de estos tres protocolos es el mismo ya que tienen el mismo propósito de comunicación, pero difieren en la implementación dentro de un circuito. A continuación se analiza una descripción más detallada de estos protocolos.







UART

UART es conocido como el Transmisor 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 tras otro. Para configurar la comunicación UART necesitamos dos líneas. Uno es el pin Tx (D1) de la placa Arduino y el segundo es el pin Rx (D0) de la placa Arduino. El pin Tx es para transmitir datos a dispositivos y el pin Rx se usa para recibir datos. Diferentes placas Arduino tienen múltiples pines UART.

Pines digitales de Arduino Alfiler UART
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 sugiere el nombre Universal Serial Bus, es un puerto serie. Usando el puerto USB Arduino puede establecer comunicación con las computadoras. El puerto USB está conectado a los pines integrados Tx y Rx de Arduino. Usando estos pines, podemos conectar cualquier hardware externo que no sea una computadora a través de USB. Arduino IDE proporciona la biblioteca SoftwareSerial (SoftwareSerial.h) que permite a los usuarios usar pines GPIO como pines Serial Tx y Rx.

  • UART es simple 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 configuración Master Slave no son posibles con UART
  • UART es semidú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 de periféricos en serie (SPI)

SPI es un acrónimo de interfaz periférico serial que está especialmente diseñado para que los microcontroladores se comuniquen con ellos. SPI opera en modo dúplex completo, 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 las placas Arduino. Se usa comúnmente cuando se requiere una alta velocidad de datos, como en pantallas LCD y aplicaciones de tarjetas Micro SD.

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

Línea SPI GPIO Clavija de cabecera ICSP
SCK 13 3
MISO 12 1
FUMAR 11 4
SS 10
  • MOSI significa Maestro fuera Esclavo adentro , MOSI es la línea de transmisión de datos de Maestro a Esclavo.
  • SCK es un línea de reloj que define la velocidad de transmisión y las características de inicio y fin.
  • SS significa Selección de esclavo ; La línea SS permite que el Maestro seleccione un dispositivo Esclavo en particular cuando se opera en una configuración Esclavo múltiple.
  • MISO significa maestro en esclavo fuera ; MISO es una línea de transmisión de datos de esclavo a maestro.

Uno de los aspectos más destacados del protocolo SPI es la configuración Maestro-Esclavo. Usando SPI, un dispositivo puede definirse como maestro para controlar varios dispositivos esclavos. El maestro tiene el control total de los dispositivos esclavos a través del protocolo SPI.

SPI es un protocolo síncrono, lo que significa que la comunicación está vinculada con una señal de reloj común entre Maestro y Esclavo. SPI puede controlar varios dispositivos como esclavos en una sola línea de transmisión y recepción. Todos los Esclavos están conectados al Maestro usando común MISO línea de recepción junto con FUMAR una línea de transmisión común. SCK es también la línea de reloj común entre los dispositivos Maestro y Esclavo. La única diferencia en los dispositivos esclavos es que cada dispositivo esclavo se controla a través de SS seleccionar línea. Esto significa que cada Esclavo necesita un pin GPIO adicional de la placa Arduino que actuará como línea de selección para ese dispositivo Esclavo en particular.

Algunos de los aspectos más 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 direccionar fácilmente debido a la configuración simple de Maestro Esclavo
  • Para cada esclavo, se ocupa un pin adicional en la placa Arduino. Prácticamente 1 Maestro puede controlar 4 dispositivos Esclavos
  • Falta el reconocimiento de datos como se usa en UART
  • La configuración de múltiples maestros no es posible

Protocolo de comunicación I2C

Inter Integrated Circuit (I2C) es otro protocolo de comunicación utilizado por las placas Arduino. I2C es el protocolo más difícil y complicado de implementar con Arduino y otros dispositivos. A pesar de su complicación, ofrece múltiples funciones que faltan en otros protocolos, como configuraciones de múltiples maestros y múltiples esclavos. I2C permite conectar hasta 128 dispositivos a la placa Arduino principal. Esto solo es posible porque I2C comparte un solo cable entre todos los dispositivos esclavos. I2C en Arduino utiliza un sistema de direcciones, lo que significa que antes de enviar datos al dispositivo esclavo, Arduino primero debe seleccionar el dispositivo esclavo enviando una dirección única. I2C usa solo dos cables, lo que reduce el número total de pines de Arduino, pero el lado malo es que I2C es más lento que el protocolo SPI.

Pines analógicos de Arduino Pasador I2C
A4 ASD
A5 SCL

A nivel de hardware, I2C está limitado a solo dos cables, uno para una línea de datos conocida como SDA (datos en serie) y el segundo para la línea del reloj SCL (Reloj Serie). En estado inactivo, tanto SDA como SCL se elevan. Cuando es necesario transmitir datos, estas líneas se bajan utilizando un circuito MOSFET. Al usar I2C en proyectos, es obligatorio usar resistencias pull up normalmente con un valor de 4.7Kohm. Estas resistencias pull up aseguran que las líneas SDA y SCL permanezcan altas en su arranque inactivo.

Algunos de los aspectos más destacados de los protocolos I2C son:

  • El número de pines requeridos es muy bajo
  • Se pueden conectar múltiples dispositivos Master Slave
  • Solo usa 2 cables
  • La velocidad es más lenta en comparación con SPI debido a las resistencias pull up
  • Las resistencias necesitan más espacio en el circuito
  • Aumento de la complejidad del proyecto con el aumento del número de dispositivos

Comparación entre UART vs I2C vs SPI

Protocolo UART SPI 2C
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 (transmisión, recepción) 4 (SCK, HUMO, OJOS, SS) 2 (SDA, SCL)
Modo dúplex Modo dúplex completo Modo dúplex completo Medio duplex
Número de Master-Slaves posibles Único maestro-esclavo único Único maestro-múltiples esclavos Múltiples Maestros-Múltiples Esclavos
Complejidad Simple Puede controlar fácilmente múltiples dispositivos Complejo con aumento de dispositivos
bit de confirmación No No

Conclusión

En este artículo, hemos cubierto una comparación exhaustiva de los tres protocolos UART, SPI e I2C utilizados en Arduino. Conocer todos los protocolos es importante ya que brinda infinitas 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.