Anaconda (Python) para tu Arduino

Anaconda logo

Anaconda es una distribución libre y abierta del lenguaje de programación Python (y R). Recuerda, uno de los lenguajes más utilizados en la actualidad y que permite crear scripts, ya que es un lenguaje interpretado. Por tanto, depende del intérprete Python para que la máquina pueda entenderlo y procesarlo. Por contra, los lenguajes compilados son traducidos a un binario que puede entender directamente la máquina sin intermediario.

Pues bien, Anaconda se usa bastante en el ámbito de la educación y el aprendizaje automático o machine learning. Pero también lo puedes usar para controlar la placa Arduino. Sí, exacto, podrías estar usando el lenguaje de programación Python para crear tus programas para controlar Arduino sin ningún problema y de una forma sencilla. Aquí te vamos a explicar cómo hacerlo paso a paso…

Qué es Anaconda

Bueno, ya sabes que es una distribución de Python, y por tanto comparte características con el Pyhton oficial. Pero ofrece unas ventajas respecto a Python, a parte de ser multiplataforma y de código abierto, como por ejemplo:

  • Te permite instalar y administrar paquetes, dependencias y entornos para ciencia de datos de una forma sencilla.
  • Permite usar varios entornos de programación o IDEs, entre ellos también podrás usarlo con Arduino, Raspberry Pi, etc.
  • Cuenta con herramientas como numpy, Numba, Dask, Bokeh, Datashader, Holoviews, Matplotlib, etc., para analizar y visualizar datos.
  • Permite compilar Python en código máquina en vez de ser interpretado para que la ejecución sea más rápida. Es decir, pasaría a ser un lenguaje compilado.
  • Permite escribir programas más complejos y de alto rendimiento, e incluso portables entre plataformas para llevar tus proyectos a donde quieras.

Más información – Instalar Anaconda

API para usar con Arduino

Logo Arduino y Python

Para usar Python para controlar Arduino necesitarás una API. Una vez ya tengas Anaconda instalado en tu sistema operativo, puedes instalar la API de una forma muy simple. Es tan sencillo como invocar a anaconda desde la línea de comandos, en ese momento el prompt de tu shell pasará a ser el de Anaconda, y dentro puedes usar el siguiente comando y conda se encargará de todo:

conda install -c auto arduino-python

Una vez instalado arduino-python, ya podrás comenzar a usarlo con tus proyectos de Arduino. Pero antes, hay que preparar el entorno para crear un nuevo entorno virtual para tu primer proyecto de Arduino. Para ello, dentro del prompt de Anaconda puedes usar el siguiente comando especificando un nombre y la versión del lenguaje Python que vas a usar. Por ejemplo:


conda create --name arduino python=3.7

Ahora el entorno virtual «arduino» ya está creado para usar con él Python versión 3.7. Lo siguiente es activarlo:


conda activate arduino

Una vez activo, conserva esta ventana del terminal, no la cierres, ya que la usarás más tarde. Como puedes ver que el prompt es ahora (arduino)> para que puedas comenzar. Sería conveniente que instales ahora algunos paquetes que vas a necesitar, como PySerial para la comunicación con la placa Arduino. Para ello, simplemente usa desde ese mismo prompt:


conda install pyserial

Bien, ahora descarga e instala Arduino IDE si no lo tenías ya, si lo tenías, entonces puedes pasar al siguiente paso, que es escribir el código en Python para controlar tu proyecto de Arduino. Puedes escribir un programa simple o usar los ejemplos que ya vienen con Arduino IDE para probar.

Por ejemplo, ve a Arduino IDE > Archivo > Ejemplos > Comunicación > PhysicalPixel y cárgalo en tu placa Arduino conectada a tu PC. Una vez el sketch está funcionando, puedes usar Python como harías en la placa Raspberry Pi con los GPIO para alterar el resultado. Por ejemplo, en este caso para apagar o encender el LED a tu antojo con un simple código Python.

Para ello, puedes volver a la ventana de tu terminal y dentro del prompt de Anaconda hacer lo siguiente:


> conda activate arduino
(arduino) > python

Python 3.7.1 (default, Dec 10 2018, 22:54:23) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.

>>> import serial
>>> ser = serial.Serial('COM4', 9800, timeout=1)
>>> ser.write(b'H')
>>> ser.write(b'L')
>>> ser.close()
>>> exit()
(arduino) >

Eso hará que la función ser.write pueda apagar (L) o encender el LED (H) a tu antojo. Luego ser.close() termina y exit() sale. Así puedes controlar con Python tus proyectos de Arduino. Evidentemente esto es solo un ejemplo, pero puedes imaginar muchos más casos…

También puedes crear ficheros .py con scripts en Python para poderlos ejecutar en cualquier momento sin necesidad de hacerlo directamente desde el prompt de anaconda. Por ejemplo este otro:


# Ejemplo titileo_LED.py

import serial
import time

# Define el puerto serie
# Debes comprobar desde el gestor de dispositivos de tu sistma operativo a qué puerto se corresponde el USB de la placa Arduino, en Windows sería COM4 en nuestro caso
ser = serial.Serial('COM4', 9600)

def led_on_off():
    user_input = input("\n Elige comando: encendido / apagado / quitar : ")
    if user_input =="encendido":
        print("LED está encendido...")
        time.sleep(0.1) 
        ser.write(b'H') 
        led_on_off()
    elif user_input =="apagado":
        print("LED está apagado...")
        time.sleep(0.1)
        ser.write(b'L')
        led_on_off()
    elif user_input =="quitar" or user_input == "q":
        print("Salir del programa")
        time.sleep(0.1)
        ser.write(b'L')
        ser.close()
    else:
        print("Comando no válido")
        led_on_off()

time.sleep(2) # Espera a que el puerto serie inicialice 

led_on_off()

¿Simple verdad? Además, si ya conocías el lenguaje Phyton, todo esto te resultará mucho más sencillo. Solo tendrás que ejecutar tu .py e interactuar con las opciones interactivas de este programa para introducir comandos para encender, apagar o salir del programa en este caso.


Sé el primero en comentar

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.