Archivo de la etiqueta: consola

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

Reutilizar mandos de control remoto IR

Los mandos de control remoto por infrarrojos (IR) son muy comunes en nuestro día a día. Algunos de esos mandos acaban en un cajón cuando el aparato para el que estaban diseñados pasa a mejor vida, pero… ¿por qué no reutilizarlos en nuestros proyectos con Arduino? es una manera sencilla, barata y potente de añadir una interfaz de control a nuestro proyecto.

Si no tienes mandos para reutilizar, pero sigues pensando que sería útil este tipo de control en tu proyecto, puedes adquirir mandos de control por infrarrojos genéricos muy baratos:

El sensor utilizado es éste:

Antes que nada, debemos saber que la librería software utilizada por ArduinoBlocks para decodificar la señal IR no soporta el 100% de los protocolos pero sí los más comunes.

Los protocolos soportados son: RC5, RC6, NEC, Panasonic, Sony, JVC, Samsung, Whynter, Aiwa, LG, Sanyo, Mitsubishi, Denon y Pronto.

si el mando que utilizas no es de ninguna de las marcas anteriores no te preocupes, muchas marcas utilizan protocolos genéricos o de otras marcas en vez del suyo propio

Lo mejor para saber si nuestro mando es compatible es probarlo, para probarlo vamos a hacer un montaje genérico con un programa cuya utilidad sólo es detectar si el código recibido es válido y en su caso mostrarlo por la consola serie. Si detectamos códigos válidos podemos apuntarlos y utilizarlos en otros proyectos para un uso en concreto.

Algunos mandos envían códigos distintos al pulsar y al soltar la misma tecla. También en muchos casos se envía un código especial cuando se deja la tecla pulsada de forma contínua para indicar la repetición.

Programa genérico para detectar códigos IR:

El código recibido se visualiza con formato entero sin signo (32 bits)

Conexiones y montaje:

En funcionamiento:

http://arduinoblocks.com/web/project/1152

Programa de ejemplo para encender y apagar un led:

Finalmente, como ejemplo real, con las pruebas anteriores localizamos hemos localizado el código para dos teclas de nuestro mando:

código tecla 1 = 16724175

código tecla 2 = 16718055

Al montaje anterior añadimo un led conectado al pin 3 que se activará o desactivará con las teclas del mando utilizado:

En funcionamiento:

http://arduinoblocks.com/web/project/1159

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

https://www.amazon.es/ArduinoBlocks-Programaci%C3%B3n-visual-bloques-Arduino/dp/1535513284

Compartir