Programa y controla con Python tu Arduino

Publicado por Loli Diéguez en

Python ha sido y es una revelación en los lenguajes de programación y junto a él la electrónica ha cambiado tanto y se ha acercado tanto al usuario que ha surgido todo un movimiento DIY donde ambos se tocan y se unen para crear proyectos alucinantes. Las placas de desarrollo como Arduino y Raspberry Pi han cambiado la forma en que las personas crean productos electrónicos de modo casero. En este artículo os mostramos como emplear Python para configurar la placa Arduino.

Python

No hay mejor sensación que combinar dos cosas geniales. Lamentablemente, es imposible programar directamente un Arduino con Python, ya que las placas no tienen posibilidad de interpretar este lenguaje. Lo que sí es posible, sin embargo, es el control directo de la placa a través del USB usando un programa Python.

Arduino con conector USB

 

Este artículo te mostrará cómo configurar tu placa Arduino UNO para ser programada y controlada desde la línea de comandos utilizando Python, el articulo esta escrito desde una perspectiva de Windows 10, pero también funciona para Mac y Linux. Incluso podrías utilizar el método que describo aquí para controlar tu Arduino directamente desde una Raspberry Pi para obtener la mejor experiencia.

Arduino y Raspberry Pi conectados

Configurando tu Arduino para Python

Para este artículo usaremos un Arduino Uno, junto con la interfaz pyFirmata para Python, también necesitarás el IDE de Arduino, si aún no lo tienes instalado mira aqui para ver como se hace.

IDE Arduino

Una vez tienes el IDE instalado, conecta tu placa Arduino y abre el IDE. Asegúrate de tener la placa y el puerto correctos seleccionados en el menú Herramientas. Carga el sketch de ejemplo de StandardFirmata que encontrarás en el menú de ejemplos de Firmata y cárgalo en la placa. Esto te permitirá controlar el Arduino directamente siempre que esté conectado a tu ordenador a través de USB. 

standarfirmdata IDE Arduino

Control de línea de comando y Python

Usaremos Python 3.7.2 para controlar nuestro Arduino. Puedes descargar Python 3.4 para Windows 10 desde el sitio de Python Software Foundation.

Una vez que hayas instalado Python, hay que configurar las variables de entorno de Windows (las variables PATH del sistema). Esto nos permitirá ejecutar código Python directamente desde la línea de comandos sin necesidad de estar en el directorio en el que se instaló. Puedes hacerlo abriendo el Panel de control , buscando el entorno y haciendo clic en Editar las variables de entorno del sistema. En la parte inferior de la ventana, seleccione Variables de entorno lo que abrirá esta ventana:

variables de entorno PATH windows

Si ya ves PATH en la lista, haz clic en editar y agrega tu directorio Python y Python / Scripts. Si no tienes una variable PATH, haz clic en Nuevo y agrégalo. Ten en cuenta que Python se instaló directamente en C:\. Si lo instalaste en otro lugar, deberás modificar los datos que introdujiste en PATH para que apunten a esa carpeta. Haga clic en Aceptar para guardar los cambios, ¡está casi listo para controlar su Arduino con Python!

Toque final

Necesitarás una pieza final del rompecabezas para que Python hable bien con  Arduino. Esto viene en forma de una interfaz de Python llamada pyFirmata . Esta interfaz, creada por Tino de Bruijn, está disponible para descargar desde github, aunque puedes instalarla directamente desde la línea de comandos escribiendo esto:

pip install pyfirmata

Si todo va bien, deberías ver esto:

 instalacion pyfirmata

 

Si hay algún fallo es probable que la variable de entorno PATH no tenga todos los datos correctos, compruébalo y modifica lo que falte.

 

Ahora hagamos que funcione todo

Con todo configurado, puedes crear un programa o script Python para que Arduino lo pruebe. Abre el IDE que prefieras, Eclipse, un editor de texto o incluso un IDE en la nube

Crea un nuevo script con el siguiente código y guárdalo como blink.py

from pyfirmata import Arduino, util
import time
board = Arduino("COM7")
parpadeos= input('Cuantas veces quieres que el LED parpadee?: ')
print("El LED parpadeará " + parpadeos + " vece.")
for x in range(int(loopTimes)):
  board.digital[13].write(1)
  time.sleep(0.2)
  board.digital[13].write(0)
  time.sleep(0.2)

 

El código te pedirá que introduzcas el número de veces que quiere que el LED parpadee. Como ves, es un programa corto pero vamos a explicar en que consiste.

Primero, hay que importar lo que necesita desde el módulo pyFirmata , junto con el módulo estándar de Python Time.

from pyfirmata import Arduino, util
import time

Después configuramos la placa Arduino Uno para lo cual, verifica qué puerto COM está utilizando en el IDE y añadelo en el código de esta manera (en mi caso el puerto usado era el COM7), en tu caso pon el valor que te corresponda.

board = Arduino("COM7")

Ahora toca configurar el mensaje al usuario imprimiendo en pantalla la pregunta para que introduzca el numero de veces que quiere que el LED parpadee, para esto se hace uso de la función input, la respuesta se almacena en la variable "parpadeos". Una vez que el usuario ha proporcionado un número, el programa informa cuántas veces parpadeará el LED.

parpadeos= input('Cuantas veces quieres que el LED parpadee?: ')
print("El LED parpadeará " + parpadeos + " veces.")

Para hacer que el LED parpadee el número apropiado de veces, usa un bucle for. Ten cuidado con la sangría, ya que a diferencia de otros idiomas, los espacios son parte de la sintaxis. Ten en cuenta que el pin 13 es el LED de la placa Arduino Uno, tendrás que modificarlo si tu placa es diferente.

for x in range(int(parpadeos)):
  board.digital[13].write(1)
  time.sleep(0.2)
  board.digital[13].write(0)
  time.sleep(0.2)

 

En este ejemplo, convertimos el valor almacenado en "parpadeos" a un valor numérico ya que la entrada que el usuario introduce es una cadena de texto, pero para poder usarlo en el bucle for se necesita un valor numérico, si el usuario introduce un valor como "tres" el código dará un error.

Ejecutando el script Python

Todo está listo para funcionar, ahora lo que necesitas hacer es navegar hasta donde está el script y ejecutarlo, para ello abre una ventana de comandos y navega hasta la carpeta donde esta el código que hemos hecho arriba, para ir a esta carpeta introduce esto en la ventana de comandos:

cd <ruta al directorio del script>

Y luego escribiendo python blink.py para ejecutar el script.

Si todo va bien, tu programa comenzará con un ligero retraso a medida que Arduino se inicializa, te solicitará un número de parpadeos, tan pronto como presionas Enter después de la cantidad de parpadeos elegidos, Arduino deberá encender y apagar el LED las veces que le indiques.

 

 parpadeo LED Arduino

 

Y si todo fue bien tendrás el LED parpadeando tantas veces como quieras!!

Este proyecto ha sido un comienzo para la comunicación entre Python y una placa Arduino. Este enfoque es muy diferente a la forma de trabajo habitual de carga de scripts al propio Arduino, pero abre una nueva forma de trabajar con la plataforma, especialmente si te gusta el lenguaje de programación Python.

 


Compartir esta publicación



← Publicación más antigua Publicación más reciente →