I<+>2<+>C-Workshop, 18: Arduino als I<+>2<+>C-Slave

© Golubovy, 123RF

Unter Kontrolle

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.

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 PDF

Umfang: 5 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

Aktuelle Ausgabe

10/2018
Weltweiter Empfang

Diese Ausgabe als PDF kaufen

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

Stellenmarkt

Neuigkeiten

  • Physiklabor

    Der Java-Dialekt Processing zielt auf interaktive Animationen ab und eignet sich auch für Programmiernovizen.

  • Abstand halten

    Der VL53L0X misst präzise Entfernungen bis zu zwei Metern. Das macht ihn zum passenden Kandidaten für RasPi-Projekte.

  • Tux-Funk

    Der SDR-Empfänger RSP2pro von SDRplay bringt Amateurfunk auf den Raspberry Pi.

  • Himbeersieb

    Die aus Österreich stammende Upribox auf Basis des Raspberry Pi schützt wirkungsvoll vor Gefahren aus dem Internet. Jetzt ist das System in der zweiten Version erschienen.

  • Unter Kontrolle

    Das programmierbare Steuermodul Controllino bietet mit seinen zahlreichen Ein- und Ausgängen vielfältige Möglichkeiten.

  • Dehnübungen

    Ein RasPi eignet sich bestens zum Steuern eines Fischertechnik-Roboters. Damit dabei kein Chaos entsteht, gilt es, die Steuerung genau zu programmieren.

  • Klangmaschine

    Der RasPi bringt genügend Performance mit, um als kleine DAW zu dienen. Mit Waveform 9 haben Sie die passende Software zur Hand.

  • Fremdgehen

    Nicht jedes Programm gibt es auch für die ARM-Architektur. Der kommerzielle Emulator Exagear Desktop fungiert als Übersetzer zwischen der ARM- und x86-Welt.

  • Ausfallsicher

    Eine selbst gebaute USV für den RasPi verschafft Ihnen die entscheidenden Sekunden, um bei unerwarteten Stromausfällen einem Datenverlust vorzubeugen.

  • Am laufenden Band

    Die Kombination aus einem Fischertechnik-Bausatz und dem Controllino-Modul bietet eine ideale Basis, um ein funktionierendes Industriemodell zu gestalten.