Zum Hauptinhalt springen

RevPi Flat S

Produktbeschreibung

Der RevPi Flat S ist ein robuster, nicht-modularer 24-V-Industrie-PC für IIoT- und Automatisierungsprojekte auf Basis des Raspberry Pi Compute Module 4S. Aufgrund seiner flachen Bauform ist der RevPi Flat S für den Einbau in Unterverteilerschränken nach DIN EN 18012 geeignet.

Aufbau

revpi-flat-s-aufbau

PositionKomponenteVerwendung
16 × Status-LEDLEDs
2TasterFrei konfigurierbarer Taster
32 × ArretierklammerGerät auf einer Hutschiene montieren
4Micro-USBNur für Variante RevPi Flat S:
Image sichern und neu installieren
54 × RJ45 EthernetEthernet-Schnittstellen (RJ45), Netzwerkverbindung herstellen
62 × USB AUSB-Schnittstellen
7Digitaler Ausgang (Relais-Kontakt)Digitaler Ausgang (Relais-Kontakt)
8POWER
(2-poliger Stecker)
Spannungsversorgung anschließenn
9Analoger Eingang /
Analoger Ausgang

(5-poliger Stecker)
Analoge Ein- und Ausgänge
10RS485-0
(3-poliger Stecker)
Serielle Geräte (RS485)
11RS485-1
(RJ14-Anschluss)
Serielle Geräte (RS485)
12RP-SMA-BuchseWLAN und BT
13LüftungsschlitzeGerät auf einer Hutschiene montieren
Kompatible RevPi Images für RevPi Flat S
  • RevPi Bookworm Image
  • RevPi Bullseye Image

Siehe RevPi Images.

Varianten

Artikelnr.RAMeMMCMicro-USB
RevPi Flat 1003711 GB32 GBNein
RevPi Flat S 1003301 GB8 GBJa

Verfügbare Varianten siehe Revolution Pi Shop.

Der RevPi Flat wurde als manipulationssicheres Gerät konzipiert. Deshalb ist es nicht vorgesehen, dass Du das Image des Geräts flashen kannst (im Gegensatz zur Produktvariante RevPi Flat S).

Virtual Devices

Die Virtual Devices sind bei der Auslieferung mit dem RevPi Image als Komponenten in PiCtory enthalten:

Lieferumfang

Im Lieferumfang enthalten sind

  • RevPi Flat S bzw. Rev Pi Flat (nicht-modulares Basismodul)
  • 2-poliger Stecker POWER
  • 5-poliger Stecker ANALOG
  • 3-poliger Stecker RS-485-0
  • 2-poliger Stecker für Relais-Kontakt
  • Beiblatt

Montage und Anschluss

Der RevPi wurde für den Einsatz in einem Schaltschrank entwickelt. Beachte die Vorgaben für den bestimmungsgemäßen Gebrauch und alle Sicherheitshinweise.

Führe die Montage und den Anschluss in folgender Reihenfolge aus:

  1. Montiere den RevPi auf einer Hutschiene.

  2. Schließe alle sonstigen Geräte wie Sensoren und Aktoren an. Die Schnittstellen, die Dir dafür zur Verfügung stehen, findest Du im Abschnitt Aufbau.

  3. Schließe zuletzt die Spannungsversorgung an.

Spannungsversorgung anschließen

warnung

Lebensgefahr durch elektrischen Schlag

Bei Arbeiten an Geräten im Schaltschrank unter Beteiligung von 230-V-Netzspannung besteht tödliche Stromschlaggefahr.

▷ Arbeiten im Schaltschrank nur von Elektrofachkräften durchführen lassen.

▷ Vor allen Arbeiten im Schaltschrank die Spannungsversorgung ordnungsgemäß abschalten.

ACHTUNG

Beschädigung des Geräts durch unzulässige Spannungsversorgung

▷ Maximale Spannungsversorgung von 28,8 V DC beachten.

▷ Nur den mitgelieferten Stecker und ein geeignetes Netzteil verwenden.

▷ Beim Anschluss auf korrekte Polung achten.

▷ Eine stabile Spannungsversorgung sicherstellen.

ACHTUNG

Beschädigung des Geräts durch Montage unter Spannungsversorgung

Während das RevPi Gerät mit einer Spannungsquelle verbunden ist, dürfen keine anderen Geräte angeschlossen oder getrennt werden, da dies zu Schäden an den Geräten führen kann.

▷ Spannungsversorgung erst anschließen, wenn alle anderen Geräte korrekt verbunden sind.

▷ Spannungsversorgung abschalten, bevor ein Gerät vom System getrennt wird.

ACHTUNG

Beschädigung der Gerätesoftware durch Trennung von der Spannungsversorgung

Wenn das Gerät im Betrieb von der Spannungsversorgung getrennt wird, kann es zur Zerstörung des File‑Systems des eMMC-Speichers kommen. Das Gerät kann dann nicht mehr gebootet werden.

▷ Gerät ordnungsgemäß herunterfahren, bevor es von der Spannungsversorgung getrennt wird.

ACHTUNG

Beschädigung des Geräts durch unterschiedliche Erdungen

▷ Alle Anschlüsse auf den gleichen System-Ground beziehen.

▷ Externe Spannungseingängen oder -ausgängen mit unterschiedlichen Erdungen extern verbinden.

Für die Spannungsversorgung ist eine Verkabelung über den POWER-Stecker notwendig.

Du benötigst außerdem:

✓ Ein Netzteil (min. 20 W, z. B. Hutschienen-Schaltnetzteil, Artikelnr. 200003)

✓ Ausreichend Kabel (Querschnitt 0,35 … max. 2,5 mm²)

✓ Abisolier- und Crimpzange

✓ Bei Verwendung von Litzen die zum Kabel passende Aderendhülsen

✓ Einen kleinen Schlitzschraubenzieher

▷ Trenne alle ggf. angeschlossenen Geräte von ihrer jeweiligen Spannungsversorgung.

▷ Schließe eine Einspeisung für die Spannungsversorgung zwischen 10,7 … 27,8 V an den mit 24 V markierten Pin des POWER-Steckers an.

▷ Schließe die 0-V-Einspeisung an den mit GND markierten Pin an.

Zugriff auf das Gerät

Der Zugriff auf den RevPi erfolgt in zwei Schritten:

  1. Netzwerkverbindung herstellen.

  2. Login am Gerät.

Installiere alle verfügbaren Updates, sobald der RevPi mit dem Internet verbunden ist, damit das System bei sicherheitsrelevanten Features immer auf dem aktuellen Stand ist.

Siehe auch:

Konfiguration

Basiskonfiguration

Ab dem RevPi Bookworm Image (10/2024) erfolgt die Basiskonfiguration der RevPi Geräte über die Web-Applikation Cockpit.

Bis zum RevPi Bullseye Image (04/2024) erfolgt die Basiskonfiguration der RevPi Geräte über die Web-Applikation RevPi Status.

Basismodul in PiCtory konfigurieren

▷ Starte PiCtory.

▷ RevPi Basismodul aus dem Device Catalog wählen und per Drag-and-Drop auf den leeren Slot mit der Positionsnummer 0 ziehen.

     ❯ Im Value Editor erscheinen die konfigurierbaren Werte.

▷ Mit File > Safe as Start-Config. die Konfiguration als Startkonfiguration speichern.

❯❯ Die Startkonfiguration wird direkt nach jedem Boot-Vorgang aufgerufen.

ValueBedeutung
INP AInEingangswert des analogen Eingangs
INP AIn_StatusStatus des analogen Eingangs
INP_AOut_StatusStatus des analogen Ausgangs
INP Core_TemperatureCPU-Temperatur
INP Core_FrequencyCPU-Frequenz
INP Top_ButtonEingangswert des Tasters
OUT RevPiLEDStatusbyte für LEDs
OUT AOutAusgangswert für analogen Ausgang
OUT DOutAusgangswert für digitalen Ausgang
MEM AInModeModus für den analogen Eingang:

Serielle Geräte (RS485)

Der RevPi Flat verfügt über zwei RS485-Schnittstellen. Dadurch kannst Du serielle Protokolle wie Modbus verwenden und Geräte wie Smart-Meter oder Solarwechselrichter in Dein Revolution Pi System einbinden.

Die Schnittstellen sind mit RS485-0 und RS485-1 bezeichnet. Beide Schnittstellen sind untereinander und jeweils vom RevPi galvanisch getrennt.

Unter Linux sind die Schnittstellen ansprechbar mit:

  • ttyAMA0 (RS485-0)
  • ttyS0 (RS485-1)

RS485-0

RS485-0 liegt auf einer 3-poligen Klemme. Die Datenleitungen sind mit P (positive) und N (negative) bezeichnet. Bei anderen Geräten werden diese Leitungen auch häufig D+ und D- oder A und B bezeichnet.

revpi-flat-rs485-pinout

Für die eigentliche Datenübertragung werden nur die Leitungen N und P benötigt. Verwende bei größeren Leitungslängen oder Baudraten ein verdrilltes Pärchen.

revpi-flat-rs485-0-pinout

RS485-1

Für RS485-1 steht eine RJ11-Buchse zur Verfügung.

revpi-flat-rs485-1-pinout

PinBeschaltung
1
2GND
3Negativ
4Positiv
5GRD
6

Bezugspotential

Falls ein Bezugspotenzial notwendig sein sollte, kannst Du die elektrische Schaltungsmasse “GND” vom jeweiligen RS485-Bus dazu verwenden. Da die beiden RS485-Systeme über eine vollständige galvanische Trennung untereinander und zur restlichen RevPi Flat Schaltung verfügen, sind diese “GND”-Anschlüsse auch untereinander sowie vom RevPi Flat GND‑Anschluss galvanisch getrennt.

Schirmung

Leitungen mit einer Länge über 30 Metern oder Leitungen, die das Gebäude verlassen, sollten geschirmt sein. Um die EMV-Eigenschaften des Schirmes noch zu verbessern, kannst Du bei Bedarf den Schirm mit der Potenzialausgleichsschiene des Verteilerkastens verbinden. Eine solche Verbindung lässt sich einfach mit einer Kontakt-Rollfeder herstellen.

Bitraten

Von Linux aus werden die Schnittstellen über die Character Devices “/dev/ttyAMA0” und “/dev/ttyS0” angesprochen. Du kannst Bitraten von 50 bis 3.000.000 für “/dev/ttyAMA0” und von 1.200 bis 4.000.000 für “/dev/ttyS0” konfigurieren. Allerdings kann es bei mehr als 230.400 Bit zu gelegentlichen Empfangsfehlern kommen. Das liegt daran, dass der UART des Raspberry Pi, an den die Schnittstelle angeschlossen ist, nur eine 16-Byte-kleine FIFO hat und kein DMA unterstützt. Je höher die Bitrate, desto häufiger passiert es, dass die FIFO nicht schnell genug ausgelesen wird und empfangene Daten verloren gehen. Beispielsweise kommt es bei 460.800 Bit zu 1-2 Fehlern pro empfangenen 50 MByte, bei 921.600 Bit zu rund 10 Fehlern. Wenn Dein RevPi Flat vorwiegend Daten sendet und nur selten empfängt, kannst Du bedenkenlos auch höhere Bitraten verwenden, ansonsten empfehlen wir Dir aber, nicht mehr als 230.400 Baud einzustellen.

Terminierung

Die Schnittstelle verfügt über einen integrierten Abschlusswiderstand mit 120 Ohm. Diese Terminierung ist nach dem Booten ausgeschaltet. Das ist am sichersten, da keine Kommunikation möglich ist, wenn mehrere Geräte am RS485-Bus ihre Terminierung einschalten. Über kurze Kabel ist die Kommunikation auch ohne Terminierung möglich. Für längere Distanzen solltest Du sie einschalten, falls sich Dein RevPi Flat an einem Ende der Busleitung befindet.

Das Ein- und Ausschalten der Terminierung geschieht folgendermaßen:

▷ Öffne das Character Device /dev/ttyAMA0 bzw. /dev/ttyS0 mit dem Befehl
open()

▷ Lass die aktuelle RS485-Konfiguration mit dem Befehl auslesen:
TIOCGRS485 ioctl()

▷ Setze oder lösche das Flag SER_RS485_TERMINATE_BUS in der struct serial_rs485

▷ Aktiviere die geänderte RS485-Konfiguration mit einem Befehl
TIOCSRS485 ioctl()

▷ Ggf. sende oder empfange die Daten mit read() oder write().

▷ Schließe das Character Device mit dem Befehl
close()

Diese Schritte musst Du nach jedem Booten wiederholen, falls die Terminierung eingeschaltet sein soll.

Ein C-Listing mit diesen Schritten ist vorbereitet und kann direkt kompiliert werden:

/*

* Copyright (c) 2020 KUNBUS GmbH

*

* Permission is hereby granted, free of charge, to any person obtaining a

* copy of this software and associated documentation files (the "Software"),

* to deal in the Software without restriction, including without limitation

* the rights to use, copy, modify, merge, publish, distribute, sublicense,

* and/or sell copies of the Software, and to permit persons to whom the

* Software is furnished to do so.

*

* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL

* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR

* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,

* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR

* OTHER DEALINGS IN THE SOFTWARE.

*/


```#include <errno.h>```

```#include <fcntl.h>```

```#include <stdio.h>```

```#include <string.h>```

```#include <unistd.h>```

```#include <linux/serial.h>```

```#include <sys/ioctl.h>```

```#define RCV_LEN 3```

int main(int argc, char **argv)

{

struct serial_rs485 rs485conf;

int fd, ret;

char buf[RCV_LEN];


```if (argc != 2) {```

```printf("Usage: %s <device>\n", argv[0]);```

```return 0;```

```}```

fd = open(argv[1], O_RDWR);

if (fd < 0) {

printf("Cannot open: %s\n", strerror(errno));

return errno;

}


```ret = ioctl(fd, TIOCGRS485, &rs485conf);```

```if (ret < 0) {```

```printf("Cannot get rs485 config: %s\n", strerror(errno));```

```return errno;```

```}```

rs485conf.flags ^= SER_RS485_TERMINATE_BUS;


```ret = ioctl(fd, TIOCSRS485, &rs485conf);```

```if (ret < 0) {```

```printf("Cannot set rs485 config: %s\n", strerror(errno));```

```return errno;```

```}```

```ret = write(fd, "abc", 3);```

```ret |= read(fd, buf, RCV_LEN);```

```if (ret < 0) {```

```printf("send or receive error: %s\n", strerror(errno));```

```return errno;```

```}```

ret = close(fd);

if (ret < 0) {

printf("Cannot close: %s\n", strerror(errno));

return errno;

}

}

Standardmäßig wird nach dem Booten /dev/ttyAMA0 als Konsolenterminal mit den folgenden Konfigurationen verwendet: pi@RevPi0000:~ $ sudo stty -F /dev/ttyAMA0

speed 115200 baud; line = 0;

lnext = <undef>; min = 1; time = 0;

-brkint -icrnl ixoff -imaxbel iutf8

-icanon -iexten -echo

Siehe auch:

Ethernet-Schnittstellen (RJ45)

Der RevPi verfügt über zwei 10/100-Ethernet-Schnittstellen mit einer bzw. drei RJ45-Buchsen für zwei bzw. vier unabhängige MAC-Adressen. Bei aktiver Autonegotiation unterstützen sie Halb- und Vollduplex.

Je Schnittstelle steht eine Übertragungsrate von 100 Mbit/s zur Verfügung. Alle Ethernet-Schnittstellen sind mit dem internen USB-Hub verbunden. Da sich USB-Schnittstellen und Ethernet-Schnittstellen eine USB-Bandbreite teilen, kann sich die Übertragungsrate verringern, wenn zusätzliche USB-Geräte angeschlossen sind.

revpi-flat-usb-schema

LAN 0

Die MAC-Adresse für LAN 0 ist auf der Vorderseite des Gehäuses aufgedruckt. Unter Linux lässt sich die Schnittstelle ansprechen mit:

  • eth0

LAN 1 (Switch) bzw. LAN 1 … LAN 3

Über die drei RJ45-Buchsen für LAN1 können bis zu drei weitere Geräte mit einem Netzwerk verbunden werden. Sie sind mit dem internen USB-Hub über einen 1:3-Switch verbunden. Die MAC-Adresse für LAN 1 ist auf der Vorderseite des Gehäuses aufgedruckt. Unter Linux lässt sich die Schnittstelle ansprechen mit:

  • eth1

Über DSA können die drei Anschlüsse für LAN 1 auf unabhängige MAC-Adressen aufgeteilt werden. Der Speicherort für die MAC-Adressen ist

  • /boot/config.txt

Sofern in dieser Datei keine Adressen eingetragen sind bzw. nachdem ein neues Image aufgespielt wurde, werden die werkseitigen MAC-Adressen verwendet.

WLAN und BT

Voraussetzungen

✓ RevPi Basismodul mit WLAN-Schnittstelle

✓ DHCP-fähiger WLAN-Router

✓ Optional: externe RP-SMA-WLAN-Antenne

Die WLAN-Schnittstelle arbeitet mit 2,4 und 5 GHz und entspricht der IEEE802.11a/b/g/n/ac Spezifikation.

Unter Linux kannst Du, sofern keine anderen WLAN-Geräte verwendet werden, die WLAN-Schnittstelle ansprechen mit:

  • wlan0

WLAN über RevPi Status aktivieren

▷ Starte RevPi Status.

▷ Im Reiter CONFIG die Option Enable/Disable build-in WLAN aktivieren.

Starte den RevPi neu.

WLAN-Ländercode über raspi-config einrichten

Die Vorschriften und Frequenzbereiche für WLAN-Netzwerke sind für jedes Land unterschiedlich. Konfiguriere den WLAN-Ländercode, damit der RevPi nicht in verbotenen Bereichen sendet oder Interferenzen verursacht.

▷ Logge Dich über ein Terminal am RevPi ein.

▷ Öffne raspi-config mit dem Befehl:
sudo raspi-config

▷ Navigiere über die Pfeiltasten ins Menü Localisation Options.

▷ Wähle die Option WLAN Country.

▷ Wähle das passende Land aus der Länderliste und bestätige mit ENTER.

Starte den RevPi neu.

❯❯ Der WLAN-Ländercode ist aktiv.

WLAN-Verbindung über NetworkManager einrichten

Die WLAN-Verbindung wird über den NetworkManager nmtui eingerichtet. Der NetworkManager ist ein terminalbasiertes Benutzerinterface zur Verwaltung von Netzwerkverbindungen unter Linux.

▷ Logge Dich über ein Terminal am RevPi ein.

▷ Starte nmtui mit dem Befehl
sudo nmtui

❯❯ Das Benutzerinterface von nmtui erscheint.

Die Navigation innerhalb nmtui erfolgt über die Pfeil- und ENTER-Tasten.

▷ Wähle Edit a connection.

▷ Wähle das passende Wi-Fi-Netzwerk.

▷ Gib unter Password das WLAN-Password ein und konfiguriere ggf. weitere WLAN-Einstellungen.

▷ Speichere die Einstellungen mit OK und kehre mit *Back *auf die Startansicht zurück.

▷ Wähle Activate a connection.

▷ Wähle das Wi-Fi-Netzwerk und aktiviere die Verbindung mit der ENTER-Taste.

     ❯ Die Statusmeldung Connecting … erscheint.

     ❯ Die WLAN-Verbindung wird aufgebaut.

BT-Schnittstelle einrichten

Über die gleiche SMA-Buchse wie für die WLAN-Schnittstelle steht Dir auch eine BT‑Schnittstelle vom Standard 5.0 zur Verfügung.

▷ Logge Dich über ein Terminal am RevPi ein.

▷ Aktiviere die HCI-Schnittstelle mit dem Befehl:
sudo systemctl enable hciuart

▷ Starte den Dienst hciuart mit dem Befehl:
sudo systemctl start hciuart

▷ Starte den BT-Daemon mit:
sudo systemctl start bluetooth

Siehe auch:

USB-Schnittstellen

Der RevPi verfügt über zwei USB-A-Schnittstellen. Damit können USB-2.0-Client-Geräte wie USB-Festplatten, Surfsticks, Tastatur oder Maus angeschlossen werden.

Die Leistungsaufnahme der angeschlossenen Geräte darf 2,5 W (500 mA @ 5 V) pro Port nicht überschreiten. Bei Überlast wird der Strom an der entsprechenden USB-Schnittstelle abgeschaltet.

Die USB-Schnittstellen teilen sich mit den zwei Ethernet-Schnittstellen und einer Bluetooth-Schnittstelle einen USB-Hub auf dem RevPi. Dadurch kann die maximale Bandbreite beeinflusst werden.

Die USB-Schnittstelle ist für maximal 64-DAM-basierte USB-Geräte geeignet.

Die USB-Geräte, die an den USB-Hub angeschlossen sind, kannst Du mit folgendem Befehl anzeigen lassen:

pi@RevPi0000:~ $ lsusb -t

/:    Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M

|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M

|__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M

|__ Port 4: Dev 4, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M

|__ Port 5: Dev 5, If 0, Class=Vendor Specific Class, Driver=ftdi_sio, 12M

LEDs

LED PWR

Die LED PWR (Power) zeigt den Gerätestatus an.

SignalBedeutung
GrünSpannungsversorgung ist angeschlossen.
RotEs liegt eine Störung der Kommunikation zwischen angeschlossenen Modulen vor.

LED A1 – A5

Die LEDs A1 bis A5 sind frei verwendbar.

Die LEDs können für anwenderspezifische Anforderungen verwendet werden wie z. B. eine Netzwerkverbindung anzeigen, Überschreiten eines Speicherlimits anzeigen, einen Prozess überwachen und Störungen anzeigen.

Die LEDs können in der Kommadozeilen-Applikation piTest mit der Variablen RevPiLED geschaltet werden.

Der Ausgang RevPiLED hat eine definierte Bytelänge und verfügt somit über eine bestimmte Anzahl von Bits, die von rechts nach links gelesen werden. Bestimmte Bitpositionen sind jeweils einer LED zugeordnet. Die LED wird geschaltet, indem die jeweiligen Bits auf 0 oder 1 gesetzt werden.

LEDZugeordnete Bitposition
A10 und 1
A22 und 3
A34 und 5
A46 und 7
A58 und 9

Ein LED-Signal wird in der Kommandozeile mit dem Kommando piTest -w RevPiLED,x geschaltet, wobei x dem aus dem jeweiligen Bitmuster errechneten Dezimalwert entspricht.

LEDSignalBitmusterDezimalwert
A1 – A5aus0000 0000 00000
A1grün0000 0000 00011
rot0000 0000 00102
orange0000 0000 00113
A2grün0000 0000 01004
rot0000 0000 10008
orange0000 0000 110012
A3grün0000 0001 000016
rot0000 0010 000032
orange0000 0011 000048
A4grün0000 0100 000064
rot0000 1000 0000128
orange0000 1100 0000192
A5grün0001 0000 0000256
rot0010 0000 0000512
orange0011 0000 0000768

Um mehrere LEDs gleichzeitig zu schalten, werden die jeweiligen Dezimalwerte addiert.

Beispiel: Wenn gleichzeitig die LED A1 rot und die LED A2 grün leuchten soll, lautet das Kommando piTest -w RevPiLED,6 (Bitmuster: 000 0000 0110 = Dezimalwerte 2+4).

HINWEIS

Wenn einer bestehenden LED-Schaltung ein Signal hinzugefügt werden soll, muss der Wert für alle gewünschten Signale neu berechnet und geschrieben werden.

Digitaler Ausgang (Relais-Kontakt)

Über den digitalen Ausgang kannst Du beispielsweise externe Geräte ein- und ausschalten. Er ist als potenzialfreier Relaiskontakt ausgeführt. Die Steuerung erfolgt also über eine mechanische Verbindung der Pins.

revpi-flat digital output relay

Der Relais-Kontakt darf mit maximal 30 V DC oder 24 V AC und 2 A belastet werden.

Dem Relaiskontakt ist eine Suppressordiode parallelgeschaltet, um die Schaltfunken zu reduzieren, die beim Schalten von induktiven Lasten entstehen. Dadurch wird der Verschleiß reduziert. Eine externe Freilaufdiode oder Ähnliches wird nicht benötigt.

Ansteuerung über piTest

Über piTest kannst Du mit der Option -w das Relais schalten:

▷ Aktiviere das Relais mit dem Befehl
piTest -w DOut,1

▷ Deaktiviere das Relais mit dem Befehl
piTest -W DOut,0

Direktansteuerung

Für die Direktansteuerung des Relais über Betriebssystemfunktionen kannst Du das Programm gpio verwenden. Hier musst Du zunächst den entsprechenden GPIO-Pin, in diesem Fall Pin 28, als Ausgang schalten. Danach kannst Du den Ausgang mit 1 für Einschalten und 0 für Ausschalten setzen. Folgendes Beispiel zeigt die entsprechende Befehlsabfolge:

▷ Setze den Pin als Ausgang mit dem Befehl
gpio mode 28 out

▷ Schalte den Ausgang ein mit dem Befehl
gpio write 28 1

▷ Schalte den Ausgang aus mit dem Befehl
gpio write 28 0

Analoge Ein- und Ausgänge

Der RevPi verfügt über einen analogen Eingang und einen analogen Ausgang am 5-poligen Stecker ANALOG.

Analoger Eingang

Mit dem analogen Eingang kann entweder Spannung oder Strom gemessen werden.

  • U IN: Spannungsmessung 0 … 10 V DC
  • I IN: Strommessung 0 … 20 mA DC

Strom- und Spannungseingang dürfen nicht gleichzeitig beschaltet sein, ansonsten wird das Messergebnis verfälscht.

Der Strom wird über einen internen 240-R-Widerstand in eine proportionale Spannung umgewandelt.

Der dafür verwendete Analog-Digital-Konverter (ADC) MCP3550-50 bietet eine hohe nutzbare Auflösung von 21 Bit, benötigt jedoch mit 85 Millisekunden pro Messung vergleichsweise lang.

Es gibt zwei Wege, um auf die Schnittstellen zuzugreifen: entweder durch Lesen und Beschreiben des Linux sysfs oder über unser RevPi Konfigurationstool PiCtory und das Softwaretool piTest, mit dem Du auf das Prozessabbild des Systems zugreifen kannst. Im Folgenden beschreiben wir beide Methoden getrennt für Input und Output.

Werte auslesen mit Linux sysfs

Spannung 0 … 10 V auslesen:

▷ Gib folgenden Befehl ein, um den Eingangswert des ADC zu erhalten:
cat /sys/bus/iio/devices/*/in_voltage0*

▷ Konvertiere den ausgelesenen Rohwert in in_voltage0-voltage1_raw mit der Formel (($raw * 12500) >> 20) + 12500, um die Spannung in mV zu erhalten.

Strom 0 … 20 mA auslesen:

✓ Der Strom sollte auf dem Port I IN zur Verfügung stehen.

▷ Dividiere die ausgelesene Spannung (s. o.) durch einen Widerstand von 240 Ohm, um den Strom in mA zu erhalten.

Werte auslesen mit piTest

Du kannst den Strom-/Spannungsmodus für den RevPi Flat in PiCtory mit der Variablen AInMode konfigurieren:

  • AInMode Voltage 0-10V (Standard)
  • AInMode Current 0-20mA

▷ Lese den Strom- oder Spannungswert aus durch Eingabe von
piTest -r AIn

Analoger Ausgang

Am analogen Ausgang kannst Du Aktoren wie Frequenzumrichter anschließen. Er kann eine Spannung zwischen 0 und 10 V ausgeben.

Der dafür verwendete Digital-Analog-Konverter (DAC) DAC121S101 hat eine Auflösung von 12 Bit.

Werte eingeben mit Linux sysfs

▷ Gib folgenden Befehl ein, um den Wert in den DAC einzugeben:
echo 2047 | sudo tee /sys/bus/iio/devices/*/out_voltage0_raw

▷ Gib einen Wert zwischen 0 und 4095 in den DAC in out_voltage0_raw ein, um eine Spannung zwischen 0 und 10 V auszugeben.

Werte eingeben mit piTest

▷ Gib den Analogwert in mV in die Variable AOut ein, z. B. 5000 mV für den Analogausgang:
piTest -w AOut,5000

Weitere Informationen zur Implementierung

Softwareseitig werden der DAC121S101 und MCP3550-50 wie IIO-Module behandelt, deren Schnittstelle in sysf als /sys/bus/iio/devices/ ausgeführt ist.

Nachdem die Konverter erfolgreich registriert sind, erscheint das Kernelprotokoll.

pi@RevPi0000:~ $ dmesg | grep "spi.*consumer"

[ 4.461004] mcp320x spi0.1: Linked as a consumer to regulator.1

[ 5.747592] ad5446 spi0.0: Linked as a consumer to regulator.2

Dem Ordner sysfs werden zwei Unterordner für die Konverter als /sys/bus/iio/devices/iio:deviceX hinzugefügt. Dabei kannst Du X zur Unterscheidung der Konverter verwenden. Die Reihenfolge hängt von der Registrierung der Geräte ab und hat daher keine feste Zuordnung. Die Zuordnung wird jedoch ersichtlich, wenn Du Dir den Inhalt der Ordner anschaust. Der Ordner mit den Dateien out_voltage* ist das Ausgabe- und damit das DAC-Modul. Der Ordner mit den Dateien in_voltage* ist das Eingabe- und damit das ADC-Modul.

Bei der Methode mit piTest behält piControl diese Werte dauerhaft im Prozessabbild, und Du kannst die Werte mit piTest lesen und beschreiben.

Siehe auch:

Watchdog

Der RevPi verfügt über zwei unabhängige Watchdogs. Der erste Watchdog ist Teil des BCM2837 SoC, welcher auch auf dem Raspberry Pi 3 eingesetzt wird. Der zweite ist der externe Watchdog-Baustein Maxim MAX6370.

BCM2837

Der Watchdog des BCM2837 ist der bevorzugte Watchdog, da er sich so wie andere Watchdogs unter Linux verhält. Du kannst ihn sowohl über die Gerätedatei /dev/watchdog0 als auch als Standard-Watchdog über die Gerätedatei /dev/watchdog erreichen.

MAX6370

Der MAX6370 ist über die Gerätedatei /dev/watchdog1 erreichbar.

Um ihn zu aktivieren, muss der GPIO4 einmalig auf High gesetzt werden. Allerdings lässt er sich über diesen GPIO nicht mehr deaktivieren. Für die Aktivierung über die Kommandozeile kannst Du das gpiod‑Tool verwenden: gpioset -m time -u 1000 pinctrl-bcm2835 4=1

gpiod-Paket

Der Befehl „gpioset“ ist Teil des gpiod‑Pakets. Wenn dies nicht installiert ist, kannst Du es selbst mit sudo apt install gpiod installieren.

Wenn Du den GPIO aus deiner Anwendung heraus bedienen willst, ist die „libgpiod“ richtig für Dich. Diese stellt auch ein Python‑Interface zur Verfügung.

Du benötigst dann folgende Pakete: libgpiod‑dev libgpiod2 python3‑libgpiod

Der Timeout des MAX6370 ist fest auf 60 Sekunden eingestellt und kann nicht verändert werden.

Nach Aktivierung kann der Watchdogs MAX6370 nur durch das Trennen der Stromversorgung deaktiviert werden. Ein Neustart deaktiviert den Watchdog nicht. Das bedeutet, dass ein Neustart bei aktivem Watchdog nicht länger als 60 Sekunden benötigen darf, da sonst einen Reset der Hardware durchgeführt wird.

Watchdog unter Linux

Es gibt verschiedene Möglichkeiten, einen Watchdog unter Linux zu verwenden. Das RevPi Image und Raspbian setzen auf „systemd“. Dies ist somit auch die präferierte Methode, um den Watchdog zu verwenden. „systemd“ kann verwendet werden, um einen Hardware‑Watchdog zu triggern. Anwendungen, die durch den Watchdog überwacht werden sollen, werden dann von „systemd“ überwacht. Dies hat den Vorteil, dass mehrere Anwendungen überwacht werden können. Folglich muss auch nicht zwingend das ganze System neu gestartet werden, sondern nur die einzelne Anwendung.

Siehe auch:

Frei konfigurierbarer Taster

Der RevPi verfügt über einen frei konfigurierbaren Taster. Der Eingangswert des Tasters kann über GPIO13 ausgewertet und dann für bestimmte Aktionen verwendet werden, z. B. zum kontrollierten Herunterfahren des RevPi.

Im PiCtory Value Editor wird der Eingangswert des Tasters unter Top_Button angezeigt.

Der Tatser kann per Software auf die gleiche Art wie eine Tastatureingabe abgefragt werden. Dabei wird der Tastencode KEY_UNKNOWN verwendet (entspricht Wert 240).