2.2. Comunicaciones entre dispositivos
2.2.2. Comunicación en microprocesadores
En el presente Trabajo Fin de Grado se ha utilizado un microprocesador, en concreto, el incluido en una placa Arduino, la cual se ha debido comunicar con el exterior, tanto con el sensor como con el módulo Bluetooth y el ordenador. Se describen en este apartado los distintos tipos de comunicación entre micros.
Francisco Pérez Maquieira 25 Es obvia la necesidad de comunicación en microprocesadores. Los micros necesitan recibir y enviar información al exterior. Por ejemplo, un microcontrolador encargado del control de una puerta automática necesita leer de un sensor de posición, el cual detecta si hay una persona en las proximidades, y debe actuar sobre los motores encargados de abrir y cerrar la puerta.
Para completar esta comunicación son necesarios los puertos E/S o Entrada/Salida, que son interfaces a través de las cuales el micro puede intercambiar bits con el exterior, formando buses de datos. Estos puertos se clasifican en puerto paralelo o serie [16], según la forma en la que se envía la información.
2.2.2.1. Puerto paralelo
Los puertos paralelos pueden enviar datos de manera simultánea a través de varias líneas de información o buses. Mediante el puerto paralelo los bits de datos viajan juntos, enviando un byte al mismo tiempo. Esta comunicación puede ser tanto síncrona como asíncrona, y su bus tiene un ancho variable.
Debido a sus características, la E/S paralela una serie de ventajas e inconvenientes:
Es la forma de comunicación más rápida.
Puede transferir un mayor número de bits, debido al uso simultáneo de varios pines.
Es relativamente sencilla de utilizar.
En ocasiones, es necesario el uso de los pines ocupados por el puerto paralelo para otras tareas.
Puede haber elementos con los que se establece la comunicación que no permiten conexión paralela.
Es posible que surja ruido en caminos largos.
2.2.2.2. Puerto serie
Mediante la conexión serial solo es posible la transmisión de datos digitales bit a bit. La comunicación serial es asíncrona, es decir, no es necesario un reloj que sincronice el micro y el periférico, debido a la secuencialidad de la conexión. En cambio, se suelen utilizar bits de control, los cuales indican el comienzo y el fin del carácter enviado. De esta forma, se envía un bit de inicio, tras esto el byte a enviar, y un bit de fin. Así, de 10 caracteres enviados, solo 8 contienen información, perdiendo un 20% de ancho de banda.
Las ventajas e inconvenientes del puerto serie son:
Ahorra pines, lo cual puede ser beneficioso para placas pequeñas, donde sean necesarios la mayoría de sus pines.
Está presente en la mayor parte de los micros, los cuales incluyen periféricos para tratar estas comunicaciones.
26 Escuela Técnica Superior de Ingenieros Industriales (UPM)
Es más lenta, ya que se envía información de byte en byte.
Es más compleja de utilizar.
Existen varios protocolos serie, los cuales se describirán para entender la forma en la que se ha realizado la comunicación con el exterior.
i2C (Inter-Integrated Circuit)
Se trata de un bus serie desarrollado por Phillips, el cual se utiliza principalmente para comunicar distintas partes de un circuito. La interfaz i2C consiste en un bus síncrono maestro-esclavo, formado por dos cables llamados SDA (línea de datos) y SCL (línea de reloj), además de otro cable que conecta las masas del dispositivo.
Figura 11: Esquema físico de la interfaz i2C. Son necesarias las resistencias de pull-up desde la alimentación, y condensadores entre líneas [F11].
Como se introdujo anteriormente, en la comunicación serial existirá un dispositivo que sea el maestro, que estará conectado a uno o varios esclavos. El proceso de comunicación es:
1. El maestro es quien genera la señal de reloj por la línea SCL, la cual sincroniza el resto de dispositivos.
2. Una vez sincronizados, el maestro envía una dirección de esclavo (aquel dispositivo con el que se comunicará), de 7 bits, un bit de lectura/escritura, además del número de bytes que ocupará la comunicación.
3. El esclavo envía un bit de confirmación (Acknowledge), y envía o recibe información al maestro.
4. Todos los esclavos vuelven a estar disponibles de nuevo.
Figura 12: Esquema de transmisión de datos mediante i2C [F12].
La placa Arduino dispone de soporte i2C por hardware, mediante los pines A4 y A5, además de tener la librería “Wire.h”.
Francisco Pérez Maquieira 27
SPI (Serial Peripheral Interface)
A diferencia de la comunicación i2C, SPI es una interfaz que posee dos líneas de datos, una a través de la cual el maestro envía datos, llamada MOSI (Master Out Slave In), y otra, mediante la que este recibe la información, denominada MISO (Master In Slave Out). Al haber dos líneas, la conexión se denomina full dúplex, y la información puede ser enviada y recibida por el maestro simultáneamente, al contrario que en la conexión i2C (comunicación
simplex). La comunicación SPI es síncrona, por lo que requiere otra señal de reloj, SCLK. Además, se utiliza otra señal para que el maestro pueda seleccionar qué esclavo debe enviar o recibir información.
A pesar de la alta velocidad que proporciona esta comunicación, tiene la desventaja del mayor número de pines y líneas utilizadas, más cuanto mayor número de esclavos se comuniquen con el maestro.
Figura 13: Esquema de comunicación SPI [F13].
Arduino permite utilizar también esta comunicación vía hardware, mediante los pines 10, 11, 12 y 13, y vía software mediante la librería “SPI.h”.
28 Escuela Técnica Superior de Ingenieros Industriales (UPM)
UART (Universal Asynchronous Receiver/Transmitter)
UART es una comunicación full dúplex, ya que cuenta con dos líneas de intercambio de datos, RX (recepción) y TX (transmisión), además de una línea de tierra común. Para que tenga lugar la comunicación, debe conectarse RX de un dispositivo con TX de otro, y viceversa, de forma que ambos dispositivos puedan enviar y recibir información.
Figura 14: Esquema de la comunicación UART [F14].
La transferencia de datos UART es asíncrona, por lo que no es necesaria una línea de reloj, y se realiza byte a byte, de manera secuencial. La velocidad de la comunicación se mide en baudios, que es el número de símbolos por segundos que se transfieren (no tiene por qué ser un único bit). Una velocidad típica, usada normalmente en Arduino es de 9600 baud. Se utiliza un bit de inicio y otro de fin, mediante los cuales, el dispositivo que establece la comunicación puede comunicar al esclavo cuándo comienza o acaba la transferencia de bits.
Figura 15: Trama de la conexión UART [F15].
Arduino integra la comunicación UART de forma hardware mediante los pines 0 y 1, lo cual simplifica la comunicación serial.
Francisco Pérez Maquieira 29