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
Position | Komponente | Verwendung |
---|---|---|
1 | 6 × Status-LED | LEDs |
2 | Taster | Frei konfigurierbarer Taster |
3 | 2 × Arretierklammer | Gerät auf einer Hutschiene montieren |
4 | Micro-USB | Nur für Variante RevPi Flat S: Image sichern und neu installieren |
5 | 4 × RJ45 Ethernet | Ethernet-Schnittstellen (RJ45), Netzwerkverbindung herstellen |
6 | 2 × USB A | USB-Schnittstellen |
7 | Digitaler Ausgang (Relais-Kontakt) | Digitaler Ausgang (Relais-Kontakt) |
8 | POWER (2-poliger Stecker) | Spannungsversorgung anschließenn |
9 | Analoger Eingang / Analoger Ausgang (5-poliger Stecker) | Analoge Ein- und Ausgänge |
10 | RS485-0 (3-poliger Stecker) | Serielle Geräte (RS485) |
11 | RS485-1 (RJ14-Anschluss) | Serielle Geräte (RS485) |
12 | RP-SMA-Buchse | WLAN und BT |
13 | Lüftungsschlitze | Gerät auf einer Hutschiene montieren |
Kompatible RevPi Images für RevPi Flat S
- RevPi Bookworm Image
- RevPi Bullseye Image
Siehe RevPi Images.
Varianten
Artikelnr. | RAM | eMMC | Micro-USB |
---|---|---|---|
RevPi Flat 100371 | 1 GB | 32 GB | Nein |
RevPi Flat S 100330 | 1 GB | 8 GB | Ja |
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:
-
Montiere den RevPi auf einer Hutschiene.
-
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.
-
Schließe zuletzt die Spannungsversorgung an.
Spannungsversorgung anschließen
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.
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.
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.
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.
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:
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.
Value | Bedeutung |
---|---|
INP AIn | Eingangswert des analogen Eingangs |
INP AIn_Status | Status des analogen Eingangs |
INP_AOut_Status | Status des analogen Ausgangs |
INP Core_Temperature | CPU-Temperatur |
INP Core_Frequency | CPU-Frequenz |
INP Top_Button | Eingangswert des Tasters |
OUT RevPiLED | Statusbyte für LEDs |
OUT AOut | Ausgangswert für analogen Ausgang |
OUT DOut | Ausgangswert für digitalen Ausgang |
MEM AInMode | Modus 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.
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.
RS485-1
Für RS485-1 steht eine RJ11-Buchse zur Verfügung.
Pin | Beschaltung |
---|---|
1 | – |
2 | GND |
3 | Negativ |
4 | Positiv |
5 | GRD |
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 Befehlopen()
▷ 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 BefehlTIOCSRS485 ioctl()
▷ Ggf. sende oder empfange die Daten mit read()
oder write()
.
▷ Schließe das Character Device mit dem Befehlclose()
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.
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.
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.
❯❯ 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 Befehlsudo 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.
Signal | Bedeutung |
---|---|
Grün | Spannungsversorgung ist angeschlossen. |
Rot | Es 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.
LED | Zugeordnete Bitposition |
---|---|
A1 | 0 und 1 |
A2 | 2 und 3 |
A3 | 4 und 5 |
A4 | 6 und 7 |
A5 | 8 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.
LED | Signal | Bitmuster | Dezimalwert |
---|---|---|---|
A1 – A5 | aus | 0000 0000 0000 | 0 |
A1 | grün | 0000 0000 0001 | 1 |
rot | 0000 0000 0010 | 2 | |
orange | 0000 0000 0011 | 3 | |
A2 | grün | 0000 0000 0100 | 4 |
rot | 0000 0000 1000 | 8 | |
orange | 0000 0000 1100 | 12 | |
A3 | grün | 0000 0001 0000 | 16 |
rot | 0000 0010 0000 | 32 | |
orange | 0000 0011 0000 | 48 | |
A4 | grün | 0000 0100 0000 | 64 |
rot | 0000 1000 0000 | 128 | |
orange | 0000 1100 0000 | 192 | |
A5 | grün | 0001 0000 0000 | 256 |
rot | 0010 0000 0000 | 512 | |
orange | 0011 0000 0000 | 768 |
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).
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.
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 BefehlpiTest -w DOut,1
▷ Deaktiviere das Relais mit dem BefehlpiTest -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 Befehlgpio mode 28 out
▷ Schalte den Ausgang ein mit dem Befehlgpio write 28 1
▷ Schalte den Ausgang aus mit dem Befehlgpio 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 vonpiTest -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).