Arduino, Raspberry Pi und Node-RED IoT-System aus Standardkomponenten selbst bauen

Anwendungen für das IoT sind recht komplex, denn sie beinhalten Sensorik, Mikrocontroller, Funkschnittstellen und ein Gateway für den Datentransport in eine Cloud. Doch auch mit Standardkomponenten kann jeder ein IoT-System mit Raspberry Pi, Arduino und Node-RED selber aufbauen.

Um dem Entwickler den Aufbau eigener IoT-Systeme zu erleichtern, haben wir in vorangegangenen Artikeln verschiedene IoT-Entwicklungssysteme bekannter Hersteller untersucht, welche die verschiedenen Disziplinen mehr oder weniger gut umsetzen.

Sicher darf man nicht erwarten, dass ein derartiges System genau die gewünschte Applikation mit möglichst wenig zusätzlichem (Programmier-)Aufwand bietet, sondern eher beispielhaft durch die IoT-Signalverarbeitungskette führt, sodass nach wie vor an bestimmten Stellen – etwa der Sensorik oder dem Cloud-Einsatz – detaillierte Fachkenntnisse und Erfahrungen notwendig sind. Je nach System kann es dabei recht herstellerspezifisch werden, d. h., von der eigentlich zu bewältigenden Problematik begibt man sich unfreiwillig auf »Baustellen«, welche die Applikation durch das zwangsläufige »Herumschleppen« von eigentlich unnötiger Hard- und Software unnötig verkomplizieren und somit unübersichtlich und schlecht wartbar machen.

Deshalb ist der Aufbau einer IoT-Signalverbeitungskette − vom Sensor bis in die Cloud − mit bereits bewährten und gut dokumentierten Komponenten und Verfahren eine flexible Vorgehensweise, die in diesem Artikel mit Arduino, Raspberry Pi und Node-RED vorgestellt wird.

Raspberry Pi Goes Industrial 

Auch wenn Arduino und Raspberry Pi ursprünglich aus der Bastlerecke kommen, sind sie mittlerweile in vielen industriellen Anwendungen zu finden, was nicht immer unmittelbar zu erkennen ist. Den Raspberry Pi gibt es beispielsweise von Herstellern wie Kunbus (Revolution Pi), Hilscher (netPI) oder Janz Tec (emPC-A/RPI3) in industrietauglichen und CE-spezifizierten Ausführungen mit zusätzlichen Schnittstellen und Funktionen. Gleichwohl ist die Basis immer noch ein Raspberry Pi, für den eine Vielzahl von Applikationen existiert und der sich relativ einfach programmieren und mit Hardware erweitern lässt.

In der IoT-Applikation wird ein emPC-A/RPI3 von Janztec eingesetzt, der als Gateway zwischen Sensorknoten mit CAN-Bus und dem Internet fungiert, das über den Ethernet-Anschluss erreicht wird (Bild 1). Der CAN-Bus-Sensorknoten wird mit einem Arduino Nano zusammen mit den dort angeschlossenen analogen und/oder digitalen Sensoren sowie der entsprechenden CAN-Hardware realisiert. Der emPC-A/RPI3 wird in einem individuellen Plastikgehäuse mit zusätzlicher Halterung geliefert, das sich leicht ohne Werkzeug öffnen lässt und die emPC-Platine mit dem aufgesetzten Raspberry Pi freigibt (Bild 2).

Die microSD-Karte verschwindet komplett im Gehäuse. Als DC-Spannungsversorgung sind 9 V bis 32 V möglich, die – wie die Schnittstellensignale – an einem 24-poligen Multi-Connector angeschlossen wird. Der Ethernet- und der HDMI-Anschluss sowie die USB-Buchsen lassen sich wie gewohnt verwenden, während die GPIO-Signale inklusive SPI und I²C für die spezielle Peripherie zuständig sind, die auf einer beidseitig bestückten Platine untergebracht ist.

Der standardmäßige serielle Port (RXD, TXD) des Raspberry Pi wird auf den neunpoligen Connector als Console-Port geführt, während am Multi-Connector die Anschlüsse für eine RS-232-Schnittstelle mit Übergabeleitungen (RXD, TXD, RTS, CTS) vorhanden sind, die sich per Jumper in eine RS-485-Schnittselle umschalten lässt. Der hierfür notwendige Busabschluss (120 ) lässt sich per Jumper ein- oder ausschalten. Hierfür wird ein UART vom Typ SC16IS740 von NXP nebst entsprechendem Multiprotocol-Transceicer (SP330 von Exar) eingesetzt.

Der UART wird, wie der CAN-Controller (MCP2515 von Microchip), über eine SPI-Schnittstelle des Raspberry Pi angesteuert. Das CAN-Interface ist gegenüber den Ports des Raspberry Pi mithilfe eines Halbleiterrelais (VN330P von STMicroelectronics) optoisoliert aufgebaut. Ebenfalls optoisoliert sind die vier digitalen Ausgänge und die vier digitalen Eingänge, die bis zu 24 V mit 0,5 A vertragen. Hierfür werden zwei Vierfach-Fotokoppler (TLP281 von Toshiba) eingesetzt. Zur Signalisierung von Statusmeldungen sind zwei Leuchtdioden (User LEDs) vorhanden, die direkt vom GPIO-Port gesteuert werden.

Von Hause aus ist Raspbian Jessie Lite mit der Kernelversion 3.18.16-v7+ auf dem emPC-A/RPI3 installiert, was demnach eine relativ alte Version ist. Wünschenswert wäre hier ein aktuelleres Betriebssystem und eine grafische Benutzeroberfläche, sodass auch die Möglichkeit bestünde, einen Node-RED-Flow (s. u.) direkt auf dem Raspberry Pi zu erstellen. Dadurch würde er mit derselben Software programmiert wie später die Cloud-Anwendung, was praktischerweise zu einer einheitlichen Programmierung führen würde.

Ein Update von Raspbian ist prinzipiell kein Problem, wobei aber darauf zu achten ist, ob mit einer neueren Version auch noch die notwendigen CAN-Bus-Treiber funktionieren. Bei der aktuellen Raspbian-Version funktioniert bereits die Installation des entsprechenden Treiberpaketes nicht. Verwendet wurde die Kernelversion 4.1.18-v7+ von Raspbian, womit sich ein stabiler Betrieb des Systems ergab. Vorsicht ist also bei Updates geboten, wenn automatisch ein Kernel-Update stattfindet. Janztec stellt ein Softwarepaket für die Peripherie zur Verfügung. Der Treiber für den CAN-Bus heißt Socket CAN und bietet mit dem Tool canutils die nützliche Möglichkeit, den CAN-Bus direkt über die Konsole ansprechen zu können. Das Softwarepaket kann wie folgt installiert werden:

$ sudo bash
$ cd /tmp
$ wget https://raw.githubusercontent.com/janztec/empc-arpi-linux-drivers/master/install.sh -O
$ install.sh
$ bash install.sh