¿Hay alguna forma de" compilar " código Python en un Arduino (Uno)?


Tengo un proyecto de robótica con un Arduino Uno, y para hacer una larga historia corta, estoy experimentando con algunos algoritmos de IA. Sin embargo, necesito implementar algunos algoritmos de matriz de alto nivel que serían bastante simples usando NumPy/SciPy, pero son una pesadilla absoluta en C o C++. Incluso con las bibliotecas por ahí, esto se está poniendo ridículo.

¿Hay alguna manera de que pueda hacer este proyecto en Python? Creo que he oído algo sobre el Mega tener esta capacidad, pero tengo un Uno, y reemplazarlo no es una opción en este punto (eso haría que el proyecto retrocediera un poco.) También, he oído algo sobre el uso de Python para comunicarse con el Arduino a través de USB, pero no puedo tener el cable USB mientras la cosa está funcionando. Necesito poder subir el programa y terminar con él.

¿Hay alguna opción por ahí, o acabo de llegar a un callejón sin salida?

Author: Peter Mortensen, 2011-11-14

3 answers

Hubo una charla sobre el uso de Python con robótica en estos años PyConAU llamado Ah! ¡Veo que tienes la máquina que hace 'BING'! por el Dr. Graeme Cross.

La única opción que recomendó para usar Python en una placa de microcontrolador fue PyMite que creo que también se conoce como Python-On-A-Chip.

Se ha portado a una gama de placas, específicamente menciona el Arduino Mega que usted dijo que no es una opción para usted, pero es posible que sea compatible con otras placas Arduino.

Sin embargo, debido a que es una versión de "baterías no incluidas" de Python, es más que probable que tenga un problema real para poner en marcha numpy/scipy, etc.

Como han sugerido otros posters, implementar en C podría ser el camino de menor resistencia.

Actualización: de nuevo, no específicamente para Arduino, pero pyMCU busca proporcionar python en un chip. El autor afirma que puede mirar desarrollar una versión Arduino de pyMCU si hay suficiente interés.

 20
Author: Mark Streatfield,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-03 05:46:57

He empezado a trabajar en un compilador de "Pequeño Python" a C++ (llamado Pyxie - un juego en Py CC - Pyc-C), con el objetivo específico de compilar un subconjunto sano de python a C++ para que pueda ejecutarse en un arduino.

Esto está lejos de estar completo en el momento de escribir (0.0.16), pero actualmente puede compilar un subconjunto muy pequeño de python - suficiente para que se ejecute el ejemplo "blink" de arduino. Para soportar esto, tiene un perfil de compilación, que esencialmente significa " compilar usando arduino cadena de herramientas."

Un programa que puede compilar se ve así:

led = 13

pinMode(led, OUTPUT)

while True:
  digitalWrite(led, HIGH)
  delay(1000)
  digitalWrite(led, LOW)
  delay(1000)

Esto analiza, realiza análisis (como inferencia de tipos, etc.), compila en C++, que luego se compila en un archivo hexadecimal, que puede cargar en su dispositivo.

Hay un largo camino por recorrer antes de que sea útil, pero está progresando y tiene una hoja de ruta/etc.

En particular, una diferencia clave de Micropython (y PyMite) es que está diseñado para compilar a dispositivos demasiado pequeños para ejecutar cualquiera de las implementaciones. (Esto también significa que es muy diferente de cosas como ShedSkin, que mientras que un compilador de Python a C++ se dirige a entornos de ejecución más grandes)

 4
Author: Michael Sparks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-03 13:03:15

Va a ser difícil obtener cualquier tipo de script Python que se ejecute directamente en Arduino uno.La razón es que es un lenguaje interpretado, por lo que necesitará un intérprete a bordo además del script de texto sin formato. Probablemente no va a haber suficiente memoria para todo eso en arduino uno.

Lo que puede hacer mejor es encontrar una manera de compilar un script Python en código máquina nativo (así es como funciona C/C++). He visto proyectos alrededor para hacer algo así para otros plataformas, pero (que yo sepa) ninguna que lo haga con éxito para Arduino uno todavía.

Puedes visitar http://www.toptechboy.com/using-python-with-arduino-lessons / para más.

Ojalá esto te ayude. ¡Gracias!

 1
Author: shubham kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-11 07:59:40