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

04/2018
Programmieren

Diese Ausgabe als PDF kaufen

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

Stellenmarkt

Neuigkeiten

  • Neues auf der Heft-DVD

    Nur mit dem optimalen System und der richtigen Software nutzen Sie das volle Potenzial eines Mini-PC. Mit der Heft-DVD erhalten Sie nicht nur die neusten Distributionen für den RasPi und Co., sondern gleichzeitig auch die passenden Programme zu den Artikeln.

  • Unter Kontrolle

  • Alles auf Go

    Die von Google aus der Taufe gehobene Sprache Go spielt auf dem RasPi ihre Stärken aus. Damit schreiben Sie sehr einfach Programme, die auf I/O-Ereignisse reagieren.

  • Der Reihe nach

    Das PiXtend erweitert den RasPi um eine Steuereinheit. So sorgen Sie auf einer kleinen Bandstraße für Ordnung.

  • Flottes Trio

    Mehr Schnittstellen für den RasPi klingt gut. Aber nur bei den passenden Szenarien lohnt sich die Investition in ein PiXtend V2.

  • Kommunikativ

    Offene Plattformen wie Arduino und Adafruit senken die Hürden für kreative IoT-Projekte erheblich. Das Adafruit-IO-API macht es dabei besonders einfach, netzwerkfähige Sensoren über das Internet zu steuern.

  • Lesefreudig

    Mithilfe eines preiswerten RFID-Card-Readers und der Bibliothek WiringPi2 rüsten Sie einen Raspberry Pi 3 schnell und einfach zum vielseitigen RFID-Lesegerät auf.

  • Hört, hört!

    Der Pi Zero spricht zwar von Haus aus Bluetooth. Das Protokoll aber zum Übermitteln von Musik zu nutzen erweist sich als echte Herausforderung.

  • Würfelspiele

    Über die GPIO eine LED aufleuchten zu lassen gehört zu den ersten Schritten jedes RasPi-Bastlers. Ein animiertes Gesamtkunstwerk aus 125 Dioden zu verdrahten und anzusteuern erfordert neben Lötkunst auch ausgeklügelten Echtzeit-Maschinencode.

  • Blog-Spuk

    Wer ein Blog starten möchte, greift in der Regel zu Wordpress. Mit Ghost macht jetzt ein Neuling dem bisherigen Platzhirsch ernsthaft Konkurrenz.