INICIO

sábado, 13 de junio de 2015

1.11 Puerto serie básico.



1.11.1. ¿Qué es el puerto serie?
El puerto serie es un puerto de comunicación estándar en muchos sistemas digitales. Establece la comunicación entre dos puntos a una velocidad determinada en bits por segundo (bps o baudios).
El puerto serie puede servir tanto para hacer que Arduino Uno comunique con un ordenador, como para hacer que dos Arduinos “hablen” entre sí. El puerto USB, con el que Arduino conecta a tu PC, tiene un modo de comunicación que simula un puerto serie.
Muchos de los dispositivos que existen, usan el puerto serie como sistema de comunicación básico. Si bien puede que no te ofrezcan una conexión física donde hacerlo, tu ordenador, tu teléfono, tu lavadora o el ascensor de tu casa, tienen un puerto serie de comunicación que se puede utilizar para reparar el sistema a bajo nivel.
En Arduino Uno, el puerto serie está en los pines 0 y 1, por lo que se recomienda dejar esos pines libres a la hora de hacer proyectos si es que quieres usar el puerto de algún modo como para mandar datos a un ordenador o leer un sensor complejo como un GPS.
1.11.2. Envía desde Arduino
Para probar a enviar datos desde Arduino, sólo tienes que cargar el programa “Archivo Ejemplos Analog AnalogInOutSerial. Este ejemplo, lee el valor de un potenciómetro conectado a Arduino y lo envía de vuelta al ordenador.
Para poder ver los datos en la pantalla, la barra de tareas del IDE de Arduino tiene la opción “Puerto Serie”; se trata de un icono con forma de lupa. Al hacer click sobre él, se abre una venta de diálogo que permite tanto enviar como recibir datos de Arduino.
Si ejecutas el mencionado ejemplo, verás una secuencia de datos que llegar a tu ventana.
Por otra parte, puedes probar a hacer un ejemplo sencillo de comunicación para ver cuales son los comandos básicos para establecer la comunicación. El programa más sencillo sería así:
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println(“Hola Caracola”);
delay(100);
}
Si ejecutas este programa y abres el monitor serie, verás como se escribe el mensaje “Hola Caracola” sobre el monitor a una velocidad de 10 veces por segundo.
Verás que hemos puesto un retardo (delay) dentro del loop. Esto es recomendable puesto que tu Arduino Uno es capaz de enviar datos más rápido de lo que tu PC es capaz de leer. Si no lo hicieras así, seguramente saturarías el puerto de comunicación de tu ordenador.
1.11.3. Nuevos comandos
Serial.begin(velocidad) establece como se ha de configurar el puerto para enviar datos entre Arduino y el ordenador. Es importante notar que Serial.begin(9600) -tal y como lo vimos en el ejemplo anterior- usa la velocidad de envío de datos de 9600 baudios por el puerto. Esto quiere decir que, cada segundo, se envían 9600 bits, o 9600 1's y 0's por el puerto. Esta velocidad es la que se usa por defecto. Prácticamente todos los dispositivos que pueden comunicar por puerto serie, pueden hacerlo a esa velocidad.
Serial.println(texto) envía una cadena de texto hacia el ordenador incluyendo un final de línea/retorno de carro al final.
1.11.4. Recibe en Arduino
El ejemplo más sencillo para probar la comunicación desde el PC hacia Arduino Uno se encuentra en “Archivo Ejemplos Comunication Physical Pixel. La idea detrás de este ejemplo es transformar tu placa en un pixel que puedas controlar remotamente desde el PC. Como Arduino Uno tiene un led en el pin 13 que puedes controlar por software, es como si fuera un pixel físico.
Carga el programa en tu placa y abre el monitor serie. El campo de texto de arriba en la ventana de diálogo te permite escribir datos através del puerto. En este caso la hache mayúscula o “H” encenderá el led, mientras que la ele mayúscula o “L” lo apagará. El dato no se envía automáticamente, tienes que bien hacer click en el botón “send” o presionar “enter” en tu teclado para que se envíe el dato.
1.11.5. Nuevos comandos (2)
Dentro del ejemplo “Physical Pixel” verás estos comandos nuevos:
·         Serial.available() sirve para ver si han llegado datos por el puerto serie. Al invocarlo, nos responde con el número de datos que han llegado por el puerto y que se han almacenado en la memoria de Arduino.
·         Serial.read() nos devuelve el primer dato que llegó por el puerto de comunicación. Además borra ese valor de la memoria, de modo que Serial.available() decrementará en una unidad la próxima vez que lo llames.
1.11.6. Aplicaciones educativas
La comunicación serie es la forma más básica de comunicación por protocolo entre sistemas digitales. Su comprensión es fundamental para entender otros sistemas de comunicación como redes de ordenadores y similares.

No hay comentarios:

Publicar un comentario