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.print
dane 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/ttyACM0
porty, a starsze /dev/ttyUSB0
. Oto, co znalazłem pod Raspbian:
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
None
powstają wartości.
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ń):
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
źródło
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 .
źródło
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
Kevin podaje trochę więcej szczegółów na swoim blogu :
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
źródło
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.
źródło
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.
źródło