Computing">
Nothing Special   »   [go: up one dir, main page]

Lección 4

Descargar como doc, pdf o txt
Descargar como doc, pdf o txt
Está en la página 1de 10

Lección 4: Utilizar las

comunicaciones serie para enviar


información del Arduino a nuestro
ordenador

Hemos visto en las lecciones anteriores como nuestro Arduino puede


interactuar con el mundo exterior recibiendo información por sus entradas
digitales y generando órdenes con sus salidas digitales. A estas alturas del
curso todavía las "capacidades sociales" de nuestro Arduino son muy limitadas,
pero en esta lección vamos a intentar aumentar su círculo 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 señales
eléctricas entre los dos equipos con unos valores normalizados que entienden
ambos interlocutores. El software se apoya en el hardware para intercambiar
información entre los equipos. Las librerías de comunicaciones serie
suministradas con Arduino nos liberan de prácticamente todo el trabajo y sólo
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 básicas que nos
resultarán útiles para poder solucionar problemas cuando nuestras
comunicaciones fallen. Si el lector está familiarizado con las comunicaciones
serie entre microprocesadores puede saltar esta introducción.
[Introducción a las comunicaciones serie]
La comunicación 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
según un código que se conoce con el nombre de ASCII. Cada byte se
compone de un conjunto de ocho bits distintos. El bit es la unidad mínima de
información y sólo 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" tendríamos que enviar una
serie de 56 bits (7 bytes).
Las comunicaciones serie a nivel de hardware se establecen enviando cadenas
de pulsos eléctricos unos a continuación de otros (en serie), cada uno de los
cuales representa un bit de información. Si el nivel eléctrico del pulso es bajo,
es decir su tensión es de 0V, significa que el valor de ese bit es 0. Si el nivel del
pulso es alto, es decir su tensión 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 tensión TTL a los niveles estándar utilizados por las
comunicaciones serie que cumplen el estándar USB. De la misma forma
podríamos 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 sería el mismo.
Por último, con objeto de realizar labores de sincronizacióin y de verificación de
errores entre el emisor y el receptor, la cadena de bits se enmarca entre
códigos de control estandarizados por el protocolo de comunicaciones (bits de
arranque, bits de parada y bits de control).

[Fin de la introducción 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 botón
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 continuación 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 configuración 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 ejecución
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ú
Depuración en la opción 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 número 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 función Serial.print(), ya vista antes, envía una cadena
de caracteres o un número por el puerto serie. Sin embargo, la función
Serial.println(), después de enviar la cadena de caracteres o el número por el
puerto serie, envía también un código de control que genera un salto de línea.
De esta forma, en este nuevo programa resulta más sencilla la lectura en el
terminal virtual de la información recibida porque cada nuevo mensaje, y el
contador que los numera, se muestra en una línea diferente.
La función Serial.println() nos permite enviar números con formatos diferentes
(decimal, octal, hexadecimal, binario, etc). El siguiente programa muestra un
ejemplo de utilización de estas posibilidades.

También podría gustarte