L6: El puerto serie

Comunicación entre la placa de desarrollo y el ordenador mediante puerto serie.

El puerto serie

Qué vas a aprender en esta lección

En esta lección trabajaremos:

  • Qué es un puerto serie de comunicaciones.
  • Cómo podemos usarlo para enviar información a la placa de desarrollo y recibir información de ella.
  • Cómo podemos usarlo para monitorizar el funcionamiento y depurar nuestros programas.
  • Uso de variables.

Requisitos previos

Para poder seguir esta lección debes haber completado previamente la Lección 1: Mi primer proyecto, la Lección 2: El diodo LED, la Lección 3: El diodo LED (2), la Lección 4: LED de intensidad variable y la Lección 5: El LED RGB. En esta lección no añadiremos un nuevo componente electrónico: aprenderemos a comunicarnos con la placa desde el ordenador.

Explicación teórica

¡Quiero saber más!

¿Qué es el puerto serie?

El puerto serie es una forma de comunicación entre la placa de desarrollo y el ordenador. En nuestro caso, usaremos la conexión USB que ya utilizamos para programar la placa.

Hasta ahora, para saber si un programa funcionaba mirábamos un LED:

  • Si parpadeaba, el programa parecía estar funcionando.
  • Si cambiaba de brillo, sabíamos que el valor de intensidad estaba cambiando.
  • Si cambiaba de color, sabíamos que el LED RGB recibía nuevas órdenes.

Pero a veces queremos ver información más concreta. Por ejemplo:

  • Qué número tiene una variable.
  • En qué paso del programa estamos.
  • Si la placa ha recibido un mensaje.
  • Qué valor ha leído un sensor.

Para eso usamos el monitor COM.

El monitor COM

El monitor COM es una ventana del entorno BatSTEM Cloud que muestra los mensajes que envía la placa. También permite escribir texto desde el ordenador para que la placa lo reciba.

Podemos imaginarlo como una conversación:

  • La placa escribe mensajes al ordenador.
  • El ordenador muestra esos mensajes.
  • También podemos escribir mensajes desde el ordenador.
  • La placa puede leer esos mensajes y responder.

Velocidad de comunicación

Antes de enviar mensajes por el puerto serie, la placa y el ordenador deben ponerse de acuerdo en la velocidad. Esa velocidad se mide en bps (bits por segundo).

En esta lección usaremos 115200 bps, una velocidad habitual para empezar y que es la velocidad que usa por defecto el monitor COM del entorno de desarrollo BatSTEM Cloud.

Variables

Una variable es un espacio con nombre donde el programa guarda un valor. Ese valor puede cambiar mientras el programa se ejecuta.

Por ejemplo, podemos crear una variable llamada Contador con valor inicial 0. Después, cada vez que se repite el bucle principal, podemos aumentar su valor:

  • Al principio: Contador = 0.
  • Después de una vuelta: Contador = 1.
  • Después de dos vueltas: Contador = 2.
  • Después de tres vueltas: Contador = 3.

Si enviamos el valor de la variable al monitor COM, podremos ver cómo cambia con el tiempo.

Parte Práctica

Necesitas los siguientes materiales:

  • Placa de desarrollo ESP32.
  • Placa de expansión BatSTEM.
  • Cable de conexión USB.
  • Ordenador con acceso a BatSTEM Cloud.

Diagrama de conexión

En esta lección solo necesitamos conectar la placa de desarrollo al ordenador mediante el cable USB. Esta conexión servirá para programar la placa y también para comunicarnos con ella mediante el monitor COM.

Paso a paso
  1. Coloca la placa de desarrollo ESP32 sobre la placa de expansión BatSTEM.
  2. Conecta el cable USB a la placa de desarrollo.
  3. Conecta el otro extremo del cable USB al ordenador.
  4. Abre BatSTEM Cloud.
  5. Cuando ejecutes un sketch, abre el panel Mon. COM para ver los mensajes que envía la placa.

Código

Vamos a crear tres sketches. Primero enviaremos un mensaje sencillo. Después usaremos una variable contador. Por último, haremos que la placa responda cuando reciba texto desde el ordenador.

Enviar un mensaje al monitor COM

Construye y ejecuta el siguiente sketch:

  1. En el bloque configuración, añade el bloque “configurar el puerto COM”.
  2. Selecciona la velocidad 115200 bps.
  3. En el bucle principal, añade un bloque “escribir en el puerto COM”.
  4. Escribe el texto “Hola desde BatSTEM”.
  5. Mantén activada la opción de enviar salto de línea.
  6. Añade una espera de 1 segundo.
  7. Ejecuta el sketch y abre el monitor COM.
Paso a paso
  1. Haz clic en la categoría Puerto COM.
  2. Arrastra el bloque “configurar el puerto COM a 115200 bps” dentro de configuración.
  3. Arrastra un bloque “escribir en el puerto COM” al bucle principal.
  4. Añade un bloque de texto con el mensaje “Hola desde BatSTEM”.
  5. Deja marcada la opción enviar salto de línea para que cada mensaje aparezca en una línea nueva.
  6. Haz clic en Tiempo y añade una espera de 1 segundo.
  7. Pulsa Ejecutar.
  8. Abre el monitor COM y observa cómo aparece el mensaje una vez por segundo.

Enviar el valor de una variable

Ahora vamos a usar una variable para contar cuántas veces se ha repetido el bucle principal.

Construye y ejecuta este sketch:

  1. En configuración, configura el puerto COM a 115200 bps.
  2. En configuración, crea una variable con nombre llamada Contador y valor inicial 0.
  3. En el bucle principal, escribe el valor de Contador en el puerto COM.
  4. Añade una espera de 1 segundo.
  5. Cambia Contador en 1.
Paso a paso
  1. Mantén el bloque “configurar el puerto COM a 115200 bps” dentro de configuración.
  2. Haz clic en la categoría Datos.
  3. Arrastra el bloque “variable con nombre” dentro de configuración.
  4. Escribe Contador como nombre de la variable.
  5. Pon su valor inicial a 0.
  6. En el bucle principal, añade un bloque “escribir en el puerto COM”.
  7. En lugar de escribir texto fijo, coloca dentro el bloque que lee la variable Contador.
  8. Añade una espera de 1 segundo.
  9. Añade el bloque “cambiar Contador en 1”.
  10. Ejecuta el sketch y observa cómo el número aumenta en el monitor COM.

Leer texto desde el monitor COM

También podemos enviar texto desde el ordenador hacia la placa. En este sketch, la placa comprobará si hay datos disponibles. Si hay texto, lo leerá y lo volverá a escribir en el monitor COM.

Paso a paso
  1. Configura el puerto COM a 115200 bps en el bloque configuración.
  2. Crea una variable llamada Mensaje con valor inicial "".
  3. En el bucle principal, añade un bloque “si” de la categoría Lógica.
  4. Como condición, usa el bloque “hay datos disponibles en el puerto COM”.
  5. Dentro del bloque “si”, pon la variable Mensaje al valor del bloque “leer texto del puerto COM”.
  6. Después añade un bloque “escribir en el puerto COM” y escribe la variable Mensaje.
  7. Ejecuta el sketch.
  8. Escribe una palabra en el monitor COM y envíala. La placa debería responder mostrando el mismo texto.

Ejercicios adicionales o retos

  1. Cambia el mensaje “Hola desde BatSTEM” por otro texto.

  2. Modifica el contador para que aumente de 2 en 2.

  1. Haz que el contador se envíe más rápido o más lento cambiando el tiempo de espera.

  2. En el sketch de eco, cambia la respuesta para que la placa escriba siempre un mensaje antes de devolver el texto recibido.

Resumen de lo aprendido

  • Hemos aprendido que el puerto serie permite comunicar la placa con el ordenador.
  • Hemos configurado el puerto COM a 115200 bps.
  • Hemos enviado mensajes desde la placa al monitor COM.
  • Hemos usado una variable para guardar un contador.
  • Hemos leído texto enviado desde el monitor COM hacia la placa.
  • Hemos usado el puerto COM como herramienta para observar y depurar nuestros programas.

Próximos pasos

  • Aprende a usar un pulsador como dispositivo de entrada en la Lección 7.

Soluciones a ejercicios adicionales

Mostrar

Contador de 2 en 2

Para que el contador avance de 2 en 2, mantenemos la misma estructura del sketch del contador, pero cambiamos el incremento:

  1. Escribir Contador en el puerto COM.
  2. Esperar 1 segundo.
  3. Cambiar Contador en 2.

La salida será algo parecido a:

  1. 0
  2. 2
  3. 4
  4. 6
  5. 8

Respuesta con texto recibido

En el sketch de eco, podemos añadir un mensaje fijo antes de escribir la variable Mensaje. Por ejemplo:

  1. Escribir “He recibido:” en el puerto COM.
  2. Escribir la variable Mensaje en el puerto COM.

Así será más fácil distinguir las respuestas de la placa en el monitor COM.