Comunicación serial

La comunicación serial consiste en el envío de un bit de información de manera secuencial, ésto es, un bit a la vez y a un ritmo acordado entre el emisior y el receptor.

La comunicación serial en computadores ha seguido los estándares definidos en 1969 por el RS-232 (Recommended Standard 232) que establece niveles de voltaje, velocidad de transmisión de los datos, etc. Por ejemplo, este protocolo establece un nivel de -12v como un uno lógico y un nivel de voltaje de +12v como un cero lógico (por su parte, los microcontroladores emplean por lo general 5v como un uno lógico y 0v como un cero lógico).

Existen en la actualidad diferentes ejemplos de puertos que comunican información de manera serial (un bit a la vez). El conocido como “puerto serial” ha sido gradualmente reemplazado por el puerto USB (Universal Serial Bus) que permite mayor versatilidad en la conexión de múltiples dispositivos. Aunque en naturaleza serial, no suele referenciarse de esta manera ya que sigue sus propios estándares y no los establecidos por el RS-232.

La mayoría de los microcontroladores, entre ellos Arduino, poseen un puerto de comunicación serial. Para comunicarse con los computadores personales actuales que poseen únicamente puerto USB requieren de un dispositivo “traductor”. Arduino emplea el integrado FT232R, el cual es un convertidor USB-Serial. A través de este integrado el microcontrolador puede recibir y enviar datos a un computador de manera serial.

FTDIbreakout
Tarjeta USB-Serial que emplea el chip FT232R

La parte física encargada de la comunición serial es la UART (Universal Asynchronous Receiver and Transmitter). Los microcontroladores Atmega8/168/328, en los cuales está basado Arduino, disponen de un dispositivo compatible llamado USART (Universal Synchronous and Asynchronous serial Receiver and Transmitter) que permite tanto la comunicación asincrónica como sincrónica.

En la comunicación asincrónica, la velocidad de envío de los datos es acordada a priori entre el emisor y el receptor. En la comunicación sincrónica, el envío de los datos es sincronizado por el emisor a partir de un pulso constante de reloj (Clock), con cada pulso envía un nuevo dato.

asincronica
Comunicación asincrónica

sincronica
Comunicación sincrónica

**********

Enviando datos al computadoratmega168 serial pins

Pines encargados de la comunicación serial en los microcontroladores Atmega8, Atmega 168 y Atmega328

En la comunicación con el computador Arduino emplea la comunicación asincrónica. Esto es, requiere de sólo dos líneas de conexión que corresponden con los pines 2 y 3: Pin 2 (Rx) pin de recepción y pin 3 (Tx) pin de transmisión, y del establecimiento de un nivel de tierra común con el computador, esto es, ambas tierras deben estar conectadas, estableciendo el mismo nivel de voltaje de referencia.

Además de realizar las conexiones físicas entre el microcontrolador y el computador, para que pueda establecerse la comunicación serial debe existir un acuerdo previo en la manera como van a ser enviados los datos. Este acuerdo debe incluir los niveles de voltaje que serán usados, el tamaño y formato de cada uno de los mensajes (número de bits que constituirán el tamaño de la palabra, existirá o no un bit de inicio y/o de parada, se empleará o no un bit de paridad), el tipo de lógica empleada (qué voltaje representará un cero o un uno), el orden en que serán enviados los datos (será enviado primero el bit de mayor peso o el de menor peso) y la velocidad de envío de datos.

Arduino facilita este proceso para que sólo sea necesario especificar la velocidad de envío de los datos. Esta velocidad es conocida como “baud rate” o rata de pulsos por segundo. Velocidades frecuentes de uso son 9600, 19200, 57600 y 115200.

serialmonitor

La interfaz gráfica de Arduino presenta un “monitor serial” donde pueden observarse los datos recibidos por el computador a través del puerto USB. En este monitor debe especificarse la velocidad a la cual el microcontrolador está enviando los datos, de tal manera que el computador pueda leer el puerto a esa misma velocidad.

baudrate

En la placa de Arduino hay dos LEDs que muestran la actividad de los pines Rx y Tx marcados de igual manera.

DSC02602c

**********

Otras lecturas:

Limor Fried (aka Lady Ada) tiene un excelente tutorial sobre este tema.

Tom Igoe notas sobre la comunicación serial.

**********

a. tamayo / junio 21.2009

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s