domingo, 27 de septiembre de 2015

[Lenguaje Arduino 08] La comunicación serie con la placa arduino

Primero que nada debemos saber que el microcontrolador ATmega328P dispone de un receptor/transmisor serie de tipo TTL-UART que permite comunicar la placa Arduino UNO con otros dispositivos (normalmente, nuestro computador), para así poder transferir datos entre ambos. El canal físico de comunicación en estos casos suele ser el cable USB, pero también pueden ser los pines digitales 0 (RX) y 1 (TX) de la placa. Si se usan estos dos pines para comunicar la placa con un dispositivo externo, tendremos que conectar el pin TX de la placa con el pin RX del dispositivo, el RX de la placa con el TX del dispositivo y compartir la tierra de la placa con la tierra del dispositivo. Hay que tener en cuenta que si se utilizan estos dos pines para la comunicación serie, no podrán ser usados entonces como entradas/salidas digitales estándar.

Algunos ejemplos de estas conexiones son los siguientes

  1. Comunicación Arduino Xbee
  2. Comunicación Arduino Bluetooth
  3. Comunicación Arduino Arduino
Dentro de nuestros sketches podemos hacer uso de este receptor/transmisor TTL-UART para enviar datos al microcontrolador (o también recibirlos de él) gracias al elemento del lenguaje Arduino llamado “Serial”. En realidad, “Serial” es lo que se llama un “objeto” del lenguaje. Los objetos son entidades que representan elementos concretos de nuestro sketch. El concepto de objeto es algo abstracto, pero para entenderlo mejor, simplemente supondremos que son “contenedores” que agrupan diferentes instrucciones con alguna relación entre ellas. Por ejemplo, el objeto “Serial” representa por sí mismo una comunicación serie establecida con la placa, y en nuestro sketch podremos hacer uso de un conjunto de instrucciones disponibles dentro de él que sirven para manipular esa comunicación serie. Si utilizáramos dos objetos de clase “Serial”, podríamos manejar entonces dos conexiones serie diferentes, y cada una sería controlada mediante las instrucciones de su objeto respectivo.

Las instrucciones existentes dentro de un objeto (no todas las instrucciones del lenguaje Arduino pertenecen a un objeto) se escriben siguiendo la sintaxis nombreObjeto.nombreInstruccion();. Por eso las instrucciones utilizadas en el sketch de ejemplo del principio de este capítulo, al pertenecer al objeto “Serial”, tienen nombres como Serial.begin(); Serial.println(); Serial.print(); o Serial.end();.

A continuación, se explica la sintaxis, funcionamiento y utilidad de las instrucciones incluidas en el objeto “Serial”. Empezando por una ya conocida:
  • Serial.begin(): abre el canal serie para que pueda empezar la comunicación por él. Por tanto, su ejecución es imprescindible antes de realizar cualquier transmisión por dicho canal. Por eso normalmente se suele escribir dentro de la sección “void setup()”. Además, mediante su único parámetro –de tipo “long” y obligatorio– , especifica la velocidad en bits/s a la que se producirá la transferencia serie de los datos. Para la comunicación con un computador, se suele utilizar el valor de 9600, pero se puede especificar cualquier otra velocidad. Lo que sí es importante es que el valor escrito como parámetro coincida con el que se especifique en el desplegable que aparece en el “Serial Monitor” del IDE de Arduino, o si no la comunicación no estará bien sincronizada y se mostrarán símbolos sin sentido. Esta instrucción no tiene valor de retorno.
  • Serial.end(), esta instrucción no tiene ningún argumento ni devuelve nada, y es la que se encarga de cerrar el canal serie; de esta manera, la comunicación serie se deshabilita y los pines RX y TX vuelven a estar disponibles para la entrada/salida general. Para reabrir el canal serie otra vez, se debería usar de nuevo Serial.begin().
La otra instrucción que hemos utilizado en los sketches de ejemplo anteriores es Serial.println(), que pertenece a un conjunto de instrucciones que permiten enviar datos desde el microcontrolador hacia su exterior. Esto lo seguiremos viendo las publicaciones siguientes.



No olvides visitar la pestaña Tutoriales arduino y Lenguaje arduino, donde podrás encontrar la lista de tutoriales que he hecho hasta el momento. Como siempre muchas gracias por visitar mi blog y si tienen alguna consulta o consejo puede comentarlo por medio de este mismo blog.

No hay comentarios.:

Publicar un comentario