Comunicación Arduino.

Bienvenidos a un nuevo capítulo de electrónica para makers. En este capítulo vamos a comprender como se realizan las conexiones entre Arduino UNO y los otros sistemas lógicos. Seguro que has podido ver en algún trabajo, fábrica o exposición como mediante un ordenador, una placa electrónica o un programa se han producido movimientos en cierta maquinaria industrial sin necesidad que el operario maneje dicha máquina desde sus controles.

Robotica online

Y es que resulta los operarios de fabricación como los conocemos hoy en día están desapareciendo debido al auge de las tecnologías de comunicación, en la que mediante sensores, robots, y maquinaria conectada y controlada por microprocesadores, tienden a sustituir la mano de obra ineficaz de ciertas fábricas.

Por eso en este curso vamos a hablar de las comunicaciones entre dispositivos electrónicos.

Si, las máquinas autónomas son el futuro pero el control de los datos BigData generadas por esas máquinas los gobernaremos nosotros, los humanos.

terminator es una máquina que controla a los humanos

Bien, existen muchos sistemas hoy en día para programar maquinaria y controlar instalaciones eléctricas desde microcontroladores. Como bien sabes, los más famosos son los los de este curso de electrónica para makers, como el Arduino UNO y diferentes versiones, o la Raspberry Pi, que es un ordenador en sí además de un controlador electrónico.

Así que vamos a empezar por el primero de ellos, ya que estás en el curso de Arduino UNO.

Abriendo un nuevo proyecto VB.NET.

En la zona de prácticas vamos a empezar poco a poco abriendo un nuevo proyecto de Windows Form al que llamarás ArduinoLED (para no complicarnos). En este curso no te voy a enseñar como diseñar la aplicación, su configuración ni su estructura, ya que la aplicación ArduinoLED pertenece al curso de VB.NET y podrás acceder a su contenido desde AQUÍ.

programa ArduinoLED

Nuevo Sketch.
Abre un IDE de Arduino favorito y crea un nuevo sketch al que podrás llamar como te venga en gana, pero te recomiendo que lo renombres como ArduinoLedVB, para poder ligar facilmente al programa en VB.NET.

Comunicación serial.

La comunicación serie o comunicación secuencial, en telecomunicaciones e informática, es el proceso de envío de datos de un bit a la vez, de forma secuencial, sobre un canal de comunicación o un bus de datos.

En cambio, en la comunicación en paralelo todos los bits de cada símbolo se envían al mismo tiempo, y por ello debe haber al menos tantas líneas de comunicación como bits tenga la información a transmitir.

Arduino Uno se comunica con los puertos externos a través del puerto serie, por lo que transmite la comunicación bit a bit. Es decir que hasta que un bit no llega a la máquina de destino, no se transmite otro.

Esto puede acarrear un problema en sistemas que requieran de una comunicación fluida y que manejen mucha carga de trabajo. Pero para nuestro proyecto inicial y aprendizaje, te será suficiente con este tipo de comunicación.

¿Qué es el puerto serie?
Un puerto es el nombre con el que asignamos componentes físicos o virtuales con los que conectamos varios dispositivos.

Un puerto serie envía la información mediante una secuencia de bits. Para ello se necesitan al menos dos conectores para realizar la comunicación de datos, RX (recepción) y TX (transmisión). No obstante, pueden existir otros conductores para referencia de tensión, sincronismo de reloj, etc.

Tipos de conectores

Es decir que en nuestra conexión con otra placa o máquina, ARduino se conectará a través del puerto serie y cada vez que se envíe un dato se encenderá la luz TX y cada vez que se reciba se encenderá RX.

Los puertos serie están físicamente unidos a distintos pines de la placa Arduino. Lógicamente, mientras usamos los puertos de serie no podemos usar como entradas o salidas digitales los pines asociados con el puerto serie en uso.

En Arduino UNO los pines empleados son 0 (RX) y 1 (TX). Muchos modelos de placas Arduino disponen de un conector USB o Micro USB conectado a uno de los puertos de serie, lo que simplifica el proceso de conexión con un ordenador. Sin embargo algunas placas, como por ejemplo la Mini Pro, prescinden de este conector por lo que la única forma de conectarse a las mismas es directamente a través de los pines correspondientes.

monitor serie sirve para comunicar directamente con un ordenador

Así que si pulsamos el botón de Enviar, o enviamos ahora cualquier valor, cada vez que pulsemos se encenderá la luz RX de la placa indicándo que esta recibiendo datos.

Contador básico.
Para probar nuestra conexión con el ordenador y la placa, conectala a un puerto USB y abre el monitor serie. Pulsa el botón Enviar y verás que cada vez que pulses el botón se encenderá la luz RX. Pero vamos a crear un contador básico y que nos devuelva en pantalla del monitor serial, los valores.

Placa con puertos de comunicación

Para ello primero, como siempre en el Setup, inicializo la conexión Serial.begin a 9600 baudios. Y después en el Loop, creo la estructura de repetición del bucle, que será infinito mientras este la placa conectada.

Bucle infinito

Mientras el bucle se esté reproduciendo, la luz de TX estará transmitiendo.

Arduino también se puede comunicar con otras máquinas mediante bus SPI (Serial Peripheral Interfaces) o el bus I2C.

Conector Raspberry Pi.

Arduino es un IDE que tiene la facilidad de conectar con otras entidades electronicas de manera sencilla y directa casi sin configuración. Además que Arduino complementa el radio de acción de la Raspberry Pi, porque esta no tiene la suficiente potencia como para utilizarla en ciertos circuitos. Además la falta de entradas analógicas o las salidas GPIO de baja potencia lo hacen ponerse en desventajas respecto a Arduino.

Podemos conectar ambas placas de manera rápida, directa y sencilla mediánte la intercomunicación directa por cables USB entre las dos placas.

Existen varias maneras de conectar una Raspberry Pi y un Arduino, a través de puerto USB directo como he indicado, a través de puerto I2C o mediante lenguajes de programación instalados en la Raspberry Pi.

Conector Python.
Hoy en día las posibilidades que ofrece el lenguaje de programación Python son muy elevadas, debido al augue que ha tenido dicho lenguaje en los últimos tiempos.

Para la conexión se creará un script en python.

Lo primero que tienes que hacer es conectar la placa Raspberry Pi a la placa Arduino UNO tal cual muestra la imagen.

conectar ambas placas a través de cable USB

Después enciende tu Raspberry Pi y abre tu editor de texto favorito. Yo en mi ejemplo, como el sistema Raspbian se basa en una distro Linux, utilizaré el editor integrado NANO.

Script en NANO para python

Para que se produzca buena comunicación entre ambas placas, lo primero que tienes que hacer es importar la librería serial de python. Esa librería te la podrás bajar actualizándo el sistema desde la Terminal.

Descargar desde terminal la librería

Creación del Sketch.
Si queremos comunicarla librería directamente y desde python ejecutar el sketch sin instalar nada en la Raspberry, tendremos que cargar previamente el sketch en nuestra arduino:

Sketch que produce el parpadeo del led de acuerdo a la techa pulsada

Este sketch es sencillo. En el main, se incluye la instrucción Serial.begin(9600); para que la comunicación se inicie a la velocidad de transmisión de la información de 9600 baudios. Además se asigna por defecto al pin 13 como salida.

En el loop, se realiza la síntesis para que, si la comunicación se establece correctamente mediante un condicional si se pulsa la tecla H del teclado, se encienda el LED porque pasa a alto su puerto. En otro caso, si se pulsa L, el LED se apagará.

Antes de desconectar nuestro Arduino, carga el programa y cuando lo tengas cargado en la placa, podrás desconectar la placa y empezar a escribir el script de python. En otros cursos hablaremos sobre el lenguajes de programación Pythom por lo que vamos a dar por terminada la teoría del hoy para que puedas empezar con la práctica en el siguiente menú.