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