Hoy vamos a romper con la dinámica de este blog y es que os traigo un artículo de opinión en el que vamos a ver por qué no debes usar Python y Arduino para tus proyectos, el motivo viene dado a que la entrada «Encender y Apagar de un LED con Python» es la más leída en mi blog por bastante diferencia.
En esta entrada veremos los inconvenientes, las limitaciones y desventajas de combinar esta herramientas, finalmente veremos como poder solucionar este problema.
¿Por Qué Python y Arduino?
Bien, comencemos porque hay entradas en mi blog dedicadas a combinar ambas herramientas y es que es una gran manera de mezclar tecnologías cosa que hemos hecho en este blog en numerosas ocasiones como en la entrada «Como conectar OpenPLC y Factory.io» o recientemente en la entrada «Control de un transportador con Arduino y Python«.
Una de las ventajas de usar Python es sin duda que se trata de un lenguaje multipropósito que nos sirve desde el desarrollo de software hasta el análisis de datos es por ello que entender su lógica de programación es fundamental a día de hoy y lo seguirá siendo incluso mucho más en el futuro.
Su sintaxis amigable, su casi nula curva de aprendizaje, su gran comunidad de desarrolladores y su multitud de librerías y frameworks o «entornos de trabajo» hacen que sea uno de los lenguajes más queridos a nivel mundial.
Es por ello por lo que he dedicado multitud de entradas usando esta herramienta y seguiré haciéndolo en el futuro.
Pero… ¿deberías de usar Python siempre a la hora de programar un Arduino o un PLC?
No debes usar Python y Arduino para tus proyectos: Inconvenientes y limitaciones.
A continuación te muestro una lista con varios motivos por los que no deberías usar Python y Arduino en tus proyectos:
- Dependencia de un Ordenador: Esta es la más obvia de todas y es que necesitamos de un equipo que sea capaz de correr Python como un ordenador o una Rasberry Pi por lo que estamos agregando una capa de dificultad, limitando la portabilidad y autonomía a nuestro proyecto.
- Rendimiento inferior: Aquí vamos a ponernos técnicos y vamos a hablar de la velocidad de ejecución de los programas y si bien es conocido Python no es precisamente por su velocidad de ejecución, al contrario que C/C++ el cual es un lenguaje de más bajo nivel el cual puede aprovechar mucho más las capacidades de los chips programables dando un rendimiento en velocidad de ejecución mucho mayor.
- Limitaciones de la librería PySerial: Aunque gracias a esta librería podemos permitir la comunicación entre Python y Arduino, su uso puede ser limitado en cuanto a velocidad y transferencia de datos, por lo que si el proyecto es algo más complejo pueden sufrirse retrasos o fallas.
- No reinventes la rueda: Este es uno de los mejores consejos que podemos recibir los entusiastas por la tecnología como yo y es que Arduino tiene un propósito claro por lo que usar Python en una tarea para la que está hecha Arduino genera una carga innecesaria, por lo que si no es estrictamente necesario no debes usar Python.
- Latencia en la comunicación: Ambas tecnologías se comunican a través de USB lo cual introduce una latencia que en proyectos de control precisos pueden ocasionar fallos.
Soluciones a este problema.
Llegados a este punto tenemos dos posibles soluciones:
- Aprender C/C++: Aprender algo nuevo siempre está bien y conociendo los fundamentos de la programación no tardarás en pillarle el hilo por lo que te animo a que le des una oportunidad.
Pero si aun así quieres seguir programando microcontroladores con Python:
- Usa una Rasberry Pi Pico: es una microcontroladora de bajo costo basada en el chip RP2040, ideal para proyectos de electrónica y programación, con soporte para lenguajes como C/C++ y MicroPython.
Aquí te dejo nuestro primer Hola Mundo desde una Raspberry Pi Pico, te dejo también la documentación sobre microPython por si quieres echarle un vistazo.
from machine import Pin
from time import sleep
led = Pin(25, Pin.OUT) # El pin 25 controla el LED en la Raspberry Pi Pico
while True:
led.value(1) # Encender el LED
sleep(1) # Esperar 1 segundo
led.value(0) # Apagar el LED
sleep(1) # Esperar 1 segundo
Si quieres más contenido relacionado tan solo tienes que dejármelo saber en los comentarios, esta ha sido mi opinión sobre este tema, nos vemos en la siguiente entrada. 😀