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

06/2019
Home Improvement

Diese Ausgabe als PDF kaufen

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

Stellenmarkt

Neuigkeiten

  • Verschlungene Pfade

    Mit Schleifen, Fallunterscheidungen und Funktionen programmieren Sie komplexe Skripte auf einfache und elegante Weise.

  • Extrem genau

    Mit einem A/D-Wandler messen Sie bei Bedarf Spannungen. Der MCP3424 macht dabei konstruktionsbedingt eine gute Figur.

  • Verbindungsaufnahme

  • Süßer Wecker

    Dem RasPi fehlen sowohl eine Echtzeituhr als auch ein BIOS, ein zeitgesteuertes Wecken erfordert also Zusatzkomponenten. Hier springt der Witty Pi Mini in die Bresche, ein µHAT von UUGear.

  • Windows to go

    Das Aufsetzen zuverlässiger und sicherer Remote-Desktop-Lösungen erfordert einiges Know-how. Die RasPi-basierte Pinbox von Pintexx reduziert den Konfigurationsaufwand auf ein Minimum.

  • Prima Klima

    In Museen ist es Pflicht, zu Hause nützlich: das permanente Prüfen und zentrale Erfassen der Feuchtigkeit und Temperatur in Räumen.

  • Auf einen Blick

    Ein maßgeschneiderter Infoscreen auf RasPi-Basis mit stromsparendem E-Ink-Display zeigt Termine, Bilder, Mitteilungen und Wetterinformationen an.

  • Sanft berührt

    Mit einem RasPi und dem Controllermodul PiXtend lassen sich mühelos Roboterarme ansteuern und deren Bewegung automatisieren.

  • Popcorn-Kino

    Mit Kodi 18.0 unterstützt LibreELEC 9.0 jetzt die von vielen Streaming-Diensten genutzte DRM-Verschlüsselung. Die Integration von Netflix, Amazon und Co. erfordert allerdings Handarbeit.

  • So nah und doch so fern

    Der RasPi kommt häufig als Server oder Steuerrechner für spezielle Zwecke zum Einsatz. Mit Anydesk erhalten Sie dazu eine Steuersoftware mit grafischer Oberfläche.