Программирование Arduino с использованием Python, а не C/C ++
Я не очень хорошо разбираюсь в языке Си, и мне было интересно, есть ли способ использовать python для программирования Arduino. Скорее всего, для этого потребуется другая среда IDE, чтобы иметь возможность самостоятельно отлаживать скрипты.
@JVarhol, 👍41
Обсуждение10 ответов
Лучший ответ:
Будет чрезвычайно сложно запустить какой-либо скрипт Python непосредственно на Arduino. Причина в том, что это интерпретируемый язык, поэтому вам понадобится переводчик на борту в дополнение к обычному текстовому сценарию. Вероятно, для всего этого не хватит памяти.
Вероятно, лучше всего было бы найти способ скомпилировать скрипт Python в машинный код (именно так работает C / C ++). Я считаю, что есть проекты, чтобы сделать что-то подобное для других платформ, но (насколько я знаю) ни один из них не делает это успешно для Arduino.
Вы можете найти более полезную информацию по этому вопросу в Stack Overflow: есть ли способ "скомпилировать" код Python на Arduino (Uno).
Да, (в некоторой степени) можно запрограммировать Arduino с помощью Python. Одним из таких проектов на Github является Python Arduino Prototyping API v2. Он обеспечивает очень простую функциональность, такую как цифровой ввод-вывод и аналоговый ввод-вывод.
Это можно использовать для очень простых проектов.
* Этот проект - своего рода взлом при "программировании" платы с помощью последовательного соединения. Он передает команды по последовательному соединению скетчу, работающему на плате, который затем "выполняет" команду Python.
Значит, плата должна быть подключена к компьютеру, чтобы действительно запустить код?, @JVarhol
@JVarhol Как ни странно, да., @asheeshr
Ну, это довольно дерьмово. Было бы проще использовать Raspberry Pi., @JVarhol
Существует проект, который переносит виртуальную машину Python на микроконтроллеры, включая Arduino Mega.
Вот цитата из Ardunio Mega README, которая дает представление о том, как это может быть (хотя я этого не тестировал!):
Ниже приведен пример сеанса с использованием 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)
Я с большим успехом использовал pyserial для управления контактами на arduino. Ваша рабочая станция (ноутбук и т. Д.) запускает скрипт python, который затем связывается в режиме реального времени с arduino.
Это не совсем то же самое, что запустить скрипт непосредственно на arduino, но я делал гораздо больше, чем думал, что arduino может справиться (некоторый анализ музыки, использование REST api и т. Д.).
Мы знаем, что это открытая проблема в программировании Arduino и во встроенном мире в целом. На рынке существуют различные решения, такие как MicroPython, но большинство из них посвящены конкретным платам и не позволяют поддерживать систему в режиме реального времени. Мы работаем над решением! VIPER - это виртуальная машина Python для Arduino DUE и всех 32-битных архитектур ARM, которая работает поверх операционной системы реального времени. Это означает, что вы можете разрабатывать скрипты Python, которые могут быть реализованы Arduino DUE, UDOO, Spark (все платы), а также на новых платах ST nucleo. Кроме того, если вам нужна высокая производительность и вы владеете языком Си, вы можете разработать модули реального времени для VIPER, которые могут вызываться и управляться скриптами Python.
Вы можете увидеть VIPER в действии здесь http://bit.ly/kickviper
Это не открытый вопрос. python - ужасный язык отступов., @user2497
Еще один вариант, который следует рассмотреть, - это Arduino Yun. В дополнение к чипу AVR, который есть у большинства ардуино, он также включает в себя чип MIPS под управлением Linux. Поскольку это linux, вы можете легко запускать код python, и любой пакет pure-python может быть легко установлен.
Однако все интересные возможности ввода-вывода находятся на чипе AVR, а не на чипе MIPS. Такие проекты, как Autobahn и LininoIO, решают эту проблему путем запуска специальной программы на чипе AVR, которая выполняет операции ввода-вывода по инструкции от чипа MIPS.
ДА. Python можно использовать для программирования Arduino, просто импортировав pyfirmata, который может взаимодействовать с arduino с Python.
Верно. Но это не то, о чем просит ОП., @sempaiscuba
Я не согласен. Использование firmata - это _effectively_ "программирование Arduino" с использованием python. На самом деле я был удивлен, увидев, что никто больше не предложил этого. С точки зрения новичка это почти то же самое. Я подумываю использовать его, чтобы помочь научить моего сына программированию, так как python немного проще, чем C., @Dave Griffiths
Вы могли бы узнать из C (AVR), как работают датчики, но для этого требуется гораздо больше времени. Код Arduino IDE и код Python для Arduino используют функции C-кода, чтобы упростить задачу. Python и Arduino IDE если используют Firmata, они используют последовательную связь, и вы думаете, что кодируете себя.
Да, это возможно с недавним новым ArduinoPro H7, который имеет возможность загружать написанную программу на Python и JavaScript и имеет двухъядерный 32-битный процессор.
Java-скрипт? правда? вы пробовали это сделать?, @Juraj
Ты должен использовать pyfirmata, потому что это единственный способ сделать твоего сына ПРОФЕССИОНАЛЬНЫМ инженером, который делает роботов. Кроме того, python может делать более продвинутые вещи, поэтому используйте pyfirmata.
- Построение графика на Python с использованием Tkinter Canvas
- Отправьте несколько значений int из Python в Arduino, используя pySerial
- Как отправить целое число через pyserial с Python на Arduino и получить тот же результат?
- Почему нужно использовать latin-1 вместо utf-8 при использовании python с arduino?
- В чем разница, когда ардуино был отключен от сети, и когда последовательный порт был закрыт?
- Использование pyFirmata с сервоприводом на 360° - как это остановить?
- Как связать процессор компьютера с Arduino на плате?
- Ардуино не может правильно выводить
Есть пара альтернатив для программирования Arduino, одна из них - [BitLash] (http://bitlash.net /) и есть [базовый интерпретатор] (http://hackaday.com/2012/05/01/arduino-basic-interpreter-using-lcd-keyboard-and-sd /). Есть несколько вариантов, когда вы ищете в Интернете, но изучение C / C ++ в конце концов окупится., @jippie
Спасибо, на самом деле я немного лучше разбираюсь в C, просто не так хорошо, как в Python., @JVarhol
связанный, более общий вопрос: ["Параметры программирования Arduino, отличные от C ++"](http://arduinoprosto.ru/q/141/programming-options-other-than-c ), @David Cary
Является ли raspberry PI вариантом?, @Paul