Die Installation der Libmraa beschreibt die Webseite des Projekts [14]. Führen Sie alle Installationsschritte bis zur Überschrift Test aus. Sie sollten auch die optionalen Installationsschritte abarbeiten: Anderenfalls kommt es vor, dass das Board nicht mehr bootet. Vor einigen Kommandos in der Anleitung fehlt das sudo. Falls unerwartete Fehler auftreten, setzen Sie es davor.
Die Bibliothek Libmraa stellt Schnittstellen für C, Java und Python bereit. Die interne Arbeitsweise wie auch die Namen der Aufrufe (Listing 10) zeigen, dass sich der Rock Pi etwas anders verhält als Sie es vom RasPi kennen. Programme, die diese Bibliothek verwenden, müssen ausnahmslos mit Root-Rechten laufen. Der Aufruf für unser Testprogramm lautet sudo python3 GPIOtest.py.
Die Installation der Libmraa legt im Ordner /usr/local/share/mraa/examples/ eine Reihe von Beispielprogrammen ab. Das Verzeichnis bietet einen guten Einstiegspunkt, um sich mit der Bibliothek ein wenig intensiver zu beschäftigen.
Listing 10
GPIOtest.py
import mraa
import time
LED_1_PIN = 12
LED_2_PIN = 16
BUTTON_1_PIN = 18
BUTTON_2_PIN = 22
def button_1_pressed(channel):
print ("Button 1 pressed")
def button_2_pressed(channel):
print ("Button 2 pressed")
LED_1 = mraa.Gpio(LED_1_PIN)
LED_2 = mraa.Gpio(LED_2_PIN)
BUTTON_1 = mraa.Gpio(BUTTON_1_PIN)
BUTTON_2 = mraa.Gpio(BUTTON_2_PIN)
LED_1.dir(mraa.DIR_OUT)
LED_2.dir(mraa.DIR_OUT)
BUTTON_1.dir(mraa.DIR_IN)
BUTTON_2.dir(mraa.DIR_IN)
BUTTON_1.isr(mraa.EDGE_FALLING,button_1_pressed,BUTTON_1)
BUTTON_2.isr(mraa.EDGE_FALLING,button_2_pressed,BUTTON_2)
while True:
LED_1.write(1)
LED_2.write(0)
time.sleep(1)
LED_1.write(0)
LED_2.write(1)
time.sleep(1)
Rock Pi: I<+>2<+>C
Zum Aktivieren der I2C-Schnittstelle müssen Sie die Datei /boot/hw_intfc.conf anpassen. Hier nehmen Sie auch Änderungen an allen anderen Hardwareeinstellungen des Rock Pi vor. Ändern Sie die Parameter intfc:i2c2, intfc:i2c6 und intfc:i2c7 jeweils von off auf on und rebooten Sie das Board. Danach rufen Sie mit dem Kommando mraa-i2c list die Liste der I2C-Schnittstellen ab.
Sie haben jetzt zwei Möglichkeiten, auf die I2C-Geräte zuzugreifen: zum einen die altbekannten I2C-Tools und zum anderen die von der Libmraa bereitgestellten Programme. Setzen Sie die I2C-Tools ein, dann sprechen Sie die Schnittstelle auf den Pins 3 und 5 des Headers über die Nummer 7 an, bei der Libmraa über die Nummer 0.
Listing 11 zeigt die Ausgabe von i2cdetect. Das Auslesen des Temperatursensors erfolgt genauso wie beim Raspberry über die letzte Codezeile. Die Ausgabe der Libmraa-Tools zeigt Listing 12. Beide Varianten arbeiten sehr ähnlich, sodass es keine Rolle spielt, welche davon Sie verwenden.
Listing 11
I2c-detect (Rock Pi)
$ sudo i2cdetect -y 7 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- $ watch 'echo "obase=10; ibase=16; $(sudo i2cget -y 0x07:*0x48:*0x00 | cut -d 'x' -f2- | tr 'a-f' 'A-F')" | bc'
Listing 12
mraa-i2c detect
$ sudo mraa-i2c detect 0
00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Rock Pi: SPI
Die SPI-Schnittstelle des Rock Pi liegt auf denselben Pins wie beim Raspberry Pi. Da hier die Software-SPI zum Einsatz kommt, dürfen Sie die Hardware-SPI-Unterstützung in der Datei /boot/hw_intfc.conf nicht aktivieren. Als Beispielprogramm dient wieder der Java-Code aus Listing 3. Dieses Mal passen Sie die Zeile zum Initialisieren der Klasse wie folgt an:
MCP3008 mcp = new MCP3008(39,40,41,42);
Da wir beim SPI-Beispiel via Sysfs arbeiten, müssen wir auch die entsprechenden Nummern verwenden. Um das Programm zu bauen und zu starten, verwenden Sie wieder die Kommandos javac MCP3008.java und sudo java MCP3008.
Rock Pi: M.2-SSD
Der Rock Pi 4 verfügt über eine M.2-Schnittstelle, an die sich SSDs anschließen lassen. Dabei handelt es sich in dieser Rechnerklasse wirklich um ein Alleinstellungsmerkmal. Es gibt einen Adapter [15], der es ermöglicht, die SSD auf das Rock-Pi-Board zu montieren. Ohne ihn fällt der Aufbau etwas wackelig aus.
Die FAQ [16] enthalten eine Liste von kompatiblen NVMe-SSDs. Der Autor nutzte eine Kingston NV1 mit 500 GByte Kapazität [17], die auf keiner der Listen zu finden war. Die Tests verliefen dennoch ohne Probleme. Tendenziell sollten Sie unabhängig von den Angaben aus den FAQ versuchen, ob die SSD Ihrer Wahl funktioniert.






