Raspberry Pi und Arduino Uno verbinden

Die Schaltung

Für den vorgesehenen Zweck genügt eine ganz einfache Schaltung (Abbildung 2). Wie Sie sehen, kommt der HIGH-Wert direkt von Pin 8 des Arduino, den Sie direkt mit dem 220-Ohm-Resistor verbinden. Das andere Ende des Resistors legen Sie an die Anode (das Plus-Bein) der LED an. Deren Kathode (das Minus-Bein) verbinden Sie direkt mit Masse, in diesem Fall mit dem Arduino als Gnd bezeichneten Pin.

Abbildung 2: Das Diagramm des benötigten Schaltkreises. Es wurde mit dem Programm Fritzing erstellt, das sich speziell für Arduino-Entwürfe gut eignet.

Nun geht es wieder zurück an den Raspberry Pi, wo Sie nun ein Stück Python-Code erstellen, entweder im Texteditor oder in einer Python-IDE wie IDLE. Tippen sie die Zeilen aus Listing 2 ein und speichern Sie diese in der Datei ardu2Pi.py. Sie starten das kleine Programm durch den Aufruf python ardu2Pi.py in einem Terminal.

Listing 2

 

#!/usr/bin/python
# ardu2Pi.py
################
#  Port Detection
import serial
for com in range(0,4):
  try:
    PORT = '/dev/ttyACM'+str(com)
    BAUD = 9600
    board = serial.Serial(PORT,BAUD)
    board.close()
    break
  except:
    pass
########
# Blinks
from Tkinter import *
import time
DEVICE = '/dev/ttyACM'+str(com)
BAUD = 9600
ser = serial.Serial(DEVICE, BAUD)
root = Tk()
def five() :
  ser.write('5')
  return
def two() :
  ser.write('2')
  return
def seven() :
  ser.write('7')
  return
root.title("Arduino im Test")
Label(text="Raspberry Pi Geek 05/2013", fg="#0A116B").pack()
Label(text="RasPi gruesst Arduino!",fg="#0A116B").pack()
Button(text='2x blinken', command=two, background="#33D63B", fg="#FFFFFF").pack()
Button(text='5x blinken', command=five, background="#1DE4F2", fg="#FFFFFF").pack()
Button(text='7x blinken', command=seven, background="#DC0F16", fg="#FFFFFF").pack()
root.mainloop()

Der erste Teil des Codes prüft, an welchem RasPi-Port der Arduino hängt, und speichert dessen Nummer in der Variablen com. Nun zeigt das Programm ein rudimentäres Tk-Fenster mit drei Schaltern an (Abbildung 3). Drücken Sie einen davon, dann leuchtet die LED so oft auf, wie die Aufschrift es angibt. Dazu sendet das Programm über das USB-Kabel die Anzahl der gewünschten Pulse, die der Arduino in Listing 1 in die Variable num einliest.

Abbildung 3: Diese kleine Anwendung sendet die Anzahl der gewünschten Blinkvorgänge an den Arduino.

Fehlerquellen

Blinkt die LED nicht, dann kann das unterschiedlichste Ursachen haben. Prüfen Sie zunächst einmal die Schaltung und stellen Sie sicher, dass nichts lose sitzt. Das Kabel von Pin 8 des Arduino muss auf die selbe Reihe des Breadboards führen wie das eine Bein des Resistors. Dessen anderes Bein gehört wiederum in die selbe Reihe wie die Anode der LED (normalerweise das längere Bein). Schließlich muss das letzte Kabel von der Kathode der LED zurück zum Gnd-Pin des Arduino führen, um den Schaltkreis zu schließen (Abbildung 4).

Abbildung 4: Der Schaltkreis ist fertig verkabelt, es kann losgehen.

Möglicherweise ist der Name des Ports für den Arduino am RasPi ein anderer, als Sie angegeben haben – etwa /dev/ttyACM1 statt /dev/ttyACM0). Das kann auftreten, wenn Sie den Arduino zwischendurch einmal ausgesteckt haben. Um so etwa zu vermeiden, halten Sie nach jedem Wiedereinstecken des Arduino das Programm ardu2Pi.py an, warten einige Sekunden, damit der Linux-Kernel den Arduino wieder korrekt erkennen kann, und starten das Programm dann neu.

Der Code aus Listing 3 prüft, an welchem Port der RasPi den Arduino erkennt. Eine typische Ausgabe zeigt Listing 4. Während unserer Tests steckten wir den Arduino mehrmals zwischen den beiden USB-Ports des Raspberry Pi um. In allen Fällen wurde der Arduino anschließend an /dev/ttyACM0 gefunden.

Listing 3

 

#!/usr/bin/python
# whereIsArduino.py
import serial
for com in range(0,4):
  try:
    PORT = '/dev/ttyACM'+str(com)
    BAUD = 9600
    board = serial.Serial(PORT,BAUD)
    print 'Arduino erkannt an /dev/ttyACM'+str(com)
    print 'Hardware: %s' % board.__str__()
    board.close()
    break
  except:
    print 'Kein Arduino an /dev/ttyACM'+str(com)

Listing 4

 

$ python whereIsArduino.py
Kein Arduino an /dev/ttyACM0
Kein Arduino an /dev/ttyACM0
Kein Arduino an /dev/ttyACM0
Kein Arduino an /dev/ttyACM0
$ python whereIsArduino.py
Arduino erkannt an /dev/ttyACM0
Hardware: Serial<id=0x1819550, open=True>(port='/dev/ttyACM0', baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=False, [...]

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Aktuelle Ausgabe

08/2019
Smarte Hacks

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Immer der Reihe nach

    Mit einer einfachen Schaltung testen Sie Bausteine, die über den SPI-Bus miteinander kommunizieren.

  • Einzigartig

    Eine MAC-Adresse ermöglicht die Kommunikation im Netzwerk. Der 24AA02E48 liefert sie für Setups, die aus grundlegenden Komponenten bestehen.

  • Steinkuchen

    Der Raspberry Pi hat viele Fans, doch nicht ohne Grund sehnen sich viele Anwender nach einem RasPi 4. Der Rock Pi 4 übertrumpft den RasPi 3 in Sachen Leistung um Längen und schlägt sich auch in der Praxis gut.

  • Kerngeschäft

    Der Einstieg in die Welt der Mikrocontroller fällt nicht ganz leicht. Mit dem Nucleo F401RE haben Sie jedoch ein Entwicklerboard samt abgestimmter Entwicklungsumgebung an der Hand.

  • Himbeer-Geräte

    Mit Maus und Tastatur im weiß-roten Raspberry-Look macht die Raspberry Pi Foundation das eigene Angebot an Peripheriegeräten für den Mini-Rechner komplett.

  • Unter Kontrolle

    PiCockpit ist eine speziell auf den RasPi zugeschnittene Online-Monitoring-Lösung. Wir werfen einen ersten Blick auf den brandneuen und in Ausbau befindlichen kostenlosen Dienst.

  • Ins rechte Licht gesetzt

    Selbst ohne eigenen Garten holen Sie sich Pflanzen mithilfe von LEDs in jeden Raum und sehen ihnen mit dem RasPi beim Wachsen zu.

  • Helligkeit nach Maß

    Wer bei wechselnden Lichtverhältnissen nicht ständig die Beleuchtung manuell nachregeln möchte, der spannt dafür einen PiXtend ein.

  • Geschrumpft

    Kleine Bildschirme gibt es zwar viele, aber der Support von Raspbian ist überraschend schlecht. Mit ein paar Tricks erzielen Sie trotzdem ein optimales Ergebnis.

  • Brüllwürfel

    Kompakt-Stereoanlagen mit CD-Spieler und Kassettendeck sind inzwischen oft ein Fall für den Recyclinghof – oder für die digitale Wiederbelebung mit einem RasPi und etwas Geschick.