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

12/2018
Coole Projekte

Diese Ausgabe als PDF kaufen

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

Stellenmarkt

Neuigkeiten

  • Bytes und Beats

    In Sonic Pi können Sie mit wenigen Codezeilen Klänge manipulieren, Beats zusammenstellen und ganze Songs komponieren.

  • Klein, aber fein

  • Trick or treat

    Das traditionelle RPG-Gruselkabinett glänzt dieses Jahr mit einer innovativen Umsetzung mittels Pneumatik und Elektropneumatik sowie ST-Programmierung.

  • Unter Kontrolle

    Traditionell stellen wir alljährlich ein selbst gebautes Halloween-Gespenst vor. Die pneumatischen und elektronischen Grundlagen erklärt dieser Artikel.

  • Go Pi Go!

    Der Bausatz GoPiGo3 liefert Bauteile und Software für ein kleines Roboterauto. Zusammen mit einem RasPi als Gehirn programmieren Sie den Roboter per Mausklick.

  • Handlicher Helfer

    Während die Folien der Präsentation durchlaufen, liefert ein kleiner Dokumentenserver auf Basis des GL-AR300M-ext zusätzliche Informationen aus.

  • Wiederverwertet

    Mithilfe eines einfachen Python-Programms recyceln Sie ein ausgedientes Smartphone als drahtlos angebundenes RasPi-Display.

  • Herzenssache

    Steigt beim Krimi der Herzschlag bedrohlich an? Mit einem Pulsmesser in Eigenbau ermitteln Sie einfach und kostengünstig, ob der Herzschlag noch in verträglichen Bereichen liegt.

  • Fernbedient

    Mit der Fernbedienung den RasPi steuern. In der Theorie möglich, in der Praxis oft beschwerlich. Die Libcec liefert praktische Tools zur Fehlersuche.

  • Musikwürfel

    Mit Musikcube machen Sie Ihre eigene Sammlung fit fürs Streamen. Der terminalbasierte Audioplayer lässt sich Fernsteuern und bietet eine App für Android-Smartphones.