Cómo encender un LED en la placa Arduino UNO usando el lenguaje de programación Python y la clase pyFirmata, que a su vez usa el protocolo Firmata para comunicarse con microcontroladores. Realizaremos la conexión con el microcontrolador Arduino UNO por puerto USB desde un equipo informático con Windows 10.

Un poco de teoría Firmata Python pyFirmata

Firmata

Firmata es un protocolo para comunicarse con microcontroladores desde un software en un PC (o también desde un teléfono inteligente, tableta, etc.). El protocolo se puede implementar en el firmware de cualquier arquitectura de microcontrolador, así como en cualquier paquete de software de PC.

Firmata se basa en el formato de mensaje MIDI en el que los bytes de los comandos son de 8 bits y los bytes de datos son de 7 bits.

En teoría, el protocolo Firmata podría implementarse para cualquier plataforma de microcontroladores. Sin embargo, actualmente la implementación más completa es para Arduino (incluidos los microcontroladores compatibles con Arduino).

Python

Usaremos como lenguaje de programación Python. Podemos escribir el código Python directamente en un editor de texto plano o bien usar un IDE, que nos ayudará en el proceso de compilación y depuración. En el siguiente enlace mostramos cómo instalar Python en Windows y cómo instalar y usar un IDE de desarrollo para Python:

pyFirmata

pyFirmata es una interfaz de Python para el protocolo Firmata. Será esta interfaz la que usemos para la conexión con Arduino desde nuestro equipo a través del puerto USB.

Para instalar esta interfaz en Python, una vez instalado, como indicamos en este artículo, abriremos una ventana de MS-DOS (para el caso de equipos Windows) y ejecutaremos el siguiente comando:

pip intall pyfirmata

Si todo es correcto nos indicará que el paquete pyfirmata se ha instalado correctamente, con el mensaje:

Installing collected packages: pyfirmata
Successfully installed pyfirmata-1.1.0

pyFirmata

Requisitos para desarrollar proyecto de conexión de PC con placa Arduino por USB con Python

Para realizar este proyecto Python de ejemplo de conexión a un microcontrolador Arduino UNO mediante el puerto USB de un equipo. Como ejemplo de prueba de conexión encenderemos un LED conectado a Arduino. A continuación indicamos lo que necesitaremos.

Equipo informático, placa Arduino UNO, LED

Necesitaremos un equipo informático (puede ser con sistema operativo Windows, Linux o MAC OS). En nuestro caso usaremos un equipo con Windows 10.

También necesitaremos, obviamente, una placa Arduino UNO, como esta:

Lo que necesitamos para el proyecto - Placa Arduino UNO

Con su cable USB de tipo A-B para la conexión de la placa Arduino con PC:

Lo que necesitamos para el proyecto - Cable USB AB

Un LED, aunque no es necesario para este proyecto, dado que la placa Arduino UNO incluye un LED integrado para el PIN 13. Aún así, si disponemos del LED, será más vistoso:

Lo que necesitamos para el proyecto - LED

Si hemos optado por adquirir el LED, lo conectaremos a la placa Arduino. La patilla larga, el ánodo irá insertado en el PIN 13 y la corta en el PIN GND:

Lo que necesitamos para el proyecto - Conexión LED a placa Arduino UNO

IDE de desarrollo Arduino

Para preparar Arduino UNO para que interactúe con el equipo informático a través del puerto USB, tendremos que transferirle un programa firmata a Arduino. Para ello usaremos el IDE de desarrollo propio de Arduino, que está disponible de forma gratuita en su web oficial.

Descargaremos el IDE de desarrollo de Arduino para el sistema operativo que estemos usando, las posibilidades son Windows, Linux, Mac OS X y sistemas con ARM, tanto en 32 bits como en 64 bits.

Descargaremos e instalaremos Arduino IDE, el proceso es muy sencillo. Seguiremos los pasos del asistente:

IDE de desarrollo Arduino

Elegiremos la carpeta de instalación:

IDE de desarrollo Arduino

Iremos aceptando todos los mensajes de instalar los drivers, para el puerto COM:

IDE de desarrollo Arduino

El USB Driver SRL:

IDE de desarrollo Arduino

El USB Driver LLC:

IDE de desarrollo Arduino

Conexión placa Arduino UNO a USB del equipo

Conectaremos la placa Arduino al equipo, para ello conectaremos el cable USB al conector de la placa Arduino:

Conexión placa Ardunio UNO a USB del equipo

Y conectaremos el otro extremo del cable a un puerto USB del equipo informático:

Conexión placa Ardunio UNO a USB del equipo

Cargar programa firmata y enviar a placa Arduino UNO

El siguiente paso, una vez instalado el IDE Arduino y conectada la placa Arduino al equipo por USB, será cargarle el programa firmata. Para ello abriremos el IDE Arduino y pulsaremos en el menú «Archivo» [1] – «Ejemplos» [2] – «Firmata» [3]- «StandardFirmata» [4]:

Cargar programa firmata y enviar a placa Ardunio UNO

Nota: en el anexo incluimos el código Arduino de Firmata (StandardFirmata) que le pasamos al microcontrolador Arduino.

Una vez cargado el código lo enviaremos a la placa Arduino. Antes de enviarlo nos aseguraremos de que tenemos correctamente configurado el puerto en el Arduino IDE, en el menú «Herramientas» – «Puerto: «COMX (Arduino Uno)» – «COMX (Arduino Uno)». Elegiremos el puerto COM virtual emulado desde el USB, guardaremos este número de puerto, que posteriormente necesitaremos conocer para la aplicación Python:

Cargar programa firmata y enviar a placa Ardunio UNO

Ahora podremos subir y cargar el programa en la placa Arduino, para ello pulsaremos en el botón «Subir»:

Cargar programa firmata y enviar a placa Ardunio UNO

Esperaremos a que suba el programa, suele tardar unos segundos. Si todo es correcto mostrará en la parte inferior «Subido». Si hay algún error nos lo indicará.

Cargar programa firmata y enviar a placa Ardunio UNO

A partir de ahora tendremos preparada la placa Arduino UNO para la comunicación mediante el puerto USB del equipo con firmata.

Código Python para conectar con placa Arduino mediante USB y encender un LED

A continuación mostramos el código fuente en Python para conectar con la placa Arduino a través del USB del equipo. El ejemplo encenderá y apagará un LED continuamente hasta que no se interrumpa el programa o se desconecte la Placa Arduino:

Como vemos, el código anterior usa la librería pyfirmata, y el puerto virtual COM5. Habrá que cambiarlo por el correspondiente. Realizará la conexión con Arduino y ejecutará un bucle para encender el LED, esperar 3 segundos, apagarlo, esperar otros 3 segundos y voler a repetir el proceso. Y así sucesivamente mientras no se interrumpa el programa o se desconecte la placa. El programa en funcionamiento:

Código Python para conectar con placa Arduino mediante USB y encender un LED

El LED de la placa Arduino se encenderá y apagará. De esta forma habremos verificado que la conexión funciona correctamente:

La ventaja de usar este tipo de conexión es que podremos manipular la placa Arduino desde un equipo informático. Esto nos permitirá realizar cualquier acción según cualquier evento que queramos controlar. Por ejemplo, usando el encendido del LED, podríamos encender el LED durante unos segundos cuando llegue un correo electrónico (o cualquier otra cosa).

Anexo

Código Arduino Firmata para preparar controlador Arduino UNO para conexión USB: