Làm thế nào để gắn Arduino?


43

Các trang web Arduino tiền nó lên như

Arduino là một nền tảng tạo mẫu điện tử mã nguồn mở dựa trên phần cứng và phần mềm linh hoạt, dễ sử dụng. Nó dành cho các nghệ sĩ, nhà thiết kế, người có sở thích và bất kỳ ai quan tâm đến việc tạo ra các đối tượng hoặc môi trường tương tác.

Nó có thể là một giao diện đẹp để điều khiển các servo và cung cấp các kết nối khác được cung cấp bởi nhiều lá chắn tùy chọn.

Làm cách nào để kết nối một với Raspberry Pi? Làm cách nào để thiết lập liên lạc?

Câu trả lời:


38

Arduinos thường xuất hiện dưới dạng thiết bị nối tiếp USB. Các bo mạch hiện tại sử dụng trình điều khiển nối tiếp USB được tích hợp trong bộ vi xử lý chính, nhưng Arduinos (và bản sao) cũ hơn đã sử dụng các chip nối tiếp USB của bên thứ ba riêng biệt.

Để đơn giản nhận Serial.printdữ liệu trên Raspberry Pi từ Arduino, tôi sử dụng chương trình GNU Screen làm thiết bị đầu cuối cơ bản: screen [serial-port] [baud-rate](ví dụ screen /dev/ttyACM0 9600).

Tôi đã thử nghiệm ba Arduinos khác nhau và một bản sao khá khác nhau. Các biến thể mới hơn đều xuất hiện dưới dạng /dev/ttyACM0cổng và phiên bản cũ hơn /dev/ttyUSB0. Đây là những gì tôi tìm thấy, dưới Raspbian:

  • Duemilanove - Chip nối tiếp: FTDI FT 232RL ; Cổng nối tiếp:/dev/ttyUSB0
  • Uno - Chip nối tiếp: Atmel ATmega16U2 (hoặc 8U2 trên bo mạch cũ); Cổng nối tiếp:/dev/ttyACM0
  • Leonardo - Chip nối tiếp: Atmel ATmega32U4 (tích hợp); Cổng nối tiếp:/dev/ttyACM0
  • OMS Omega-328U - Chip nối tiếp: Phòng thí nghiệm Silicon CP210x ; Cổng nối tiếp : /dev/ttyUSB0.

Raspberry Pi có thể không cung cấp đủ năng lượng để lái Arduino, vì vậy bạn có thể cần nguồn điện bên ngoài. Để hoàn thiện, tôi cũng đã thử nghiệm Prolific PL2303 , mặc dù nó không có trên bất kỳ Arduino nào tôi biết. Nó xuất hiện khá vui vẻ như /dev/ttyUSB0.

Đối với giao tiếp phức tạp hơn với các cảm biến, bạn có thể xem xét Firmata , "một giao thức chung để giao tiếp với các bộ vi điều khiển từ phần mềm trên máy tính chủ". Nó có các triển khai cho Arduino và các thư viện Python để chạy bên phía Raspberry Pi.

Đây là một ví dụ nhỏ sử dụng pyFirmata để đọc LM35 và thay đổi độ sáng của đèn LED:

#!/usr/bin/python
# -*- coding: utf-8 -*-

# simple test of pyfirmata and Arduino; read from an LM35 on A0,
#                                       brighten an LED on D3 using PWM
# scruss, 2012-08-14 - tested on Arduino Uno & Raspberry Pi (Raspbian)

import pyfirmata

# Create a new board, specifying serial port
board = pyfirmata.Arduino('/dev/ttyACM0')

# start an iterator thread so that serial buffer doesn't overflow
it = pyfirmata.util.Iterator(board)
it.start()

# set up pins
pin0=board.get_pin('a:0:i')             # A0 Input      (LM35)
pin3=board.get_pin('d:3:p')             # D3 PWM Output (LED)

# IMPORTANT! discard first reads until A0 gets something valid
while pin0.read() is None:
    pass

for i in range(10):
    pin3.write(i/10.0)                  # set D3 to 0, 10%, 20%, ... brightness
    print "PWM: %d %% Temperature %.1f °C" % (i * 10, pin0.read() * 5 * 100)
    board.pass_time(1)                  # pause 1 second

pin3.write(0)                           # turn LED back off
board.exit()

Có một số lưu ý khi sử dụng pyFirmata:

  • Đọc tương tự và ghi PWM được chuẩn hóa thành phạm vi 0 .. 1, và không phải là Arduino 0 .. 255 và 0 .. 1023 tiêu chuẩn.
  • Bạn thực sự cần phải bắt đầu một luồng lặp riêng biệt để dừng các bài đọc cũ tràn bộ đệm nối tiếp
  • Vì Arduino được đọc không đồng bộ, hãy đảm bảo rằng kết nối pyFirmata được khởi tạo hoàn toàn trước khi đọc từ các cổng. Mặt khác, Nonegiá trị xảy ra sau đó.

1
Tôi cũng đã xác nhận rằng bạn có thể chạy Xử lý trên Raspberry Pi. Nó rất chậm, nhưng tôi đã xoay sở để điều khiển Arduino qua liên kết USB: Điều khiển Arduino từ Raspberry Pi bằng cách xử lý . Tôi sẽ xem liệu tôi có thể chuyển cái này sang Python / tkinter không ...
xem xét

Cảm ơn câu trả lời này nó rất hữu ích. Tôi đang sử dụng nối tiếp python để đọc từ / dev / ttyACM0 và thấy nó không nhất quán. Tôi cho rằng đó là sự thiếu năng lượng đối với arduino của tôi nhưng tôi đã nối nó với nguồn điện bên ngoài và vẫn đang gặp vấn đề. Đôi khi dữ liệu không đúng định dạng, đôi khi một ngoại lệ được đưa ra vì / dev / ttyACM0 không được tìm thấy (mặc dù các lần chạy tiếp theo sẽ tìm thấy nó). Bạn đã có vấn đề tương tự?
Andy Smith

Không, điều này không phù hợp với kinh nghiệm của tôi.
xem xét

Cảm ơn bạn đã phản hồi - thật thú vị, phải là điều gì đó tôi đang làm sai!
Andy Smith

Có thể hỏi một câu hỏi cụ thể không phải Pi trên SE, hoặc hỏi trực tiếp trên diễn đàn Arduino.
Comms

13

Trong trường hợp không rõ ràng, với Raspbian Wheezy , bạn có thể chạy Arduino IDE và tải các bản phác thảo lên Arduino khi được kết nối với cổng USB của Raspberry Pi. Để cài đặt trên Raspbian, chỉ cần nhập vào trình bao (còn gọi là dòng lệnh):

sudo apt-get install arduino

Nó sẽ tải xuống và cài đặt tất cả các gói cần thiết. Tôi đã có một vài hình ảnh về Arduino IDE trong Raspbian tại đây:

http://www.element14.com/community/groups/raspberry-pi/blog/2012/07/03/review-of-raspberry-pi-images

(như những người khác đã mô tả ở trên, Raspberry Pi cũng có thể lập trình Arduino thông qua các chân cổng nối tiếp (UART) trên tiêu đề GPIO. Trong trường hợp này, bạn sẽ không phải "lãng phí" cổng USB, nhưng nó sẽ yêu cầu cấu hình bổ sung ).

Chúc mừng, đã vẽ


Tôi đã thử nghiệm Arduino Uno với đèn LED RGB với bản phác thảo đơn giản và Arduino Uno chỉ được cấp nguồn từ cổng USB của Raspberry Pi. Tôi không có bất kỳ vấn đề, nhưng, tất nhiên, YMMV.
pdp7

8

Người ta có thể chọn kết nối rpi với arduino bằng cổng usb hoặc bằng cách sử dụng các chân GPIO. Người ta có thể sử dụng Wirespi để thực hiện giao tiếp giữa các bảng.

Hiện tại cũng có một cây cầu đang được phát triển gọi là Ponte .

Một thế giới xin chào cơ bản có thể được tìm thấy ở đây .


7

Các à la mode

Quảng cáo là Cách thích hợp để chấm Arduino trong một Raspberry Pi bằng Hack Một Day, à la mode là một clone Arduino stackable thiết kế bởi Anool Mahidharia, Justin Shaw và Kevin Osborn từ Wyolum.com hợp tác OSHW. Hack A Day mô tả nó như sau

Ngay khỏi con dơi, AlaMode cắm trực tiếp vào các chân GPIO của Raspberry Pi. Từ đó, giao tiếp với ATMega của Arduino được kích hoạt, cho phép bạn gửi và nhận dữ liệu giống như bạn làm với Arduino. Có đồng hồ thời gian thực, các tiêu đề servo, có nhiều cách để cấp nguồn cho bo mạch và thậm chí là một đột phá cho [a] mô-đun GPS.

Rất nhiều hành trình không cần thiết được thực hiện trong AlaMode; Không có cổng USB, nhưng nó có thể được lập trình trực tiếp qua các chân GPIO của Raspberry Pi. Khá gọn gàng và chúng tôi không thể chờ để lấy một cái cho [Raspberry Pi] của chúng tôi.

Kevin cung cấp thêm một chút chi tiết trên blog của mình :

Dưới đây là các tính năng bao gồm một vài tính năng bổ sung:

  • Sức mạnh linh hoạt. Có thể được cấp nguồn trực tiếp từ Pi, độc lập với pin hoặc mụn cóc trên tường hoặc nguồn USB. Điều này rất quan trọng nếu khiên của bạn mất nhiều năng lượng hơn số Pi có thể cung cấp hoặc nếu bạn muốn tháo gỡ nó để hoạt động độc lập. Có thể lập trình thông qua UART của Pi trên các chân GPIO hoặc bộ chuyển đổi USB-serial FTDI hoặc ISP.
  • Tiêu đề để kết nối GPS Fastrax UP501. Đồng hồ thời gian thực DS3234. Pi không có RTC hỗ trợ pin. Bạn có thể đặt chương trình trong AlaMode để báo cáo thời gian cho Pi thông qua nối tiếp hoặc I2C
  • Khe cắm thẻ micro-SD. Hữu ích cho việc ghi dữ liệu và bộ nhớ lớn cho các ứng dụng Arduino của bạn
  • Hàng tiêu đề Servo được kết nối với các chân PWM với nguồn điện và đường ray nối đất

Beta giới hạn

Hội đồng quản trị hiện đang trong giai đoạn thử nghiệm giới hạn, nhưng nó xứng đáng được đề cập đến như là một bản sao được suy nghĩ kỹ, đã được công bố bởi một nhóm với hình thức trước đó .

Người giới thiệu

  1. Bài viết trên Blog của Hack A Day
  2. Bài viết trên blog của Kevin Osborn
  3. Wyolum.com

4

Bạn có thể xem xét Gert Board hiện là Arduino nếu bạn muốn một nền tảng giao tiếp phần cứng có mục đích chung. Một lợi thế là có nhiều tài liệu về tương tác với RPi. Có sẵn để đặt hàng trước từ Element14 kể từ 8/8/12.


0

Có một RaspberryPi HAT hoạt động giống như Arduino và có thể được lập trình thông qua giao diện người dùng web từ bất kỳ trình duyệt nào. Dự án được gọi là CoPiino . Nó đi kèm hoàn toàn với phần mềm và chạy. Chỉ cần nhập Arduino Sketch trong giao diện người dùng trình duyệt và nhấn "biên dịch và chạy" - đó là nó.


1
cho rằng bạn đã đăng ít nhất hai câu trả lời đang quảng bá CoPino Tôi nghi ngờ rằng bạn đã kết nối với dự án này. Bất kỳ kết nối nào cũng cần được lưu ý trong câu trả lời của bạn,
Steve Robillard

Vâng, điều đó hoàn toàn chính xác và nhận xét của tôi bao gồm chủ đề hoàn toàn. Bảng CoPiino tương tự như bảng a-la-mode đã được đề cập. Trường hợp CoPiino đưa ra một số tính năng bổ sung tốt đẹp. Trường hợp lập trình Arduino từ Pi dễ dàng được bảo hiểm - đó là câu hỏi ban đầu.
tswaehn

Bốn năm bạn vẫn chưa chỉnh sửa trong liên kết của bạn. Xin hãy làm như vậy.
Jon Harper
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.