Programando un Arduino usando Python, en lugar de C / C ++


36

No soy muy hábil con el lenguaje C y me preguntaba si hay una forma en que Python pueda usarse para programar un Arduino. Esto probablemente requeriría un IDE diferente para poder depurar los scripts ellos mismos.


2
Hay un par de alternativas para programar Arduino, una de ellas es BitLash y hay un intérprete básico . Hay dos opciones cuando busca en Internet, pero aprender C / C ++ dará sus frutos al final.
jippie

Gracias, en realidad estoy mejorando un poco en C, pero no tan bien como con Python.
JVarhol


¿Es una PI frambuesa una opción?
Paul

Respuestas:


26

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

Su mejor opción probablemente sea encontrar una manera de compilar un script de Python en código de máquina nativo (que es cómo funciona C / C ++). Creo que hay proyectos para hacer algo así para otras plataformas, pero (que yo sepa) ninguno que lo haga con éxito para Arduino todavía.

Puede encontrar más información útil sobre esta pregunta en Stack Overflow: ¿Hay alguna manera de "compilar" el código de Python en un Arduino (Uno) .


15

Sí, es (algo) posible programar el Arduino usando Python. Uno de esos proyectos en Github es la API v2 de Python Arduino Prototyping . Proporciona una funcionalidad muy básica como E / S digital y E / S analógica.

Esto se puede usar para proyectos muy simples.


* Este proyecto es un truco para "programar" la placa usando la conexión en serie. Pasa los comandos a través de la conexión en serie a un boceto que se ejecuta en la placa que luego "ejecuta" el comando Python.


Entonces, ¿la placa debe estar conectada a una computadora para poder ejecutar el código?
JVarhol

@JVarhol Curiosamente, sí.
asheeshr

1
Bueno, eso es bastante malo. Sería más fácil usar una Raspberry Pi.
JVarhol

8

Hay un proyecto que lleva una máquina virtual Python a microcontroladores, incluido el Arduino Mega .

Aquí hay una cita del Ardunio Mega README , que da una idea de cómo podría ser esto (aunque, ¡no lo he probado!):

La siguiente es una sesión de ejemplo usando ipm ::

ipm> import avr, sys
ipm> avr.ddrA(0xff)
ipm> avr.portA(0)       # Pins 22-29 all at 0 V
ipm> avr.portA(0xa5)
ipm> sys.heap()
(2622, 7424)

3

He usado pyserial con gran éxito en el control de los pines del arduino. Su estación de trabajo (computadora portátil, etc.) ejecuta un script de Python que luego se comunica en tiempo real al arduino.

No es lo mismo que ejecutar el script directamente en el arduino, pero estaba haciendo un poco más de lo que pensaba que podía manejar el arduino (algunos análisis de música, presionar una API REST, etc.).


3

Otra opción a considerar es el Arduino Yun . Además del chip AVR que tiene la mayoría de los Arduinos, también incluye un chip MIPS con Linux. Como es Linux, puede ejecutar fácilmente el código de Python, y cualquier paquete de Python puro puede instalarse fácilmente.

Sin embargo, toda la capacidad de entrada / salida interesante está en el chip AVR, no en el chip MIPS. Proyectos como Autobahn y LininoIO resuelven este problema ejecutando un programa especial en el chip AVR que realiza operaciones de E / S bajo las instrucciones del chip MIPS.


0

Sabemos que este es un problema abierto en la programación de Arduino y en el mundo integrado en general. Hay varias soluciones disponibles en el mercado, como MicroPython, pero la mayoría de ellas están dedicadas a placas específicas y no permiten mantener el sistema en tiempo real. ¡Estamos trabajando en una solución! VIPER es una máquina virtual Python para Arduino DUE y todas las arquitecturas ARM de 32 bits que se ejecuta sobre un sistema operativo en tiempo real. Esto significa que puede desarrollar scripts de Python que Arduino DUE, UDOO, Spark (todos los tableros) pueden eximir y también en los nuevos tableros nucleares ST. Además, si necesita un alto rendimiento y es experto en C, puede desarrollar módulos en tiempo real para VIPER que pueden ser llamados y administrados por los scripts de Python.

Puedes ver VIPER en acción aquí http://bit.ly/kickviper


No es un problema abierto. Python es un lenguaje de sangría horrible.
user2497

0

Podría aprender de C (AVR) cómo funcionan los sensores, pero necesita mucho más tiempo. El código IDE de Arduino y el código de Python para Arduino utilizan funciones de código C para simplificar las cosas. Python y Arduino IDE si usan Firmata, usan comunicación en serie y crees que te codificas a ti mismo.


-1

Sí. Python puede usarse para programar un Arduino, simplemente importando pyfirmata, que puede interconectar el arduino con Python.


Cierto. Pero eso no es lo que pide el OP.
sempaiscuba

-8

Tengo miedo de que Arduino IDE no use el lenguaje C / C ++. Se deriva de Processing IDE y tiene una sintaxis bastante similar a C / Java.


99
El IDE de Arduino es C ++: realiza un preprocesamiento mínimo (antepone "#include <Arduino.h>" y declaraciones para la función que ha definido), luego llama a un compilador de C ++ normal (GNU g ++).
Edgar Bonet

Es el IDE en sí mismo en lugar del lenguaje de programación que se deriva del procesamiento.
Peter Bloomfield

Prácticamente a nadie le importa implementar el IDE en el Arduino. El punto es poder escribir Python que se ejecute eficientemente en el Arduino.
wallyk
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.