Jak dołączyć Arduino?

43

Witryna Arduino podsumowuje to jako

Arduino to platforma prototypowania elektroniki typu open source oparta na elastycznym, łatwym w użyciu sprzęcie i oprogramowaniu. Jest przeznaczony dla artystów, projektantów, hobbystów i wszystkich zainteresowanych tworzeniem interaktywnych obiektów lub środowisk.

Może to być przyjemny interfejs do kontrolowania serwomechanizmów i zapewniania innych połączeń zapewnianych przez wiele opcjonalnych osłon.

Jak podłączyć jeden do Raspberry Pi? Jak skonfigurować komunikację?

Lucas Kauffman
źródło

Odpowiedzi:

38

Arduinos zwykle pojawiają się jako urządzenia szeregowe USB. Obecne płyty wykorzystują sterownik szeregowy USB wbudowany w główny mikroprocesor, ale starsze Arduinos (i klony) używały oddzielnych układów szeregowych USB innych firm.

Aby po prostu odbierać Serial.printdane na Raspberry Pi z Arduino, używam programu GNU Screen jako podstawowego terminala: screen [serial-port] [baud-rate](na przykład screen /dev/ttyACM0 9600).

Testowałem trzy różne Arduinos i jeden raczej inny klon. Wszystkie nowsze wersje pojawiły się jako /dev/ttyACM0porty, a starsze /dev/ttyUSB0. Oto, co znalazłem pod Raspbian:

  • Duemilanove - Chip szeregowy: FTDI FT232RL ; Port szeregowy:/dev/ttyUSB0
  • Uno - układ szeregowy: Atmel ATmega16U2 (lub 8U2 na starszych płytach); Port szeregowy:/dev/ttyACM0
  • Leonardo - układ szeregowy: Atmel ATmega32U4 (wbudowany); Port szeregowy:/dev/ttyACM0
  • OMS Omega-328U - Układ szeregowy: Silicon Labs CP210x ; Port szeregowy: /dev/ttyUSB0.

Raspberry Pi może nie zapewniać wystarczającej mocy do prowadzenia Arduino, więc możesz potrzebować zasilania zewnętrznego. Dla kompletności przetestowałem również Prolific PL2303 , nawet jeśli nie ma go na żadnym Arduino, którego znam. Wyglądało to całkiem radośnie jako /dev/ttyUSB0.

W przypadku bardziej skomplikowanej komunikacji z czujnikami można rozważyć Firmatę , „ogólny protokół do komunikacji z mikrokontrolerami z oprogramowania na komputerze hosta”. Ma implementacje dla Arduino i bibliotek Pythona do działania po stronie Raspberry Pi.

Oto mały przykład użycia pyFirmata do odczytu LM35 i zmiany jasności diody 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()

Podczas korzystania z pyFirmata istnieją pewne zastrzeżenia:

  • Odczyty analogowe i zapisy PWM są znormalizowane do zakresu 0 .. 1, a nie standardowe Arduino 0 .. 255 i 0 .. 1023.
  • Naprawdę musisz uruchomić oddzielny wątek iteratora, aby zatrzymać stare odczyty przepełnione buforem szeregowym
  • Ponieważ Arduino jest odczytywane asynchronicznie, upewnij się, że połączenie pyFirmata zostało w pełni zainicjowane przed odczytem z portów. W przeciwnym razie Nonepowstają wartości.
szum
źródło
1
Potwierdziłem również, że możesz uruchomić Przetwarzanie na Raspberry Pi. Jest bardzo powolny, ale udało mi się zmusić go do sterowania Arduino przez łącze USB: Kontrolowanie Arduino z Raspberry Pi za pomocą Przetwarzania . Zobaczę, czy uda mi się to przenieść do Pythona / tkintera ...
scruss
Dzięki za tę odpowiedź była bardzo przydatna. Używam numeru seryjnego Python do odczytu z / dev / ttyACM0 i uważam, że jest to bardzo niespójne. Zakładałem, że to brak zasilania mojego arduino, ale podłączyłem go do zewnętrznego źródła zasilania i nadal mam problemy. Czasami dane są zniekształcone, czasami zgłaszany jest wyjątek, ponieważ nie znaleziono / dev / ttyACM0 (chociaż kolejne uruchomienia go znajdą). Czy miałeś podobne problemy?
Andy Smith,
Nie, to nie pasuje do mojego doświadczenia.
scruss
Dzięki za odpowiedź - ciekawe, to chyba coś, co robię źle!
Andy Smith,
Może zadaj pytanie SE na pytanie inne niż Pi lub bezpośrednio na forum Arduino. Szeregowe połączenia często powodują ból głowy ...
scruss
13

W przypadku, gdy nie jest to jasne, dzięki Raspbian Wheezy możesz uruchomić Arduino IDE i przesłać szkice do Arduino po podłączeniu do portu USB Raspberry Pi. Aby zainstalować na Raspbian, po prostu wpisz w powłokę (inaczej wiersz poleceń):

sudo apt-get install arduino

Pobierze i zainstaluje wszystkie potrzebne pakiety. Mam tutaj kilka zdjęć Arduino IDE w języku Raspbian:

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

(jak opisali inni ludzie, Raspberry Pi może również programować Arduino za pomocą pinów portu szeregowego (UART) w nagłówku GPIO. W takim przypadku nie trzeba by „marnować” portu USB, ale wymagałoby to dodatkowej konfiguracji ).

Pozdrawiam, Drew

pdp7
źródło
Testowałem Arduino Uno z diodą LED RGB z prostym szkicem, a Arduino Uno było zasilane tylko z portu USB Raspberry Pi. Nie miałem żadnych problemów, ale oczywiście YMMV.
pdp7,
8

Można zdecydować się na podłączenie rpi do arduino za pomocą portu USB lub za pomocą pinów GPIO. Można użyć Wiringpi do komunikacji między płytami.

Obecnie powstaje także most o nazwie Ponte .

Podstawowy świat cześć można znaleźć tutaj .

Lucas Kauffman
źródło
7

Tryb à la

Zapowiadane jako właściwy sposób na umieszczenie Arduino w Raspberry Pi autorstwa Hack A Day, tryb à la to układany w stosy klon Arduino zaprojektowany przez Anoola Mahidharię, Justina Shawa i Kevina Osborna ze współpracy Wyolum.com OSHW. Hack A Day opisał to w następujący sposób

Od samego początku AlaMode podłącza się bezpośrednio do pinów GPIO Raspberry Pi. Stamtąd możliwa jest komunikacja z ATMega Arduino, umożliwiając wysyłanie i odbieranie danych tak, jak w przypadku Arduino. Istnieje zegar czasu rzeczywistego, nagłówki serwomechanizmów, wiele sposobów zasilania płyty, a nawet przebicie modułu GPS.

Wiele niepotrzebnych cruft jest usuwane w AlaMode; Nie ma portu USB, ale można go zaprogramować bezpośrednio na stykach GPIO Raspberry Pi. Całkiem nieźle i nie możemy się doczekać, aby zdobyć jeden dla naszego [Raspberry Pi].

Kevin podaje trochę więcej szczegółów na swoim blogu :

Oto funkcje, w tym kilka dodatkowych gadżetów:

  • Elastyczna moc. Może być zasilany bezpośrednio z Pi, samodzielny z baterią lub ścienną lub zasilaniem USB. Jest to ważne, jeśli twoja tarcza wymaga więcej mocy niż Pi może zapewnić lub jeśli chcesz ją oddokować do samodzielnego działania. Programowalny za pomocą UART Pi na stykach GPIO lub adaptera szeregowego FTDI USB lub ISP.
  • Nagłówek do podłączenia Fastrax UP501 GPS. DS3234 Zegar czasu rzeczywistego. Pi nie ma własnego zasilanego bateryjnie układu RTC. Możesz ustawić program w AlaMode, aby raportował czas do Pi przez port szeregowy lub I2C
  • Gniazdo karty Micro-SD. Przydatny do przechowywania danych i dużej pamięci dla aplikacji Arduino
  • Rząd nagłówków serwomechanizmu podłączony do pinów PWM z konfigurowalną szyną zasilającą i szyną uziemiającą

Ograniczona wersja beta

Plansza jest obecnie w ograniczonej wersji beta, ale zasługuje na to, aby wymienić ją jako dobrze przemyślany klon, który został ogłoszony przez grupę o poprzedniej formie .

Bibliografia

  1. Hack A Day's Blog Post
  2. Blog Kevina Osborna
  3. Wyolum.com
Alex Chamberlain
źródło
4

Możesz rozważyć tablicę Gert, która jest teraz oparta na Arduino, jeśli potrzebujesz platformy interfejsu ogólnego przeznaczenia. Jedną z zalet jest to, że istnieje obszerna dokumentacja dotycząca interakcji z RPi. Dostępne do zamówienia w przedsprzedaży od Element14 od 8.08.12.

Chłopak
źródło
0

Istnieje RaspberryPi HAT, który zachowuje się jak Arduino i może być programowany przez interfejs sieciowy z dowolnej przeglądarki. Projekt o nazwie CoPiino . Jest w pełni wyposażony w oprogramowanie. Wystarczy wpisać Arduino Sketch w interfejsie przeglądarki i nacisnąć „kompiluj i uruchom” - to wszystko.

tswaehn
źródło
1
biorąc pod uwagę, że opublikowałeś co najmniej dwie odpowiedzi promujące CoPino, podejrzewam, że jesteś związany z tym projektem. Każde połączenie powinno być odnotowane w twojej odpowiedzi,
Steve Robillard,
Tak, to absolutnie poprawne, a mój komentarz całkowicie obejmuje ten temat. Karta CoPiino jest podobna do wspomnianej już karty trybu a-la. Tam, gdzie CoPiino oferuje kilka fajnych dodatkowych funkcji. Łatwo było omówić programowanie Arduino z Pi - co było początkowym pytaniem.
tswaehn
Po czterech latach wciąż nie edytowałeś swojej afiliacji. Zrób tak, proszę.
Jon Harper