Есть ли способ "скомпилировать" код Python на Arduino (Uno)? - программирование
Подтвердить что ты не робот

Есть ли способ "скомпилировать" код Python на Arduino (Uno)?

У меня есть проект типа робототехники с Arduino Uno, и, чтобы сделать короткую историю, я экспериментирую с некоторыми алгоритмами AI. Тем не менее, мне нужно реализовать некоторые высокоуровневые матричные алгоритмы, которые были бы довольно простыми, используя NumPy/SciPy, но они являются полным кошмаром на C или С++. Даже с библиотеками, это просто смешно.

Есть ли способ сделать этот проект в Python? Я думаю, что я слышал что-то о Mega, имеющем эту возможность, но у меня есть Uno, и замена на этот момент не является опцией (что бы установить проект немного назад.) Кроме того, я слышал кое-что о том, как использовать Python для связи с Arduino через USB, но я не могу подключить USB-кабель во время работы. Мне нужно иметь возможность загружать программу и выполнять ее.

Есть ли какие-либо варианты там, или я только что достиг тупика?

4b9b3361

Ответ 1

Был разговор об использовании Python с робототехникой в ​​эти годы PyConAU под названием Ах! Я вижу, что у вас есть машина, которая идет "BING" ! от доктора Грэма Креста.

Единственный вариант, который он рекомендовал для использования Python на плате микроконтроллера, был PyMite, который, я думаю, также называется именем Python-On-A-Chip.

Он был перенесен на ряд плат - в частности, он упоминает, что Arduino Mega, который вы сказали, не является для вас вариантом, но возможно, что он поддерживается на других досках Arduino.

Однако, поскольку это версия Python, не включенная в поставку, более вероятно, что у вас возникнут проблемы с запуском и запуском numpy/scipy и т.д.

Как и предполагали другие плакаты, реализация в C может быть наименьшим сопротивлением.

Обновление: опять же, не специально для Arduino, но pyMCU предлагает предоставить python на чипе. Автор утверждает, что он может изучить разработку Arduino версии pyMCU, если этого достаточно.

Ответ 2

Я начал работу над "Маленьким Python" на С++ (называемый Pyxie - игра на Py CC-Pyc-C) с конкретной целью компиляции подмножества подпрограмм python на С++, чтобы он мог работать на arduino.

Это далеко не полностью на момент написания (0.0.16), но в настоящее время он может скомпилировать очень небольшое подмножество python - достаточно для запуска "мигания" arduino. Чтобы поддержать это, у него есть профиль компиляции, который по существу означает "скомпилировать с помощью инструментальной цепочки arduino".

Программа, которую он может скомпилировать, выглядит следующим образом:

led = 13

pinMode(led, OUTPUT)

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

Это анализирует, выполняет анализ (например, вывод типа и т.д.), компилируется в С++, который затем скомпилируется в шестнадцатеричный файл, который вы можете загрузить на свое устройство.

До этого он должен пройти длинный путь полезный, но он прогрессирует и имеет дорожную карту и т.д.

В частности, ключевое отличие от Micropython (и PyMite) заключается в том, что оно предназначено для компиляции устройств, слишком малых для запуска либо реализации. (Это также означает, что он очень отличается от таких вещей, как ShedSkin, который, хотя компилятор Python для С++ нацелен на более крупные среды выполнения)