Sunteți pe pagina 1din 17

COMUNICACIÓN SERIAL

HINOJOSA CHACÓN, Alberto Iván


COMUNICACIÓN SERIAL

Es un protocolo muy común para comunicación


entre dispositivos que se incluye de manera
estándar, puede ser utilizada para adquisición de
datos si se usa en conjunto con un dispositivo
remoto de muestreo
FUNCIONAMIENTO

El puerto envía y recibe bytes de información un bit a la vez, aún y cuando esto es mas lento que la
comunicación en paralelo, que permite la transmisión de un byte completo por vez; este método de
comunicación es mas sencillo y puede alcanzar mayores distancias
Típicamente, la comunicación serial se utiliza para transmitir datos en formato ASCII. Para realizar la
comunicación se utilizan 3 líneas de transmisión: (1) Tierra (o referencia), (2) Transmitir, (3) Recibir. Debido a
que la transmisión es asincrónica, es posible enviar datos por un línea mientras se reciben datos por otra.

Existen otras líneas disponibles para realizar handshaking, o intercambio de pulsos de sincronización, pero no
son requeridas. Las características más importantes de la comunicación serial son: la velocidad de transmisión,
los bits de datos, los bits de parada, y la paridad. Para que dos puertos se puedan comunicar, es necesario que
las características sean iguales.
VELOCIDAD DE TRANSMISIÓN ( BAUD RATE)

Indica el número de bits por segundo que se transfieren, y se mide en baudios


(bauds). Por ejemplo, 300 baudios representa 300 bits por segundo. Cuando se
hace referencia a los ciclos de reloj se está hablando de la velocidad de
transmisión. Por ejemplo, si el protocolo hace una llamada a 4800 ciclos de reloj,
entonces el reloj está corriendo a 4800 Hz, lo que significa que el puerto serial
está muestreando las líneas de transmisión a 4800 Hz.
VELOCIDAD DE TRANSMISIÓN (BAUD RATE)

Las velocidades de transmisión más comunes para las lineas telefónicas son de
14400, 28800, y 33600. Es posible tener velocidades más altas, pero se
reduciría la distancia máxima posible entre los dispositivos. Las altas
velocidades se utilizan cuando los dispositivos se encuentran uno junto al otro,
como es el caso de dispositivos GPIB
COMUNICACIÓN SERIAL CON ARDUINO

• Todas las placas Arduino tienen al menos un puerto serie disponible en los pines digitales 0 (RX) y 1 (TX)
compartido con el USB. Por lo tanto no es posible usar estos pines como entradas/salidas digitales.
• El Arduino mega dispone de tres puertos adicionales Serial1 on pins 19 (RX) and 18 (TX), Serial2 on pins
17 (RX) and 16 (TX), Serial3 on pins 15 (RX) and 14 (TX). Estos pines no están conectados al interfaz
USB del Arduino.
• El Arduino Due tiene tres puertos adicionales con niveles de 3.3V TTL.
COMUNICACIÓN SERIAL CON ARDUINO
(FUNCIONES)

• La funciones más importantes que debemos conocer para manejar el puerto serie son: begin(), read(), write(), print() y available())

• begin() – estable la velocidad de la UART en baudios para la transmisión serie, también es posible configurar el número de bits de datos, la paridad y los bits de stop, por defecto es 8 bits de datos, sin paridad y un
bit de stop.

• read() – lee el primer byte entrante del buffer serie.

• write() – escribe datos en binario sobre el puerto serie. El dato es enviado como un byte o serie de bytes.

• print() – imprime datos al puerto serie como texto ASCII, también permite imprimir en otros formatos.

• available() – da el número de bytes (caracteres) disponibles para leer en el puerto serie, son datos que han llegado y se almacenan en el buffer serie que tiene un tamaño de 64 bytes.

• end() – deshabilita la comunicación serie permitiendo a los pines RX y TX ser usado como pines digitales.

• find() – lee datos del buffer serie hasta encontrar el string buscado.

• parseInt() – busca el siguiente entero válido en el stream de datos del puerto serie.

• readBytes() – lee datos del buffer serie y lo guarda en una variable buffer.

• setTimeout() – configura el máximo de milisegundos de espera para la lectura del puerto serie. Por defecto es un segundo.

• readBytesUntil() – lee caracteres del buffer serie y los guarda en un array de caracteres, la función termina si el carácter terminados es encontrado o la longitud determinada se a leído o ha alcanzado el timeout.

• serialEvent() – llamado cuando hay datos disponibles.

• flush() – espera hasta la transmisión completa de los datos salientes.

• peek() – devuelve el siguiente carácter del buffer serie pero sin borrarlo de él.

• readString() – lee caracteres del buffer serie y los guarda en un string. La función termina cuando se produce un timeout
COMUNICACIÓN SERIAL CON
ARDUINO (FUNCIONES)
BUFFER SERIAL

Los puertos serie de los microcontroladores tienen un buffer que se va


llenando hasta que nosotros lo vamos leyendo con la función read()
que lo vamos vaciando, es una pila FIFO. El tamaño del buffer serie en
el Arduino Uno es de 64 bytes, cuando se llena ese buffer el resto de
elementos recibidos se pierden.
SOFTWARE SERIAL

• Cada microcontrolador tiene un número de puertos serie hardware (UART), pero se ha desarrollado la
librería SoftwareSerial para permitir la comunicación serie sobre otros pines digitales de Arduino,
usando software para replicar las funcionalidades de la comunicación serie. Es posible tener varios
puertos software serial con velocidades de hasta 11520 bps.

• El hardware Arduino tiene soporte incorporado para la comunicación en serie en los pines 0 y 1 (que
también va a la computadora a través de la conexión USB). El soporte serie nativo ocurre a través de
una pieza de hardware (integrada en el chip) llamada UART . Este hardware permite que el chip Atmega
reciba comunicación en serie incluso mientras trabaja en otras tareas, siempre que haya espacio en el
búfer en serie de 64 bytes.
LIMITACIONES

• La biblioteca tiene las siguientes limitaciones conocidas:


• Si utiliza múltiples puertos serie de software, solo uno puede recibir datos a la vez.
• No todos los pines en el Mega y Mega 2560 admiten interrupciones de cambio, por lo que solo se puede
usar lo siguiente para RX: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 ( 63), A10 (64), A11 (65), A12
(66), A13 (67), A14 (68), A15 (69).
• No todos los pines en el soporte de Leonardo y Micro cambian las interrupciones, por lo que solo se
puede usar lo siguiente para RX: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).
• En Arduino o Genuino 101, la velocidad máxima actual de RX es 57600bps
• En Arduino o Genuino 101 RX no funciona en el Pin 13
• Si su proyecto requiere flujos de datos simultáneos, consulte la biblioteca AltSoftSerial de Paul
Stoffregen .AltSoftSerial supera una serie de otros problemas con el SoftwareSerial central , pero tiene
sus propias limitaciones.
TERMINAL SERIE

• Una buena alternativa muy completa es el btaru terminal:


• Tera Term:
• Real Term
• Real term + roomba:
• KST para dibujar datos del puerto serie
USO RS232 Y RS485 EN ARDUINO
PROGRAMA CON ARDUINO
RS232 SHIELD V2
RS485

Es un estándar de comunicaciones en bus de la capa física del Modelo OSI. Está definido como un sistema de
bus diferencial multipunto, es ideal para transmitir a altas velocidades sobre largas distancias (35 Mbit/s hasta
10 metros y 100 kbit/s en 1200 metros) y a través de canales ruidosos, ya que el par trenzado reduce los
ruidos que se inducen en la línea de transmisión. El medio físico de transmisión es un par trenzado que
admite 32, 128 o 254 estaciones en 1 solo par, con una longitud máxima de 1200 metros operando entre
300 y 19 200 bit/s y la comunicación half-duplex (semiduplex) dependiendo del consumo de cada driver. La
transmisión diferencial permite alcanzar mayor distancia con una notable inmunidad al ruido, siempre que el
bus de comunicación conserve las características de bus balanceado dando la posibilidad de una
configuración multipunto.
Para usar RS485 sobre Arduino es necesario un transceiver que adapte los niveles de señal del RS485 como:
SHIELD RS485

S-ar putea să vă placă și