Saltar al contenido
Control Automático Educación

Comunicación Serial con Arduino

Hola controleros y controleras, en el día de hoy vamos a aprender a usar la comunicación serial con Arduino, la cual nos será de mucha utilidad para poder monitorear nuestros proyectos e incluso poder hacer un debug en Arduino (corrección de errores de nuestro código).

Antes de comenzar, te hago la invitación a que visites el CURSO GRATIS DE ARDUINO

Comunicación Serial con Arduino

Los puertos de comunicación serial nos proporcionan la forma más efectiva de comunicar nuestra paca de Arduino con nuestro ordenador, y como podrás notarlo a través de esta comunicación podremos mandar diferentes órdenes a nuestro Arduino para automatizar procesos o incluso recibir informaciones importantes para mostrarlas en la pantalla de nuestro computador.

La comunicación serial entre dos dispositivos únicamente utiliza 3 líneas las cuales son:

  1. Línea de recepción de datos (RX)
  2. Línea de transmisión de datos (TX)
  3. Línea común (GND)
Comuicacion serial

Dichas líneas podemos encontrarlas fácilmente en nuestra placa de Arduino. Aquí te cuento cuantos puertos seriales tiene el Arduino UNO, mini pro, MEGA y Due.

  1. Arduino UNO y Mini Pro: Pines 0 (RX) y 1 (TX);
  2. Arduino Mega y Arduino Due:  son cuatro puertos de serie.
    1. puerto serie 0: pines 0 (RX) y 1 (TX)
    1. puerto serie 1: pines 19 (RX) y 18 (TX)
    1. puerto serie 2: pines 17 (RX) y 16 (TX)
    1. puerto serie 3: pines 15 (RX) y 14 (TX)

La comunicación serial entre dos dispositivos se realiza a través del intercambio de una secuencia de bits, donde se transmite bit a bit, uno por vez, donde, aunque es lenta la comunicación, tiene la ventaja de poder ser transmitida a mayores distancias y utilizar menos líneas de comunicación.

señal asincrona

En sistemas embebidos es común referirse a los puertos series como UART (universally asynchronous receiver/transmitter) la cual simplemente es una unidad que nos indica la conversión de los datos a una secuencia de bits donde posteriormente son transmitidos o recibidos a una velocidad determinada.

La comunicación serial también se da mediante variaciones de voltaje, donde dispositivos TTL (transistor transistor logic) realizan la comunicación mediante variaciones de señal entre 0 y 5v o entre 0 y 3.3v.

Puerto Serie del Arduino

Las placas de Arduino poseen unidades UART que operan a nivel TTL  0 / 5v, lo que las vuelve compatibles con la conexión USB.

Como ya vimos los pines de los puerto seriales, podemos notar también que la mayoría de Arduinos disponen de um conector USB que nos permite una conexión serie instantánea con nuestro ordenador.

Comunicación Serial con Arduino

Comunicación Serial Arduino PC

Conectamos nuestro Arduino a nuestro computador a través del cable USB, y dentro del IDE de arduinos debemos abrir el Monitor Serial

Monitor Serial Arduino

El monitor serial de Arduino es una interfaz grafica integrada al IDE Standard que nos permite recibir o transmitir datos utilizando el protocolo de comunicación serial, por lo tanto dicho monitor serial dispone de ambas zonas (recepción y transmisión)

Pasos para trabajar con la comunicación serial con Arduino

Definir dentro del void setup del Arduino la comunicación serial mediante la siguiente instrucción

Donde velocidad puede tomar los siguientes valores: 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 o 115200.

La unidad de medida de las velocidades son el Baudio correspondiente al número de cambios en una señal por segundo.

  1. Dentro del void loop, se pueden imprimir o mostrar los datos en el Monitor Serial mediante la instrucción:

2. También puede mostrar el dato con un enter al final

3. Para leer datos desde el puerto serial se usa:

4. Para escribir en el puerto serie datos en forma de bytes se usa:

5. Para conocer si existen datos pendientes en el bus de comunicación serial usamos:

Esta instrucción retorna un TRUE si es verdad o un FALSE si es falso.

6. Para deshabilitar el puerto serial y de esa forma poder usar los pines TX y RX como pines digitales, usamos:

7. Si deseamos preguntar si el puerto serial está listo para efectuar la comunicación:

Devuelve true si el puerto serial el cual se ha especificado está disponible.

8. Para leer los datos del buffer y buscar un string especifico usamos el comando:

9. Si se desea configurar el máximo de milisegundos que desea esperarse mientras llega un dato por el puerto serial (por defecto es 1000ms), se usa:

10. Para saber cuando los datos están disponibles y poder utilizar Serial.read() para capturar estos datos usamos la siguiente instrucción que actualmente no es compatible con Esplora, Leonardo o Micro

11. Para esperae a que se complete la transmisión de los datos seriales salientes.

12. Para devolver el siguiente byte (carácter) de los datos en serie entrantes sin eliminarlos del búfer interno se usa:

13. Para leer caracteres del buffer serie y guardarlos en un string hasta que se produzca un timeout usamos:

Arduino Mega o Due con más de 1 puerto serial

En el caso de trabajar con una placa que poseea más de 1 puerto serial como es el caso del Arduino Mega o el Due, las instrucciones a usar son exactamente las mismas, con exepeción de que el puerto serial por defecto (el que esta conectado al USB o puerto serial 0) se conoce como Serial, el puerto serial 1, 2 y 3 se conocen como Serial1, Serial2 y Serial3 respectivamente.

Por lo tanto para imprimir o leer datos puede hacerse de la siguiente forma:

Ejemplos

Veamos como usar el monitor serial de Arduino utilizando el protocolo de comunicación serial

Recibir datos serial desde el Arduino

Recibir el valor de una variable contador enviado desde la placa Arduino a través del puerto de comunicación serial y mostrarlos en el monitor serial.

Enviar datos serial al Arduino

Vamos enviar un número desde el computador y mostrarlo en un display 7 segmentos integrado a la placa de Arduino, adicionalmente conectar un LED al PIN 13 el cual debe ser prendido o apagado a través de la comunicación serial.

Comunicación Serial con Arduino

Códigos

Recibir datos Serial desde el Arduino

Enviar datos serial al arduino

Perfecto controleros y controleras, eso es todo por el día de hoy, espero hayan aprendido a como utilizar la comunicación serial del Arduino.

Recuerda que si deseas apoyar mi trabajo, puedes invitarme a un café y seguirme ayudando a mantener los servidores de este sitio web, es muy barato el café y contribuyes con el tiempo y esfuerzo invertidos en las clases elaboradas en el canal y pagina web: 👉Invitar a un Café a Sergio ☕️

Espero que esten muy bien y nos vemos en la próxima.