Wie befestige ich einen Arduino?

43

Die Arduino-Website fasst es so zusammen

Arduino ist eine Open-Source-Prototyping-Plattform für die Elektronik, die auf flexibler, benutzerfreundlicher Hardware und Software basiert. Es richtet sich an Künstler, Designer, Bastler und alle, die an der Erstellung interaktiver Objekte oder Umgebungen interessiert sind.

Es kann eine nette Schnittstelle sein, um Servos zu steuern und andere Konnektivität bereitzustellen, die durch die vielen optionalen Abschirmungen bereitgestellt wird.

Wie verbinde ich einen mit einem Raspberry Pi? Wie richte ich die Kommunikation ein?

Lucas Kauffman
quelle

Antworten:

38

Arduinos erscheinen normalerweise als serielle USB-Geräte. Die aktuellen Karten verwenden den im Hauptmikroprozessor integrierten seriellen USB-Treiber, ältere Arduinos (und Klone) verwendeten jedoch separate serielle USB-Chips von Drittanbietern.

Um einfach Serial.printDaten auf dem Raspberry Pi vom Arduino zu empfangen , verwende ich das GNU Screen- Programm als Basis-Terminal: screen [serial-port] [baud-rate](zum Beispiel screen /dev/ttyACM0 9600).

Ich habe drei verschiedene Arduinos und einen ziemlich unterschiedlichen Klon getestet. Die neueren Varianten erschienen alle als /dev/ttyACM0Ports und die älteren /dev/ttyUSB0. Das habe ich unter Raspbian gefunden:

Der Raspberry Pi liefert möglicherweise nicht genügend Strom, um ein Arduino anzutreiben, sodass Sie möglicherweise externe Stromversorgung benötigen. Der Vollständigkeit halber habe ich auch einen Prolific PL2303 getestet , obwohl er auf keinem mir bekannten Arduino zu finden ist. Es wirkte ganz fröhlich wie /dev/ttyUSB0.

Für eine komplexere Kommunikation mit Sensoren können Sie Firmata in Betracht ziehen , ein "generisches Protokoll für die Kommunikation mit Mikrocontrollern über Software auf einem Host-Computer". Es enthält Implementierungen für Arduino- und Python-Bibliotheken, die auf der Raspberry Pi-Seite ausgeführt werden können.

Hier ein kleines Beispiel mit pyFirmata zum Lesen eines LM35 und zum Ändern der Helligkeit einer 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()

Es gibt einige Einschränkungen bei der Verwendung von pyFirmata:

  • Analoge Lesevorgänge und PWM-Schreibvorgänge werden auf einen Bereich von 0 bis 1 normalisiert und nicht auf die Standard-Arduino-Werte 0 bis 255 und 0 bis 1023.
  • Sie müssen wirklich einen separaten Iterator-Thread starten, um zu verhindern, dass alte Messwerte über den seriellen Puffer laufen
  • Da der Arduino asynchron gelesen wird, stellen Sie sicher, dass die pyFirmata-Verbindung vollständig initialisiert ist, bevor Sie von den Ports lesen. Ansonsten Noneergeben sich Werte.
scruss
quelle
1
Ich habe auch bestätigt, dass Sie Processing auf dem Raspberry Pi ausführen können . Es ist sehr langsam, aber ich habe es geschafft, ein Arduino über eine USB-Verbindung zu steuern: Steuern eines Arduino von Raspberry Pi mit Processing . Ich werde sehen, ob ich das auf Python / tkinter portieren kann ...
siehe
Vielen Dank für diese Antwort, es war sehr nützlich. Ich verwende Python Serial, um aus / dev / ttyACM0 zu lesen und finde es sehr inkonsistent. Ich nahm an, dass mein Arduino keinen Strom hat, aber ich habe es an ein externes Netzteil angeschlossen und habe immer noch Probleme. Manchmal sind die Daten fehlerhaft, manchmal wird eine Ausnahme ausgelöst, weil / dev / ttyACM0 nicht gefunden wird (obwohl nachfolgende Ausführungen dies feststellen). Hatten Sie ähnliche Probleme?
Andy Smith
Nein, das passt nicht zu meiner Erfahrung.
Scruss
Danke für die Antwort - interessant, muss etwas sein, was ich dann falsch mache!
Andy Smith
Stellen Sie möglicherweise eine nicht Pi-spezifische Frage zu SE oder stellen Sie eine Frage direkt im Arduino-Forum. Serienkommunikation bereitet mir oft Kopfschmerzen ...
siehe
13

Falls es nicht klar ist, können Sie mit Raspbian Wheezy die Arduino IDE ausführen und Skizzen auf das Arduino hochladen, wenn Sie mit dem USB-Port des Raspberry Pi verbunden sind. Um auf Raspbian zu installieren, geben Sie einfach Folgendes in die Shell ein (auch als Befehlszeile bezeichnet):

sudo apt-get install arduino

Es werden alle benötigten Pakete heruntergeladen und installiert. Ich habe ein paar Fotos von der Arduino IDE in Raspbian hier:

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

(Wie andere Leute oben beschrieben haben, könnte der Raspberry Pi das Arduino auch über die UART-Pins (Serial Port) des GPIO-Headers programmieren. In diesem Fall müssten Sie keinen USB-Port "verschwenden", aber es wäre eine zusätzliche Konfiguration erforderlich ).

Prost, Drew

pdp7
quelle
Ich habe einen Arduino Uno mit RGB-LED mit einfacher Überblendungsskizze getestet und der Arduino Uno wurde nur über den USB-Anschluss des Raspberry Pi mit Strom versorgt. Ich hatte keine Probleme, aber natürlich YMMV.
pdp7
8

Man kann sich dafür entscheiden, den RPI über einen USB-Port oder über die GPIO-Pins mit dem Arduino zu verbinden. Man kann Wiringpi verwenden , um die Kommunikation zwischen den Platinen durchzuführen .

Derzeit wird auch eine Brücke namens Ponte gebaut .

Eine grundlegende Hallo Welt finden Sie hier .

Lucas Kauffman
quelle
7

Der à la mode

Angekündigt als der richtige Weg , ein Arduino in einem Raspberry Pi setzen von Hack Ein Tag, der à la mode ist ein stapelbarer Arduino Klon entworfen von Anool Mahidharia, Justin Shaw und Kevin Osborn vom Wyolum.com OSHW kooperativ. Hack A Day beschrieb es wie folgt

Der AlaMode wird von Anfang an direkt in die GPIO-Pins des Raspberry Pi eingesteckt. Von dort aus wird die Kommunikation mit dem ATMega des Arduino aktiviert, sodass Sie Daten wie mit einem Arduino senden und empfangen können. Es gibt eine Echtzeituhr, Servo-Header, viele Möglichkeiten, das Board mit Strom zu versorgen, und sogar einen Ausbruch für ein GPS-Modul.

Im AlaMode wird eine Menge unnötiger Kruft beseitigt. Es gibt keinen USB-Anschluss, dieser kann jedoch direkt über die GPIO-Pins des Raspberry Pi programmiert werden. Ziemlich ordentlich, und wir können es kaum erwarten, eine für unseren [Raspberry Pi] zu ergattern.

Kevin gibt ein wenig mehr Details in seinem Blog :

Hier sind die Funktionen, einschließlich einiger zusätzlicher Extras:

  • Flexible Leistung. Kann direkt vom Pi mit Strom versorgt werden, als Einzelgerät mit einem Akku oder einer Steckdose oder über USB. Dies ist wichtig, wenn Ihr Schild mehr Strom verbraucht, als der Pi liefern kann, oder wenn Sie ihn für den Standalone-Betrieb abdocken möchten. Programmierbar über den UART des Pi auf den GPIO-Pins oder einen FTDI USB-Serial-Adapter oder ISP.
  • Header zum Anschluss von Fastrax UP501 GPS. DS3234 Echtzeituhr. Der Pi hat keine eigene batteriegepufferte Echtzeituhr. Sie können im AlaMode ein Programm einstellen, das die Uhrzeit über serielle oder I2C-Schnittstelle an den Pi meldet
  • Micro-SD-Kartensteckplatz. Nützlich für die Datenerfassung und viel Speicher für Ihre Arduino-Anwendungen
  • Reihe von Servoköpfen, die über eine konfigurierbare Strom- und Erdungsschiene mit den PWM-Pins verbunden sind

Limited Beta

Das Board befindet sich derzeit in einer eingeschränkten Beta-Phase, verdient jedoch Erwähnung als gut durchdachter Klon, der von einer Gruppe mit vorheriger Form angekündigt wurde .

Verweise

  1. Hack A Day's Blogbeitrag
  2. Kevin Osborns Blogbeitrag
  3. Wyolum.com
Alex Chamberlain
quelle
4

Sie könnten das Gert Board in Betracht ziehen, das jetzt auf Arduino basiert, wenn Sie eine universelle Hardware-Schnittstellenplattform wünschen. Ein Vorteil ist, dass es eine umfangreiche Dokumentation zur Interaktion mit dem RPi gibt. Ab dem 08.08.12 bei Element14 vorbestellbar.

Kerl
quelle
0

Es gibt einen RaspberryPi HAT, der sich wie Arduino verhält und über die Web-Benutzeroberfläche von jedem Browser aus programmiert werden kann. Projekt namens CoPiino . Es wird komplett mit lauffähiger Software geliefert. Geben Sie einfach die Arduino-Skizze in die Browser-Benutzeroberfläche ein und klicken Sie auf "Kompilieren und ausführen" - das wars.

tswaehn
quelle
1
Angesichts der Tatsache, dass Sie mindestens zwei Antworten veröffentlicht haben, die CoPino bewerben, vermute ich, dass Sie mit diesem Projekt verbunden sind. Jede Verbindung sollte in Ihrer Antwort vermerkt werden,
Steve Robillard
Ja, das ist absolut richtig und mein Kommentar deckt das Thema vollständig ab. Die CoPiino-Karte ähnelt der bereits erwähnten A-la-Mode-Karte. Wobei sich CoPiino einige nette Zusatzfunktionen einfallen lässt. Wo das Programmieren des Arduino von Pi leicht fällt - das war die ursprüngliche Frage.
Tswaehn
Vier Jahre später haben Sie Ihre Zugehörigkeit noch nicht geändert. Bitte tun Sie das.
Jon Harper