Програмування Arduino за допомогою Python, а не C / C ++


36

Я не дуже досвідчений з мовою С, і мені було цікаво, чи є спосіб, за допомогою якого пітон може бути використаний для програмування Arduino. Це, швидше за все, вимагатиме іншої IDE, щоб мати можливість налагоджувати сценарії самостійно.


2
Є кілька альтернатив для програмування Arduino, одна з них - BitLash і є основний інтерпретатор . Під час пошуку в Інтернеті є кілька варіантів, але навчання C / C ++ в кінцевому підсумку окупиться.
jippie

Дякую, я справді трохи краще вживаюсь на C, просто не так добре, як я з Python.
JVarhol

2
пов'язане, більш загальне питання: "Варіанти програмування Arduino, крім C ++"
Девід Кері

Чи є ІП малини варіант?
Павло

Відповіді:


26

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

Ваша найкраща ставка, ймовірно, буде пошук способу складання сценарію Python до коду власного машини (саме так працює C / C ++). Я вважаю, що існують проекти, які можуть зробити щось подібне для інших платформ, але (наскільки я знаю) жоден, який би це не зробив успішно для Arduino.

Ви можете знайти більше корисної інформації з цього питання в Stack Overflow: Чи є спосіб "компілювати" код Python на Arduino (Uno) .


15

Так, Arduino можна (дещо) запрограмувати за допомогою Python. Один з таких проектів на Github - це Python Arduino Prototyping API v2 . Він забезпечує дуже основні функціональні можливості, такі як цифровий введення / виведення та аналоговий введення / виведення.

Це можна використовувати для дуже простих проектів.


* Цей проект трохи зламає "програмування" плати за допомогою послідовного з'єднання. Він передає команди над послідовним з'єднанням до ескізу, який працює на дошці, який потім "виконує" команду Python.


Отже, плату потрібно підключити до комп'ютера, щоб фактично запустити код?
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 з великим успіхом у керуванні шпильками на ардуїно. Ваша робоча станція (ноутбук тощо) виконує сценарій пітона, який потім в режимі реального часу спілкується з ардуїно.

Це не зовсім те саме, що запускати сценарій безпосередньо на ардуїно, але я робив зовсім трохи більше, ніж я вважав, що ардуїно може впоратися (деякий аналіз музики, потрапляння на REST api тощо).


3

Ще один варіант, який слід врахувати - це Ардуїно Юнь . Крім чіпа AVR, який має більшість Arduinos, він також включає мікросхем MIPS під управлінням Linux. Оскільки це Linux, ви можете легко запустити код python, і будь-який чистий пакет python можна легко встановити.

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


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), як працюють датчики, але для цього потрібно набагато більше часу. Код IDE Arduino та Python Code для Arduino використовують функції C Code для спрощення речей. Python та Arduino IDE, якщо використовують Firmata, вони використовують послідовний зв’язок, і ви думаєте, що ви кодуєте себе.


-1

Так. Python можна використовувати для програмування Arduino, просто імпортуючи pyfirmata, який може поєднати ардуїно з Python.


Правда. Але це не те, про що вимагає ОП.
sempaiscuba

-8

Я боюся, що Arduino IDE не використовує мову C / C ++. Він походить від Processing IDE і має досить спрощений C / Java-синтаксис.


9
ID Arduino - це C ++: він робить мінімальну попередню обробку (попередньо "#include <Arduino.h>" та декларації для визначеної вами функції), а потім викликає звичайний компілятор C ++ (GNU g ++).
Едгар Бонет

Це саме IDE, а не мова програмування, яка походить від Processing.
Пітер Блумфілд

Практично нікого не цікавить впровадження IDE на Arduino. Сенс у тому, щоб вміти писати Python, який ефективно виконує на Arduino.
wallyk
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.