Lập trình Arduino bằng Python, thay vì C / C ++


36

Tôi không rành về Ngôn ngữ C và tôi đã tự hỏi liệu có cách nào để trăn có thể được sử dụng để lập trình Arduino. Điều này rất có thể sẽ yêu cầu một IDE khác để có thể tự gỡ lỗi các tập lệnh mà chúng tự xử lý.


2
Có một vài lựa chọn thay thế cho lập trình Arduino, một trong số đó là BitLash và có một trình thông dịch cơ bản . Có một số tùy chọn khi bạn tìm kiếm trên Internet, nhưng việc học C / C ++ cuối cùng sẽ được đền đáp.
jippie

Cảm ơn, tôi thực sự đã khá hơn một chút ở C, chỉ là không tốt bằng tôi với Python.
JVarhol

2

Là một quả mâm xôi PI là một lựa chọn?
Paul

Câu trả lời:


26

Sẽ cực kỳ khó khăn để có được bất kỳ loại kịch bản Python nào chạy trực tiếp trên Arduino. Lý do là vì nó là ngôn ngữ được dịch, vì vậy bạn sẽ cần trình thông dịch trên tàu cùng với tập lệnh văn bản thuần túy. Có lẽ sẽ không đủ bộ nhớ cho tất cả điều đó.

Đặt cược tốt nhất của bạn có lẽ là tìm cách biên dịch tập lệnh Python thành mã máy gốc (đó là cách C / C ++ hoạt động). Tôi tin rằng có những dự án xung quanh để làm một cái gì đó tương tự cho các nền tảng khác, nhưng (theo như tôi biết) không có dự án nào thành công cho Arduino.

Bạn có thể tìm thấy một số thông tin hữu ích hơn cho câu hỏi này tại Stack Overflow: Có cách nào để "biên dịch" mã Python lên Arduino (Uno) không .


15

Vâng, có thể (phần nào) có thể lập trình Arduino bằng Python. Một dự án như vậy trên Github là API nguyên mẫu Python Arduino v2 . Nó cung cấp các chức năng rất cơ bản như I / O kỹ thuật số và I / O tương tự.

Điều này có thể được sử dụng cho các dự án rất đơn giản.


* Dự án này là một chút hack trong "lập trình" bảng bằng kết nối nối tiếp. Nó chuyển các lệnh qua kết nối nối tiếp đến một bản phác thảo đang chạy trên bảng, sau đó "thực thi" lệnh Python.


Vì vậy, bảng phải được cắm vào máy tính để thực sự chạy mã?
JVarhol

@JVarhol Lạ lùng, vâng.
asheeshr

1
Chà, khá là nhảm nhí. Nó sẽ dễ dàng hơn để sử dụng Raspberry Pi.
JVarhol

8

Có một dự án đưa một máy ảo Python vào các bộ điều khiển vi mô, bao gồm cả Arduino Mega .

Đây là một trích dẫn từ Ardunio Mega README , mang lại cảm giác về điều này có thể như thế nào (mặc dù, tôi chưa thử nghiệm điều này!):

Sau đây là phiên ví dụ sử dụng 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

Tôi đã sử dụng pyserial rất thành công trong việc kiểm soát các chân trên arduino. Máy trạm của bạn (máy tính xách tay, v.v.) chạy một kịch bản python sau đó giao tiếp trong thời gian thực với arduino.

Nó không hoàn toàn giống như chạy tập lệnh trực tiếp trên arduino nhưng tôi đã làm được nhiều hơn một chút so với tôi nghĩ rằng arduino có thể xử lý (một số phân tích âm nhạc, nhấn api REST, v.v.).


3

Một lựa chọn khác để xem xét là Arduino Yun . Ngoài chip AVR mà hầu hết Arduinos có, nó cũng bao gồm chip MIPS chạy Linux. Vì là linux, bạn có thể dễ dàng chạy mã python và bất kỳ gói python thuần nào cũng có thể dễ dàng cài đặt.

Tuy nhiên, tất cả khả năng nhập / xuất thú vị là trên chip AVR, không phải trên chip MIPS. Các dự án như Autobahn và LininoIO giải quyết vấn đề này bằng cách chạy một chương trình đặc biệt trên chip AVR, thực hiện các thao tác I / O theo hướng dẫn từ chip MIPS.


0

Chúng tôi biết đây là một vấn đề mở trong lập trình Arduino và trong thế giới nhúng nói chung. Có nhiều giải pháp khác nhau có sẵn trên thị trường như MicroPython nhưng hầu hết chúng đều dành riêng cho các bảng cụ thể và không cho phép giữ cho hệ thống theo thời gian thực. Chúng tôi đang làm việc trên một giải pháp! VIPER là một máy ảo Python cho Arduino DUE và tất cả các kiến ​​trúc ARM 32 bit chạy trên hệ điều hành thời gian thực. Điều này có nghĩa là bạn có thể phát triển các tập lệnh Python có thể được trình bày bằng Arduino DUE, UDOO, Spark (tất cả các bảng) và trên các bảng nhân ST mới. Ngoài ra, nếu bạn cần hiệu suất cao và bạn thành thạo C, bạn có thể phát triển các mô-đun thời gian thực cho VIPER có thể được gọi và quản lý bởi các tập lệnh Python.

Bạn có thể thấy VIPER hoạt động tại đây http://bit.ly/kickviper


Đây không phải là một vấn đề mở. python là một ngôn ngữ thụt lề khủng khiếp.
dùng2497

0

Bạn có thể học từ C (AVR) cách các cảm biến hoạt động nhưng nó cần nhiều thời gian hơn. Mã Arduino IDE và Mã Python cho Arduino sử dụng các chức năng Mã C để làm cho mọi thứ đơn giản. Python và Arduino IDE nếu sử dụng Firmata, họ sử dụng giao tiếp nối tiếp và bạn nghĩ bạn tự viết mã.


-1

Vâng. Python có thể được sử dụng để lập trình Arduino, chỉ đơn giản bằng cách nhập pyfirmata, có thể giao tiếp arduino với Python.


Thật. Nhưng đó không phải là những gì OP yêu cầu.
sempaiscuba

-8

Tôi e rằng Arduino IDE không sử dụng ngôn ngữ C / C ++. Nó bắt nguồn từ Xử lý IDE và có cú pháp giống C / Java khá đơn giản.


9
Arduino IDE là C ++: nó thực hiện một số tiền xử lý tối thiểu (bổ sung vào bộ điều khiển # #.
Edgar Bonet

Đó là bản thân IDE chứ không phải ngôn ngữ lập trình bắt nguồn từ Đang xử lý.
Peter Bloomfield

Hầu như không ai quan tâm đến việc triển khai IDE trên Arduino. Vấn đề là có thể viết Python thực thi hiệu quả trên Arduino.
wallyk
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.