Программирование Arduino с использованием Python, а не C / C ++

36

Я не очень хорошо разбираюсь в языке Си, и мне было интересно, есть ли способ использовать Python для программирования Arduino. Это, скорее всего, потребует другой IDE, чтобы иметь возможность отлаживать сценарии самостоятельно.

JVarhol
источник
2
Есть несколько альтернатив для программирования Arduino, один из них - BitLash и есть базовый интерпретатор . Есть несколько вариантов, когда вы будете искать в Интернете, но изучение C / C ++ в конечном итоге окупится.
Джиппи
Спасибо, на самом деле я чувствую себя немного лучше в C, но не так хорошо, как в Python.
JVarhol
2
связанный, более общий вопрос: «Опции программирования Arduino, кроме C ++»
Дэвид Кэри,
Является ли малиновый PI вариант?
Пол

Ответы:

26

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

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

Вы можете найти более полезную информацию по этому вопросу в Stack Overflow: есть ли способ «скомпилировать» код Python в Arduino (Uno) .

Питер Блумфилд
источник
15

Да, (несколько) возможно программировать Arduino, используя Python. Одним из таких проектов на Github является API прототипирования Python Arduino v2 . Он обеспечивает базовые функции, такие как цифровой ввод-вывод и аналоговый ввод-вывод.

Это может быть использовано для очень простых проектов.


* Этот проект - хакерская попытка "программирования" платы с использованием последовательного соединения. Он передает команды через последовательное соединение в набросок, запущенный на плате, который затем «выполняет» команду Python.

asheeshr
источник
То есть плату нужно подключить к компьютеру, чтобы запустить код?
JVarhol
@JVarhol Как ни странно, да.
asheeshr
1
Ну, это довольно дерьмо. Было бы проще использовать Raspberry Pi.
JVarhol
8

Есть проект, который выводит виртуальную машину 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)
Мэтью Г.
источник
3

Я использовал pyserial с большим успехом в управлении булавками на Arduino. Ваша рабочая станция (ноутбук и т. Д.) Запускает скрипт Python, который затем в реальном времени связывается с Arduino.

Это не совсем то же самое, что запускать скрипт прямо на Arduino, но я делал немного больше, чем я думал, что Arduino может справиться (некоторый анализ музыки, запуск API REST и т. Д.).

кивок
источник
3

Другой вариант для рассмотрения - Arduino Yun . В дополнение к чипу AVR, который есть у большинства Arduinos, он также включает в себя чип MIPS под управлением Linux. Поскольку это Linux, вы можете легко запускать код Python, и любой пакет с чистым Python может быть легко установлен.

Однако все интересные возможности ввода / вывода находятся на микросхеме AVR, а не на микросхеме MIPS. Такие проекты, как Autobahn и LininoIO, решают эту проблему, выполняя специальную программу на микросхеме AVR, которая выполняет операции ввода-вывода по инструкции от микросхемы MIPS.

DaveP
источник
0

Мы знаем, что это открытая проблема в программировании Arduino и во встроенном мире в целом. На рынке доступны различные решения, такие как MicroPython, но большинство из них предназначены для конкретных плат и не позволяют поддерживать систему в режиме реального времени. Мы работаем над решением! VIPER - это виртуальная машина Python для Arduino DUE и всех 32-битных архитектур ARM, которая работает поверх операционной системы реального времени. Это означает, что вы можете разрабатывать скрипты Python, которые могут быть реализованы Arduino DUE, UDOO, Spark (все платы), а также на новых платах ядра ST. Более того, если вам нужна высокая производительность и вы владеете C, вы можете разрабатывать модули VIPER в реальном времени, которые могут вызываться и управляться скриптами Python.

Вы можете увидеть VIPER в действии здесь http://bit.ly/kickviper

Даниэле Маззей
источник
Это не открытый вопрос. Python - ужасный язык отступов.
user2497
0

Вы можете узнать из C (AVR), как работают датчики, но это требует гораздо больше времени. Arduino IDE Code и Python Code для Arduino используют функции C Code для упрощения работы. Python и Arduino IDE, если используют Firmata, они используют последовательную связь, и вы думаете, что кодируете себя.

xrhstos
источник
-1

Да. Python можно использовать для программирования Arduino, просто импортировав pyfirmata, который может связывать arduino с Python.

я счастливчик
источник
Правда. Но это не то, о чем просит ОП.
sempaiscuba
-8

Я боюсь, что Arduino IDE не использует язык C / C ++. Он получен из Processing IDE и имеет довольно упрощенный синтаксис, подобный C / Java.

Анджей Марчак
источник
9
IDE Arduino - это C ++: она выполняет минимальную предварительную обработку (добавляет «#include <Arduino.h>» и объявления для определенной вами функции), затем вызывает обычный компилятор C ++ (GNU g ++).
Эдгар Бонет
Это сама среда IDE, а не язык программирования, производный от Processing.
Питер Блумфилд
Практически никому нет дела до внедрения IDE на Arduino. Дело в том, чтобы иметь возможность писать Python, который эффективно работает на Arduino.
Wallyk