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

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

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

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

3 ответов


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

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

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

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

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

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


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

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

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

led = 13

pinMode(led, OUTPUT)

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

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

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

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


будет сложно получить какой-либо скрипт Python, работающий непосредственно на Arduino uno.Причина в том, что это интерпретируемый язык, поэтому вам нужен переводчик в дополнение к простой текст сценария. Там, вероятно, не будет достаточно памяти для всего этого arduino uno.

лучше всего найти способ скомпилировать скрипт Python в машинный код (так работает C / C++). Я видел проекты вокруг, чтобы сделать что-то подобное для другие платформы, но (насколько я знаю) нет, который делает это успешно для Arduino uno еще.

вы можете посетить http://www.toptechboy.com/using-python-with-arduino-lessons/ Для больше.

желаю вам в этом поможет. спасибо!