Sie sind auf Seite 1von 10

Leccin

4:
Utilizar
las
comunicaciones serie para enviar
informacin del Arduino a nuestro
ordenador
Hemos visto en las lecciones anteriores como nuestro Arduino puede
interactuar con el mundo exterior recibiendo informacin por sus entradas
digitales y generando rdenes con sus salidas digitales. A estas alturas del
curso todava las "capacidades sociales" de nuestro Arduino son muy limitadas,
pero en esta leccin vamos a intentar aumentar su crculo social. Las
comunicaciones serie son una forma sencilla y flexible de comunicar nuestro
Arduino con otros equipos. Por ejemplo con otro arduino, con nuestro
ordenador personal o con cualuqier otro dispositivo que sea capaz de
comunicarse por un puerto serie.
Habilitar las comunicaciones serie entre dos equipos involucra tareas referntes
al hardware y al software. El hardwre posibilita el intercambio de seales
elctricas entre los dos equipos con unos valores normalizados que entienden
ambos interlocutores. El software se apoya en el hardware para intercambiar
informacin entre los equipos. Las libreras de comunicaciones serie
suministradas con Arduino nos liberan de prcticamente todo el trabajo y slo
tenemos que preocuparnos de dos cosas: conectar los dos equipos en los
pines correctos y utilizar las funciones disponibles para mandar las cadenas de
caracteres deseadas. Sin embargo hay unas nociones bsicas que nos
resultarn tiles para poder solucionar problemas cuando nuestras
comunicaciones fallen. Si el lector est familiarizado con las comunicaciones
serie entre microprocesadores puede saltar esta introduccin.
[Introduccin a las comunicaciones serie]
La comunicacin entre dos dispositivos se establece intercambiando cadenas
de caracteres. Por ejemplo podemos querer enviar la cadena de caracteres
"Saludos". Cada caracter de nuestra cadena se codifica utilizando un byte
segn un cdigo que se conoce con el nombre de ASCII. Cada byte se
compone de un conjunto de ocho bits distintos. El bit es la unidad mnima de
informacin y slo toma valores digitales (verdadero o falso). Es decir que para
enviar nuestra cadena de ejemplo entre los dos microprocesadores, lo que
tenemos que enviar es una "serie" de bits concreta.
Por ejemplo, para enviar nuestra cadena "Saludos" tendramos que enviar una
serie de 56 bits (7 bytes).
Las comunicaciones serie a nivel de hardware se establecen enviando cadenas
de pulsos elctricos unos a continuacin de otros (en serie), cada uno de los
cuales representa un bit de informacin. Si el nivel elctrico del pulso es bajo,
es decir su tensin es de 0V, significa que el valor de ese bit es 0. Si el nivel del

pulso es alto, es decir su tensin es 5V, significa que el valor de ese bit es 1.
Por lo tanto nuestra cadena de 56 bits se tiene que convertir en un tren de
pulsos de niveles alto o bajo.

Muchas de las tarjetas Arduino tiene incluido un chip que se encarga de


traducir los valores de tensin TTL a los niveles estndar utilizados por las
comunicaciones serie que cumplen el estndar USB. De la misma forma
podramos utilizar un chip para convertir nuestro puerto serie en otro de un
estandar diferente (por ejemplo RS232, CANBUS, etc). En cualquier caso el
funcionamiento del software sera el mismo.
Por ltimo, con objeto de realizar labores de sincronizaciin y de verificacin de
errores entre el emisor y el receptor, la cadena de bits se enmarca entre
cdigos de control estandarizados por el protocolo de comunicaciones (bits de
arranque, bits de parada y bits de control).

[Fin de la introduccin de las comunicaciones serie]

Como todo este curso lo estamos realizando utilizando Proteus como


simulador, necesitamos simular de alguna manera nuestro ordenador PC
realizando funciones de terminal para comunicarse con nuestro equipo Arduino.
En la barra de herramientas de la izquierda seleccionamos el botn
instrumentos virtuales y en la lista que aparece escogemos "virtual terminal".

Colocamos el terminal virtual en nuestro esquema y lo unimos a los terminales


TXD y RXD.

El terminal TXD est unido por una resistencia al pin IO1 y el terminal RXD al
pin IO2 del Arduino (los pines del puerto serie). Observar que hemos unido el
terminal TXD del Arduino con el RXD del terminal y el RXD del Arduino con el
TXD del terminal. De esta manera cruzada el emisor de uno se une al receptor
del otro. De esta forma tan sencilla ya tenemos enlazado nuestro equipo
Arduino con nuestro ordenador PC.

A continuacin tenemos que escribir nuestro programa que se encargar de


enviar una cadena de caracteres hacia el terminal virtual utilizando el protocolo
serie.

Nuestro programa es muy sencillo. En la zona de configuracin inicializamos el


puerto serie para que se comunique a una velocidad de 9600 baudios. El
baudio es la unidad de medida de la velocidad de las comunicaciones serie. Un
baudio equivale a un bit por segundo. Y en la zona del lazo de ejecucin
enviamos la cadena Saludos por el puerto serie, esperamos un 1 segundo y
volvemos a iniciar el ciclo. El resultado, si ejecutamos nuestro programa, tiene
que ser ver en el terminal virtual una cadena de saludo cada segundo.

Si no puede ver el terminal virtual, compruebe que lo tiene activo en el men


Depuracin en la opcin 5. Virtual terminal.
El siguiente programa combina varios de los conceptos vistos en lecciones
anteriores y utiliza variables, salidas digitales, comunicaciones serie para enviar
un mensaje cada segundo, cambiar el estado de un led cada nuevo mensaje.
Utilizamos un variable llamada nmero para hacer las funciones de contador y
distinguir cada mensaje enviado.

Observe que hemos utilizado dos funciones diferentes para enviar cadenas por
nuestro puerto serie. La funcin Serial.print(), ya vista antes, enva una cadena
de caracteres o un nmero por el puerto serie. Sin embargo, la funcin
Serial.println(), despus de enviar la cadena de caracteres o el nmero por el
puerto serie, enva tambin un cdigo de control que genera un salto de lnea.
De esta forma, en este nuevo programa resulta ms sencilla la lectura en el
terminal virtual de la informacin recibida porque cada nuevo mensaje, y el
contador que los numera, se muestra en una lnea diferente.

La funcin Serial.println() nos permite enviar nmeros con formatos diferentes


(decimal, octal, hexadecimal, binario, etc). El siguiente programa muestra un
ejemplo de utilizacin de estas posibilidades.

Das könnte Ihnen auch gefallen