Archivo de la etiqueta: serie

La conexión serie y la consola

La conexión serie, a través del puerto USB, es el sistema utilizado por Arduino para actualizar el firmware desde un PC. A través de esta conexión ArduinoBlocks con la ayuda de ArduinoBlocks-Connector permite subir el programa realizado al microcontrolador de Arduino (gracias al firmware “bootloader” que las placas Arduino traen pregrabado de fábrica).

Pero esta conexión a parte de para reprogramar el microcontrolador de Arduino nos permite muchas más posibilidades…

La conexión serie puede utilizarse para comunicar la placa Arduino con un PC, con otros periféricos e incluso con otro Arduino.

Las conexiones serie se caracterizan por la forma en que se transmiten los datos. Cada byte se desglosa en una secuencia de bits que se envían de forma consecutiva uno detrás de otro, al contrario de las conexiones paralelas donde varios bits se transmiten simultáneamente.

     

Existen multitud de conexiones serie, desde la conexión RS232 más utilizada en los primeros ordenadores, hasta el SATA utilizado actualmente, pasando por el USB (bus serie universal).

Arduino en sus inicios utilizaba una conexión serie RS232 con conector DB-9 (como los primeros ratones para PC), hoy en día esa conexión se ha modernizado a una conexión USB que simula ese tipo de conexión serie simple.

La conexión serie utiliza dos vías de comunicación, una para recibir datos RX y otra para enviar datos TX.

Estas conexiones que vienen del chip UART interno del microcontrolador están por un lado físicamente conectadas a los pines 0 / RX y 1 / TX (por eso ArduinoBlocks no permite el uso de estos pines para sensores, etc) y por otro lado están conectadas a un chip que hace de puente con la conexión USB.

Si queremos utilizar la conexión serie entre dos Arduinos o con un periférico que utilice niveles de señal TTL (0 y 5 voltios) podemos cablearlos directamente desde los pines 0 y 1, pero por lo general si utilizamos la conexión serie con el PC dejaremos los pines 0 y 1 sin conectar y utilizaremos la conexión USB.

AVISO: si realizamos una conexión directa a los pines 0 y 1 puede que interfiera con la grabación del Arduino. Debemos desconectar todo de estos dos pines antes de reprogramar la placa Arduino desde el PC.

Pero… ¿para qué podemos utilizar la conexión serie en nuestros programas?

La conexión serie, principalmente con un PC, puede servirnos por ejemplo para uno de estos propósitos:

  • Visualización de datos en el PC (recibidos desde el Arduino)
  • Envío de datos desde el PC al Arduino
  • Creación de sistema de visualización y/o control remotos
  • Debug: permite enviar información al PC sobre el funcionamiento del program interno del Arduino
  • ….

Bloques para usar la conexión serie en ArduinoBlocks

Configura la velocidad de la conexión serie. Por defecto si no se pone este bloque la conexión es a 9600 baudios. La conexión debe configurarse a la misma velocidad en el Arduino y en el PC.

El timeout es el tiempo que espera a la hora de recibir un dato de la conexión serie. Superado este tiempo sin recibir nada se cancela la recepción hasta un nuevo intento. Por defecto es de 1 segundo.

Este es uno de los bloques más utilizados, permite enviar un texto o el valor de una variable a través del puerto serie. Permite añadir o no un retorno de carro al final del envío (para bajar de línea).

Permite enviar un sólo byte a través de la conexión serie. Por tanto el valor enviado puede estar entre 0 y 255.

Este bloque nos permite saber si hay datos recibidos pendientes de leer del puerto. El puerto serie tiene un pequeño “buffer” donde se almacenan los datos recibidos, si hay datos en ese “buffer” pendientes de leer este bloque devolverá “verdadero” y si no hay datos recibidos devolverá “falso”. Antes de leer debemos comprobar si hay datos recibidos.

Lee los datos recibidos (si los hay en el buffer de recepción del puerto serie) y nos los devuelve en forma de texto. Si marcamos la opción “hasta salto de línea” intentará leer los datos hasta recibir un retorno de carro.

Funciona igual que el bloque anterior, pero intenta interpretar el texto recibido como un número válido. Si se puede interpretar correctamente el texto como un número devolverá el número, si no devolverá un “0”

Este bloque lee un byte del puerto serie, el valor leído será un valor entre 0 y 255.

La consola serie en ArduinoBlocks

En el PC tenemos la opción de enviar datos por la conexión serie o visualizar los datos recibidos. Existen multitud de aplicaciones de terminal serie, pero ArduinoBlocks incorpora su propio terminal serie integrado.

IMPORTANTE: Cada vez que se abre la conexión serie el Arduino se reinicia automáticamente (reset) por lo que el programa empezará de nuevo

Pero mejor ver todo esto con ejemplos:

  • Ejemplo 1: envío de datos simples desde Arduino a la consola del PC

Este programa, enviará un mensaje inicial de bienvenida y luego un “Hola” cada segundo. Si abrimos la conexión serie, veremos el resultado…

  • Ejemplo 2: Envío de datos para monitorización remota desde PC

Y en la consola serie veríamos algo así…

  • Ejemplo 3: Control remoto de un led desde el PC

Desde la consola podemos enviar un “1” para encender el led:

O podemos enviar un “2” para apagar el led:

  • Proyecto de ejemplo: Adivina el número…

En este proyecto se implementa un pequeño y sencillo juego con Arduino a través de la consola serie. Arduino “pensará” un numero al azar entre 1 y 100 y tendremos que adivinarlo. Al decirle un número Arduino nos dirá si el número pensado es menor o mayor hasta conseguir adivinar el número. Además contará el número de intentos hasta adivinar el número:

http://www.arduinoblocks.com/web/project/2004


Más información y proyectos resueltos en el libro oficial de ArduinoBlocks

Libro en versión PDF

Libro impreso en Amazon


+Info:

http://www.arduinoblocks.com

https://www.facebook.com/ArduinoBlocks/

https://www.youtube.com/channel/UCoJwWGyd8a2pxzJHFdftXYw

www.linkedin.com/in/arduinoblocks-programación-visual-5169a9133

 

Compartir