Uno de los aspectos más
interesantes en Arduino es lograr que esta placa se comunique con el exterior y
pueda así intercambiar información. Una Arduino se comunica con otra Arduino o
similar y también con cualquier tipo de computadora.
¿Cuál es el potencial de
esta facilidad?: que Arduino, utilizando un programa específico, pueda recibir
información del entorno que lo rodea a partir de sensores (luz, temperatura,
presión, humedad, velocidad, etc.), pulsadores, detectores de presencia,
interruptores entre otros. Luego, esta información se transmite a la PC donde
con su propio software es capaz de manipularla, registrarla, representarla
gráficamente, imprimirla y, en general realizar cualquier tipo de procesamiento
sobre ella.
En sentido inverso, la PC puede tomar decisiones
en función de la información que recibe desde la Arduino, procesarla y
responder con diferentes órdenes hacia la placa Arduino de modo que esta pueda
activar/desactivar artefactos de iluminación, motores, un led, un relé, etc.
La
Comunicación serie
La esencia de la
comunicación entre una placa Arduino y el exterior es la transferencia de datos
en la forma de dígitos binarios o “bits” (“0” o “1”). Básicamente, estos bits
pueden transmitirse uno a continuación del otro (comunicación serie) o todos en
el mismo momento (comunicación en paralelo). Arduino utiliza comunicación en
serie.
La comunicación en serie necesita solamente de dos líneas de
comunicación (o dos “hilos”) indicados como “Tx” para la transmisión de datos y
“Rx” para la recepción de los mismos. En este esquema, Arduino transmite un
dato por el hilo Tx que se conecta con la línea Rx de la PC por donde son
recibidos por esta. En sentido inverso, Tx desde la PC envía los datos a Rx de la Arduino con lo que la comunicación
bidireccional es posible.
La velocidad de transferencia de los datos es un elemento sumamente importante y se mide en cantidad de bits transmitidos en 1 segundo. Por ejemplo, una velocidad de 1 bit en un segundo recibe el nombre de “1 Baudio”. Entonces, 8 bits (1 Byte) tardará 8 segundos en ser transmitido.
Arduino permite comunicaciones desde los 300 baudios hasta los 115.000 baudios, o 115.000 bits por segundo. En las experiencias propuestas se utilizará una velocidad de 9600 baudios, por considerarla fiable y de un valor compatible con la mayoría de los dispositivos con los cuales se podrá comunicar Arduino, como por ejemplo una PC.
Un aspecto importante en
toda comunicación de datos desde un dispositivo a otro a través de un hilo es
la necesidad de recibir correctamente los datos en el otro extremo. Para
pequeñas cantidades de datos como las que estamos considerando esta técnica es
muy útil y requiere mantener un alto grado de sincronización entre ambos
extremos. Esto significa que el receptor debe conocer la velocidad a la que
está recibiendo los datos de manera de poder recuperar cada bit correctamente y
sin errores.
Esta técnica se conoce como transmisión asíncrona y funciona
adecuadamente para cantidades de datos a transmitir que no sean excesivamente
grandes ya que existe el peligro de perder la sincronización entre Tx y Rx.
Arduino transmite y recibe los
datos a través del puerto USB (Universal Serial Bus), también un tipo de puerto
serie. Por otra parte, Arduino Uno proporciona dos salidas digitales, “D0” y
“D1” como líneas de Rx y Tx respectivamente por lo cual es posible conectar
esta placa Arduino con otra placa Arduino o con cualquier otro microcontrolador
que admita la comunicación serie y se adapte al protocolo “TTL”.
Así, por
ejemplo, se podrían controlar periféricos desde estas dos líneas digitales de
entrada/salida. Internamente, parte de la electrónica presente en la placa
Arduino Uno adapta estas señales a la especificación USB 2.0 de modo de lograr
una comunicación con la PC a través de estos puertos.
En próximas entregas profundizaremos estos conceptos.