Bei Letzterem handelt es sich um eine Sammlung von in C++ geschriebenen Treibern, die den Zugriff auf die verschiedenen Sensoren und Komponenten des Matrix Voice erlauben. Dazu gehören auch Werkzeuge, um den FPGA und den ESP32-Controller zu programmieren. Matrix HAL dient quasi als Fundament für Matrix OS und die Zwischenschicht Matrix Core.
Der Lieferumfang enthält mehrere einfache Beispielprogramme. Manche demonstrieren nur den Zugriff auf eine einzelne Komponente oder einen bestimmten Sensor. Andere gehen einen Schritt weiter und kombinieren verschiedene Daten, so zum Beispiel das Programm ipaddress_demo (Listing 1). Es liest die IP-Adressen aller Netzwerkschnittstellen in alphabetischer Reihenfolge aus, schneidet von der letzten die führenden drei Stellen ab und kodiert die verbliebene Zahl zur Darstellung über die 18 LEDs (Abbildung 2).
Listing 1
$ cd matrix-creator-hal/build/demos $ ./ipaddress_demo INFO: [/dev/matrixio_regmap] was opened lo IP Address 127.0.0.1 wlan0 IP Address 192.168.20.49 show last integer: 49

Abbildung 2: Die LED-kodierte Anzeige der letzten Stelle der IP-Adresse. Die gelben LEDs dienen als “Trenner” zwischen Hundertern, Zehnern und Einern.
Geübten C++-Programmierern eröffnet Matrix HAL die Möglichkeit zum direkten Zugriff von eigenen Anwendungen aus. Greifen Sie lieber auf Python, Java, Ruby oder andere Sprachen zurück, sollten Sie sich Matrix Core genauer ansehen, eine Abstraktionsschicht für Matrix HAL. Als Kommunikationsschicht dienen ZeroMQ [9] und Protobuf [10]. Primär soll Matrix Core als Vermittler zwischen Matrix HAL und Matrix OS dienen. Es unterstützt dabei den Einsatz von über 40 Programmiersprachen und den Zugriff auf das Matrix Voice und verwandte Geräte.
Spätestens jetzt kommt die Frage auf, auf welchem Weg die Entwicklung der gewünschten Anwendung erfolgen soll. Im Fall von Android Things gibt es nicht wirklich eine Wahl: Das Schreiben und Kompilieren des Codes findet auf dem PC statt, als Entwicklungsumgebung dient Android Studio, der Transfer auf den ARM-Zwerg erfolgt dann über ADB.
Mehr Optionen bieten Linux und Raspbian: Statt eines PCs kann auch der ARM-Rechner selbst als Entwicklungsplattform dienen, das bietet für kleinere Projekte durchaus Vorteile: So umgehen Sie die Schwierigkeiten des Crosscompilings, also das Erzeugen von ausführbaren Dateien für ARM auf einem x86-kompatiblen Rechner.
Erster Start
Die Inbetriebnahme des Matrix Voice gestaltet sich denkbar einfach. Im ausgeschalteten Zustand stecken Sie das Modul auf die 40-Pin-GPIO des RasPi. Die Erweiterungsplatine benötigt keine separate Spannungsversorgung, der vorhandene Micro-USB-Anschluss dient zur Stromversorgung beim autonomen Betrieb.
Danach bestücken Sie den Mini-Rechner mit einer Micro-SD-Karte, die entweder Raspbian oder Android Things enthält, und stellen die Spannungsversorgung her. Monitor, Tastatur und eventuell eine Maus benötigen Sie nicht unbedingt, sie erweisen sich aber als praktisch.
Im Folgenden konzentrieren wir uns auf das Zusammenspiel von Raspbian und Matrix Voice. Das Betriebssystem weiß mit den zusätzlichen Sensoren und Schnittstellen zunächst nichts anzufangen – hier kommt das Matrix-OS/HAL/Core-Gespann ins Spiel. Für die Installation der notwendigen Software binden Sie das entsprechende Repository http://apt.matrix.one/raspbian ein.
Nach Aktualisierung der Paketmanagerinformationen stehen die verschiedenen Matrix-Pakete [11] zur Verfügung. Die meistgenutzten heißen matrixio-malos, matrixio-creator-init und matrixio-kernel-modules: das Matrix OS, Werkzeuge für den Zugriff auf den FPGA und ESP32-Chip sowie die notwendigen Treiber für den Kernel.
Alternativ laden Sie aus dem Github-Verzeichnis von Matrix-Creator-Quickstart die Datei install.sh auf den Raspberry Pi und führen sie aus [12]. Dabei handelt es sich um eine erweiterte Installation, die eher auf den Matrix Creator mit seinen Schnittstellen und Möglichkeiten abzielt. In den Labortests mit dem Matrix Voice bereitete die zusätzliche und unnötig installierte Software aber Schwierigkeiten.
So oder so steht die Sprachsteuerungsplattform danach zum Einsatz bereit. Sie könnten jetzt direkt eine der vielen dokumentierten Anwendungen ausführen oder ein eigenes Programm erstellen. Die Erfahrung lehrt aber, dass sich vorab ein paar Basistests lohnen, bevor es richtig zur Sache geht. Die oben genannten Beispielprogramme für Matrix HAL leisten hier hervorragende Dienste. Listing 2 zeigt die dafür notwendigen Schritte: Das Programm everloop_demo lässt die LEDs dynamisch in verschiedenen Farben aufleuchten.
Listing 2
$ git clone --recursive https://github.com/matrix-io/matrix-creator-hal.git [...] $ cd matrix-creator-hal $ mkdir build $ cd build $ cmake .. [...] $ make && sudo make install [...] $ cd demos $ ./everloop_demo
Konkurrenz für Alexa?
Zu den wohl populärsten Projekten für Matrix Voice zählen der Nachbau des Amazon Echo (Dot) oder auch des Google Home Assistant. Um es vorwegzunehmen: Dank der hervorragenden Dokumentation gelingt eine Imitation von Alexa [13] oder Ok Google [14] mit dem Raspberry Pi, Raspbian und Matrix Voice spielend leicht.





