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/2019
TV & Multimedia

Diese Ausgabe als PDF kaufen

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

Stellenmarkt

Neuigkeiten

  • Finger weg

    Ein Temperatursensor verrät, ob Sie einen Gegenstand gefahrlos berühren dürfen. Beim Messen brauchen Sie dabei noch nicht einmal Kontakt zum Objekt.

  • Aus einer Hand

    Um einen Mikrocontroller zu programmieren, genügt ein Raspberry Pi. Wir zeigen, was Sie dazu noch benötigen.

  • Im Gleichtakt

    Synchronisierte Live-Loops und selbst erstellte Funktionen helfen dabei, Sonic Pi wie ein Live-Instrument zu spielen.

  • Mach mal

    Das Ftduino-Modul schlägt die Brücke zu Fischertechnik und ermöglicht es unter anderem, einen Drei-Achsen-Roboter anzusteuern.

  • Eleganter Diener

    Jeden Morgen dieselben Handgriffe, um zu sehen, ob die S-Bahn fährt und wie das Wetter wird? Ein cleverer Infoscreen auf RasPi-Basis automatisiert den Vorgang.

  • Bienenflüsterer

    Bienenzüchter, die ihre Völker besser kennenlernen möchten, müssen die fleißigen Insekten nicht pausenlos stören. Mit einem Raspberry Pi und verschiedenen Sensoren überwachen sie Temperatur, Luftfeuchtigkeit und bald auch das Gewicht des Bienenstocks.

  • Beerige Musik

    Für echten Hi-Fi-Sound braucht es mehr als einen kleinen Bluetooth-Brüllwürfel. Mit Volumio und einem Raspberry Pi rüsten Sie Ihre klassische Hi-Fi-Anlage mit smarten Funktionen auf.

  • Ton ab!

    Auf den ersten Blick erscheint der RasPi zu schwachbrüstig für den Betrieb leistungshungriger DAW-Software. Doch der Schein trügt.

  • Himbeer-TV

    Der DVB TV µHAT rüstet den Raspberry Pi mit einem DVB-T/T2-Tuner auf. Die deutsche TV-Landschaft schränkt dessen Möglichkeiten allerdings ein.

  • Git à la RasPi

    Mit wenigen Handgriffen zum Git-Hoster: Die dezentrale Arbeitsweise von Git erleichtert in Kombination mit der Netzwerkfähigkeit des RasPi das Verwalten von Quellcode.