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 | Sí |
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.