Existe-t-il un moyen de "compiler" du code Python sur un Arduino (Uno)?

J'ai un projet de type robotique avec unArduino Uno , et pour faire court, j'expérimente avec des algorithmes D'IA. Cependant, j'ai besoin d'implémenter des algorithmes matriciels de haut niveau qui seraient assez simples en utilisant NumPy/SciPy , mais ils sont un cauchemar absolu en C ou c++. Même avec les bibliothèques là-bas, cela devient ridicule.

Est-il possible de faire ce projet en Python? Je pense que j'ai entendu quelque chose à propos de la Mega ayant cette capacité, mais j'ai un Uno, et le remplacer n'est pas une option à ce stade (cela reviendrait un peu au projet.) En outre, j'ai entendu quelque chose sur L'utilisation de Python pour communiquer à L'Arduino via USB, mais je ne peux pas avoir le câble USB pendant que la chose est en cours d'exécution. Je dois être en mesure de télécharger le programme et être fait avec elle.

Sont-il des options là-bas, ou ai-je juste atteint une impasse?

50
demandé sur Peter Mortensen 2011-11-14 01:33:33

3 réponses

Il y avait une discussion sur l'utilisation de Python avec la robotique à cette année PyConAU appelé Ah! Je vois que vous avez la machine qui va "BING"! par le Dr Graeme Croix.

La seule option qu'il a recommandée pour utiliser Python sur une carte de microcontrôleur était PyMite qui, je pense, porte aussi le nom de Python-On-a-Chip.

Il a été porté sur une gamme de cartes-en particulier, il mentionne L'Arduino Mega que vous avez dit n'est pas une option pour vous, mais il est possible qu'il soit pris en charge sur d'autres cartes Arduino.

Cependant, comme il s'agit d'une version" piles non incluses " de Python, il est plus que probable que vous aurez un réel problème pour que numpy/scipy etc soit opérationnel.

Comme d'autres affiches l'ont suggéré, la mise en œuvre en C pourrait être la voie de la moindre résistance.

Mise à jour: encore une fois, pas spécifiquement pour Arduino, mais pyMCU semble fournir python sur une puce. L'auteur affirme qu'il peut regarder développer une version Arduino de pyMCU s'il y a assez d'intérêt.

20
répondu Mark Streatfield 2012-03-03 05:46:57

J'ai commencé à travailler sur un compilateur" Little Python " en C++ (appelé Pyxie - a play on PY CC - Pyc-C), dans le but spécifique de compiler un sous-ensemble sain de python en C++ de sorte qu'il puisse fonctionner sur un arduino.

Ceci est loin d'être complet au moment de l'écriture (0.0.16), mais il peut actuellement compiler un très petit sous - ensemble de python-assez pour que l'exemple Arduino "blink" s'exécute. Pour soutenir cela, il a un profil de compilation-ce qui signifie essentiellement " compiler en utilisant l'arduino de la chaîne."

Un programme qu'il peut compiler ressemble à ceci:

led = 13

pinMode(led, OUTPUT)

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

Cela analyse, effectue une analyse (comme l'inférence de type, etc.), compile en C++, qui est ensuite compilé dans un fichier hexadécimal, que vous pouvez charger sur votre appareil.

Il y a un long chemin à parcourir avant qu'il ne soit utile , mais il progresse et a une feuille de route/etc.

En particulier, une différence clé par rapport à Micropython (et PyMite) est qu'il est conçu pour compiler sur des périphériques trop petits pour exécuter l'une ou l'autre implémentation. (Cela signifie également qu'il est très différent de choses comme ShedSkin qui, alors Qu'un compilateur Python vers c++ cible des environnements d'exécution plus importants)

4
répondu Michael Sparks 2015-08-03 13:03:15

Il va être difficile de faire fonctionner un script Python directement sur L'Arduino uno.La raison en est que c'est un langage interprété, donc vous aurez besoin d'un interprète à bord en plus du script de texte brut. Il n'y aura probablement pas assez de mémoire pour tousdans arduino uno.

Ce que vous pouvez faire de mieux est de trouver un moyen de compiler un script Python en code machine natif (c'est ainsi que fonctionne C/C++). J'ai vu des projets autour de faire quelque chose comme ça pour d'autres plates-formes, mais (pour autant que je sache) aucun qui le fait avec succès pour Arduino uno encore.

, Vous pouvez visiter http://www.toptechboy.com/using-python-with-arduino-lessons/ pour plus d'.

Souhaite que cela vous aidera. Merci!

1
répondu shubham kumar 2018-09-11 07:59:40