Startseite>I2C-Workshop, 18: Arduino als I2C-Slave
Aus Raspberry Pi Geek 04/2018

I2C-Workshop, 18: Arduino als I2C-Slave

© Golubovy, 123RF

Unter Kontrolle

Martin Mohr

Mithilfe einiger Zeilen Go-Code setzen Sie ein Arduino-Mega-Board als I2C-Slave ein und steuern es von einem RasPi aus als Busmaster.

Ein Arduino-Mega-Board versieht üblicherweise als Busmaster seinen Dienst. Es besteht aber auch die Möglichkeit, es als I2C-Slave einzusetzen, sofern Sie die passende Software und einen Raspberry Pi zur Hand haben. Der RasPi fungiert dabei grundsätzlich als Master, für die Beispiele kommt Go als Programmiersprache zum Einsatz. Beim Zugriff auf die Hardware hilft die Gobot-Bibliothek.

Vorarbeiten

Für diese Serie ist bereits seit über einem Jahr die Testumgebung aus Teil 10 im Einsatz. In dieser Folge erhält sie nun ein Hardware-Update auf den aktuellen Stand. Als Kern des neuen Aufbaus dient künftig ein Raspberry Pi 3 [1].

Damit hat das bisherige Gehäuse ebenfalls ausgedient. Der Wechsel auf ein Gehäuse der Firma Apra [2] stand an. Es ist erheblich stabiler als die meisten Raspberry-Gehäuse, hat keine kleinen Halterungen, die schon beim zweiten Öffnen abbrechen, und es verfügt zusätzlich über die Möglichkeit der Wandmontage. Alles in allem eine gute Wahl, wenn Sie länger am Gehäuse Freude haben möchten.

Da der verwendete RasPi nur für I2C-Experimente läuft, lohnt es sich, die dazu nötigen Anschlüsse der GPIO über eine vieradrige Leitung herauszuführen. Die Tabelle “Belegung” zeigt, um welche Pins es sich dabei handelt.

Belegung

GPIO-Pin

Anschluss

1

+3,3 Volt

3

SDA

5

SCL

9

0 Volt

Als Betriebssystem für das Test-Setup kommt Raspbian “Stretch” in der Desktop-Variante zum Zug (2017-11-29-raspbian-stretch.img). Die Variante mit grafischem Desktop ermöglicht, darauf Hardware-Programme zu betreiben, die eine grafische Oberfläche mitbringen.

Zur Installation laden Sie das Raspbian-Image von der Download-Seite herunter [3] und schreiben es nach dem Entpacken mit einem Tool Ihrer Wahl auf eine SD-Karte. Diese verwenden Sie, um den RasPi zu booten. Beim ersten Hochfahren vergrößert Raspbian das Dateisystem auf die maximal mögliche Größe des Mediums und startet anschließend neu. Nachdem der Mini-Rechner das zweite Mal gebootet hat, ist er einsatzbereit.

Als Erstes aktivieren Sie den SSH-Server und die I2C-Schnittstelle. Beides erledigen Sie mithilfe des Tools Raspi-config auf der Kommandozeile. Da Sie Root-Rechte benötigen, um die Konfiguration zu ändern, stellen Sie dem Kommando ein sudo voran. Sie sollten nun eine Ausgabe wie in Abbildung 1 sehen.

Abbildung 1: Um die Kommunikation mit dem RasPi zu vereinfachen, aktivieren Sie im entsprechenden Tool die Secure Shell auf dem Mini-Rechner.

Abbildung 1: Um die Kommunikation mit dem RasPi zu vereinfachen, aktivieren Sie im entsprechenden Tool die Secure Shell auf dem Mini-Rechner.

Wählen Sie den Punkt 5 Interfacing Options aus. Dort aktivieren Sie P2 SSH und P5 IC. Nachdem der SSH-Server läuft, erinnert Raspbian daran, das Passwort für den User pi zu ändern. Erledigen Sie das am besten sofort unter 1 Change User Password, dann haben Sie künftig Ruhe. Anschließend beenden Sie das Tool.

Bei der Installation von “Stretch” mit Desktop sind alle nötigen Tools für die Basis bereits mitinstalliert. Daher brauchen Sie nur noch Go sowie einige Bibliotheken nachzuziehen. Listing 1 fasst die dazu notwendigen Kommandos zusammen. In jedem Fall müssen Sie die Variable GOPATH setzen. Der einfachste Weg: Sie hängen dazu ein entsprechendes Export-Kommando am Ende der Datei .bashrc an (Zeile 5). Damit es greift, lesen Sie anschließend die Datei neu ein (Zeile 6).

Listing 1

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install golang
$ mkdir /home/pi/go/I2C_Slave -p
$ echo export GOPATH=/home/pi/go >> ~/.bashrc
$ source .bashrc
$ go get -d -u gobot.io/x/gobot/...

Damit sind die Vorbereitungen auf der Seite der Software abgeschlossen. Nun kommt die Hardware an die Reihe.

Hardware

Der Tabelle “Belegung” entnehmen Sie, welche GPIO-Anschlüsse Sie für künftige I2C-Experimente nach außen führen müssen. Um zu überprüfen, ob die Kommunikation reibungsfrei funktioniert, kam im Test der Helligkeitssensor BH1750 zum Einsatz. Eventuell kennen Sie den Baustein bereits aus Teil 4 dieser Reihe. Das Modul ist im Klartext beschriftet, Sie schließen es eins zu eins an den RasPi an.

Durch seine simple Funktionsweise eignet es sich gut für einen einfachen Test (Listing 2). Sobald das Kommando i2cdetect -y 1 eine Ausgabe liefert, können Sie davon ausgehen, dass der I2C-Bus fehlerfrei arbeitet. Funktionieren auch die Schreib- und Lese-Operationen, arbeiten Soft- und Hardware einwandfrei. Der vom Sensor konkret zurückgelieferte Wert hängt dabei von der Helligkeit im Raum ab.

Listing 2

$ i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- 23 -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
$ i2cset -y 1 0x23 0x10
$ i2cget -y 1 0x23 0x00
0x0a
DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland