ARDUINO Puerto SERIE

Los puertos serie son la forma principal de comunicar una placa Arduino con un ordenador. Gracias al puerto de serie podemos, encender o apagar un dispositivo desde una página Web a través de Internet, o desde una aplicación móvil a través de Bluetooth, por citar entre muchas funciones que permite.

Existen un sin fin de posibilidades en las que se requiere el empleo del puerto serie. Por tanto el puerto serie es un componente fundamental de una gran cantidad de proyectos de Arduino, y es uno de los elementos básicos que debemos aprender para poder sacar todo el potencial de Arduino.

CONEXIÓN DEL ARDUINO CON UN ORDENADOR

Para realizar la conexión mediante puerto serie unicamente es necesario conectar nuestra placa Arduino empleando el mismo interface que empleamos para programarlo. A continuación abrimos el IDE Standard de Arduino y hacemos click en el “Monitor Serial” como se indica en al imagen.

arduino-serial-monitor-IDE

El monitor de puerto serie es una pequeña utilidad integrada dentro de IDE Standard que nos permite enviar y recibir fácilmente información a través del puerto serie. Su uso es muy sencillo, y dispone de dos zonas, una que muestra los datos recibidos, y otra para enviarlos. Estas zonas se muestran en la siguiente imagen.

arduino-serial-monitor

Pese a su sencillez este monitor de puerto serie es suficiente para los ejemplos de esta entrada, y resulta muy útil para realizar test o experimentos rápidos, así como para debugear nuestro propio código.

En el caso que vieramos caracteres raros en el monitor serial, esto nos idicaria que no hemos sincronizado velocidad de transmisión de datos entre el codigo subido a la placa y la ventana de Serial. Para corregirlo sencillamente deberíamos escojer la velocidad correcta en el monitor serial (en el caso anterior, 57600 baudio).

RECIBIR INFORMACIÓN DESDE EL ARDUINO

En este primer código vamos a recibir el valor de un contador enviado desde la placa Arduino. Este valor se incrementa cada segundo. Podemos observar como se reciben los valores desde del monitor serial. (seleccionar en el serial terminal que este configurada la velocidad de transmisión en 9600baud)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

int cont=0;

void setup(){

 //iniciamos el puerto de serie

 Serial.begin(9600);

}

void loop(){

 //Imprimimos el valor del contador

 Serial.print("Contador: ");

 Serial.println(cont);

 //incrementamos el contador y esperamos un segundo

 cont++;

 delay(1000);

}

ENVIAR INFORMACIÓN AL ARDUINO

En este ejemplo empleamos el puerto de serie para encender o apagar el LED integrado en la placa Arduino. Para ello enviamos un carácter a la placa Arduino, empleando el monitor serial. En caso de enviar ‘a’ la placa Arduino apaga el LED, y en caso de enviar ‘b’ lo enciende. (seleccionar en el serial terminal que este configurada la velocidad de transmisión en 9600baud)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

int option;

int led = 13;

void setup(){

 Serial.begin(9600);

 pinMode(led, OUTPUT);

}

void loop(){

 //si existe datos disponibles los leemos

 if (Serial.available()>0){

   //leemos la opcion enviada

   option=Serial.read();

   if(option=='a') {

     digitalWrite(led, LOW);

     Serial.println("OFF");

   }

   if(option=='b') {

     digitalWrite(led, HIGH);

     Serial.println("ON");

   }

 }

}

 

RESUMEN FUNCIONES BASICAS DE SERIAL

Para usar el puerto serie del Arduino debemos recordar sus funciones de programación:

-begin(velocidad) Abre el puerto serie y establece la velocidad. La velocidad de conexión (baudios o Baud Rate) es la velocidad que llegan los datos al puerto serie. Normalmente se usa 9600bps o 115000bps.

-available() Esta función devuelve el estado del buffer del puerto serie y rebela si hay datos dentro de este.

-read() Lee un carácter del buffer. Es importante entender que lee un solo carácter (byte).

-write() Escribe caracteres a través del puerto serie. A diferencia de read(), escribe tantos caracteres como quieras.

-print() Imprime los datos al puerto serie como texto ASCII.

-println() Imprime los datos al puerto serie como texto ASCII seguido de un retorno de carro (ASCII 13, o ‘\r’) y un carácter de avance de línea (ASCII 10, o ‘\n’). Este comando tiene la misma forma que Serial.print ().

-flush() Vacía el buffer de entrada de datos.

-end() Desactiva la comunicación serie, permitiendo a los pines 0(RX) y 1 (TX) ser usadoscomo entradas o salidas digitales. Para volver a activar la comunicación serie, llamar la función Serial.begin().

 

Share your thoughts