This is an old revision of the document!
Table of Contents
W I O - Fahrtregler - 32 I/O - LEDs - Servos - RFID - OLED - DCC
Einführung
Diese Lösung basiert auf einem LOLIN D1 Mini. (ESP8266)
Sie kann verwendet werden als:
- Drahtloser Fahrtregler
oder als drahtloser I/O mit folgenden vier Optionen:
- 32 I/O
- 2 Displays
- LED-Steuerung WS2812
- 4 Servos
- 2 RC522-Leser
- DCC-Generator
Informationsblatt
Achtung
- Der Rocrail-Server muss auf einem PC ausgeführt werden, der nicht automatisch angehalten wird oder in den Ruhezustand wechselt, wenn keine Benutzeraktivität erfolgt. Die Energieeinstellung überprüfen, um Kommunikationsverlust zu vermeiden!
- Der verwendete WiFi-Router/Zugangspunkt sollte auf dem neuesten Stand sein; Nur gewartete Hardware verwenden.
- Unbedingt sicherstellen, dass die SSID nicht sichtbar ist, um zusätzlichen öffentlichen Verkehr zu verhindern.
Das Verwenden von WIO geschieht auf eigenes Risiko. Peter Giling und Robert Jan Versluis können nicht für irgendwelche Schäden oder Probleme bei Verwendung der vorgeschlagenen Hard- und Firmware verantwortlich gemacht werden. Die veröffentlichte Hardware sind Prototypen, unvollständig und nicht zur Freigabe bereit. Es werden nur Original-GCA-Bausätze unterstützt. |
---|
Arduino IDE
Getestet mit Version 1.8.10
Die Arduino IDE mit folgenden Boards und Bibliotheken vorbereiten:
Boardverwalter
Im Einstelldialog bei "Zusätzliche Boardverwalter-URLs" die folgende URL hinzufügen:
https://arduino.esp8266.com/stable/package_esp8266com_index.json
Board-Auswahl
LOLIN(WEMOS)D1 R2 & mini
Bibliotheken
- ESP8266WiFi (Board Manager)
- Wire (I2C)
- FastLED (WS2812)
- RotaryEncoder
- MFRC522 (RC522)
- Servo
Dunkles Thema
WIO-Sketch
Copyright © 2002-2019 Robert Jan Versluis, Rocrail.net |
WIO ist Firmware zur Steuerung von Fahrtregler, I2C, LEDs, Servos, RFID, Displays und DCC.
Der Quellcode ist öffentlich aber "nicht open source"-lizensiert und darf nur zum Kompilieren und Laden auf den LOLIN D1 Mini verwendet werden.
Binary
Compiler-Ausgabe
Die roten FastLED pragma Meldungen, die nur informell sind, können ignoriert werden, wenn die beiden letzten weißen Zeilen angezeigt werden:
# pragma message "FastLED version 3.003.002" # pragma message "No hardware SPI pins defined. All SPI access will default to bitbanged output" Sketch uses 293716 bytes (28%) of program storage space. Maximum is 1044464 bytes. Global variables use 33104 bytes (40%) of dynamic memory, leaving 48816 bytes for local variables. Maximum is 81920 bytes.
Reinfall: Viele Micro-USB-Kabel liefern nur 5 V aber keine Daten und können nicht für Programmieren verwendet werden. |
---|
Das Einrichten des WiFi kann mit dem Arduino Serial Monitor 9600bps erfolgen oder durch modifizieren der USERCNF.h:
#1CConnecting to [secure.home] #13WiFi try to connect ... #13WiFi try to connect #17WiFi connected RSSI=-55
Ausgabe nach einem ?
-Befehl:
Settings: ------------------------------ version=0.85 WIO 20191031d (c)Rocrail ssid=xxxxxxxx pwd=xxxxxxxx server=xxxxxxxx port=8051 name= id=33 io=i2cled i2c=ooooooooooooooooppppiiiibbbbbbbb steps=50 pulse=50 display=22 dccsc=0 RSSI=-53 MCP23017 status: 0x20=OK 0x21=OK I2C device found at address 0x20 I2C device found at address 0x21 I2C device found at address 0x3C I2C found 3 devices loco1=0 loco2=3 active=0 Change settings by typing: ------------------------------ *ssid=<your WiFi SSID> *pwd=<your WiFi password> *server=<your Rocrail server IP/host> *port=<your Rocrail server port> *name=<Node name> *id=<Node number> *io=<type> <throttle> or <i2cled> or <i2cservo>> or <i2crfid> or <i2cdcc> *i2c=<oooooooobbbbbbbboooooooobbbbbbbb> o=output, i=input, b=block, p=pulse *steps=<number of rotary steps> *pulse=<output pulse length in 100ms units> *display=<geometry1><geometry2> 0=96x16 1=128x32 2=128x64 *dccsc=<short circuit detection> 0=off 1=on
Benutzer-Konfiguration
Die USERCNF.h-Datei kann für anfängliches erstes Booten, WiFi und Rocrail-Server-Werte verwendet werden.
Die Werte müssen eingestellt sein, bevor kompiliert und hochgeladen wird.
Anschließend können diese Werte mit Monitor-Befehlen geändert werden.
Monitor-Befehle
Befehle | Beschreibung | Standard |
---|---|---|
? | Zeigt die momentanen Einstellungen und wie sie geändert werden. | |
! | Auflistung des verwendeten Flash-Speichers. | |
*ssid=<value> | Setzt die WiFi-Access-Point SSID. | - |
*pwd=<value> | Setzt das WiFi-Passwort. Ein WiFi-Neuverbindung wir gestartet. | - |
*server=<value> | Setzt die Rocrail-Server-IP oder den Namen. | - |
*port=<value> | Setzt den Rocrail-Server-Port. | 8051 |
*name=<value> | Optionaler Node-Name. | - |
*id=<value> | Node-Nummer/Fahrtregler-ID; Muss eindeutig sein . | 33 |
*io=<value> | I/O-Konfiguration. | throttle |
*i2c=<value> | I2C-Port-Konfiguration. | oooooooobbbbbbbboooooooobbbbbbbb |
*steps=<value> | Anzahl der Drehgeber-Schritte. | 127 |
*pulse=<value> | Ausgangs-Impuls-Länge in 100ms-Einheiten. | 5 |
*display=<value> | Standard-Display-Geometrie: 0=96x16 1=128x32 2=128x64 | 00 |
Note: Den <value> (Wert) entsprechend der lokalen Bedingungen ersetzen.
Port-Typ | Beschreibung |
---|---|
i | Eingang |
o | Ausgang |
b | Block: Eingang mit 2 Sekunden Aus-Verzögerung. |
p | Pulse: Ausgang mit autom. Aus. |
IO-Typ-Konfiguration
IO-Typ | I2C 32I/O | FastLED | Servo | RFID | Display | DCC |
---|---|---|---|---|---|---|
throttle | - | - | - | - | - | - |
i2cled | JA | JA | Nein | Nein | JA | Nein |
i2cservo | JA | Nein | JA | Nein | JA | Nein |
i2crfid | JA | Nein | Nein | JA | JA | Nein |
i2cdcc | JA | Nein | Nein | Nein | JA | JA |
RIC - Fahrtregler
Hinweis: RIC steuert Loks nach Adresse, nicht nach Kennung. Es wird also die erste in der Liste verwendet, wenn mehrere Loks dieselbe Adresse haben .
Der Pocket-Fahrtregler-I/O-Modus benötigt einen Drehgeber (Drehencoder), eine LED und vier Tasten.
Die LED kann auch die eingebaute sein. (D4)
Prototyp 1
Stift | Verwendung | Klick | Langer Klick |
---|---|---|---|
D5/D6 | Drehgeber | - | - |
D7 | Drehgeber-Taster | Ändert die Fahrtrichtung | Wartet auf Lok / Lok-Freigabe |
D4 | eingebaute LED | - | - |
D1 | F1 | F1 | F5 |
D2 | F2 | F2 | F6 |
D3 | F3 | F3 | F7 |
D0 | F4 | F4 | F8 |
A0 | Batterie | - | - |
Licht
F0 wird umgeschaltet, wenn F3 und F4 gleichzeitig gedrückt werden.
Not-Halt
Ein Not-Halt wird zum Server gesendet, wenn F1 und F2 gleichzeitig gedrückt werden.
Loco selection
Lok 1 ist standardmäßig ausgewählt.
Auswahl Lok 1 wenn F1 und F4 gleichzeitig gedrückt werden.
Auswahl Lok 2 wenn F2 und F3 gleichzeitig gedrückt werden.
LED | Bedeutung |
---|---|
Ein | Keine WiFi-Verbindung. |
Sehr schnelles Blinken 10Hz | Keine Rocrail-Server-Verbindung. |
Aus | Ruhezustand. |
Schnelles Blinken 5Hz | Auf Lok-Zuweiung warten (Dispatch). |
Langsames Blinken 1Hz | Betriebs-Modus. |
Booten
Während des Bootens leuchtet die LED, bis eine WiFi-Verbindung hergestellt ist.
Eine Lok übernehmen (catch)
- Falls der LOLii eine bereitgestellte Lok nicht übernimmt, während der Drehgeber für mindesten 2 Sekunden gedrückt ist, beginnt die LED schnell zu blinken.
- Wenn der LOLii in diesem Modus eine bereitgestellte Lok sieht, wird er sie übernehmen und die LED beginnt langsam zu blinken.
- Diese Lok-Übernahme wird im Flash-Speicher gespeichert und beim Neustart erneut verwendet, wenn sie nicht freigegeben wurde.
Geschwindigkeits-Steuerung
- Für Geschwindigkeits-Änderungen durch Drehen des Drehgebers.
- Ein kurzer Druck auf den Drehgeber kehrt die Fahrtrichtung um.
Steuerung der Funktionen
Die vier Funktions-Tasten stehen für F1 bis F4.
Mit langen Klicks können F5 bis F8 angesprochen werden.
Eine Funktion wird nach Loslassen der Taste umgekehrt, um lange Klicks bearbeiten zu können. (So wie mit Smartphones.)
Eine Lok freigeben
- Den Drehgeber für mindesten 2 Sekunden gedrückt halten.
- Eine Freigabe-Meldung wird gesendet.
- Die LED wird Aus-geschaltet.
Batterie-Kontrolle
Der Analog-Eingang prüft die Batterie-Spannung.
Wenn die Spannung unter einen bestimmten Wert kommt, sendet der LOLii automatisch ein Geschwindigkeit-Null-Befehl zur Lok und einen Freigabe-Befehl.
Die LED geginnt sehr schnelles Blinken, solange die Batterie nicht vollständig entladen ist.
Servererkennung
UDP-Multicast entleert den Heap-Speicherplatz und ist daher deaktiviert. |
Wenn beim Rocrail-Server R2RNet auf Multicast-Adresse 226.0.0.1 aktiviert ist, kann der LOLii den Servernamen / die IP-Adresse abrufen, um automatisch eine Verbindung zum 8051-Client-Port herzustellen.
WIO - I/O
- Verbindet direkt mit dem Rocrail-Server-Client-Port 8051. Siehe Forum-Beitrag
- Wiederherstellung von WiFi- und Server-Verbindung.
- 32 Digital-I/O, kompatibel mit allen GCA-Schnittstellen.
- Eingang
- Ausgang
- Block
- Pulse
- 128 LEDs kompatibel mit WS2812 an D8. (Ausgangs-Typ Farbe in Rocrail.)
- RGB-Farbe
- Helligkeit
- Dimmen
- Blinken
- 4 Servos
- Einstellbare Bewegungsgeschwindigkeit
- Positionen werden in der plan.xml gespeichert, Ausgang/Weiche, was den Tausch von Hardware erleichtert.
- Erreichte Endpositionen werden im Flash gespeichert, um einen stabilen Neustart zu gewährleisten.
- DCC-Zentrale
- Bis zu 255 Einheiten im gleichen WiFi-Netzwerk. (Abhängig von IP-Konfiguration und Verfügbarkeit.)
- Ein Alarm wird erzeugt, wenn keine 'a live'-Meldungen mehr hereinkommen.
- Ausgangs-/Weichen-Befehle werden bestätigt, nachdem sie verarbeitet wurden.
- Eingangs-Ereignisse müssen innerhalb 100ms bestätigt werden. Nach dieser Zeitüberschreitung werden sie erneut gesendet. (Max. 5 Wiederholungen.)
Adressierung
Rocrail | WIO |
---|---|
Schnittstellenkennung | "WIO" |
Bus | Kennung |
Adresse | I2C-oder I/O-Port Port/LED |
Adresse | LED-Port |
Adresse | Servo-Port |
Dieses Adressierungs-Schema wird verwendet für:
- Ausgänge
- Weichen
- Signale
- Rückmelder
LEDs
Die Adressierung ist die gleiche, wie bei normalen Ausgängen.
Ausgänge
- Schnittstelle → WIO-Kennung: Bus
- Schnittstelle → Adresse setzt den LED-Offset
- Schnittstelle → Parameter 'Ein' setzt den LED-Bereich
- Schnittstelle → Option 'Farbe' und Typ 'Beleuchtung' müssen gesetzt sein
- Schnittstelle → Wert setzt Helligkeit
- Schnittstelle → Verzögerung (0…15) setzt die Dimm-Schritte. (Ein Wert von Null deaktiviert Dimmen.)
- Schnittstelle → Option 'Blinken' kann für Blinken der LED verwendet werden.
- Farbe → RGB setzt die LED-Farbe
Signale
- Schnittstelle → WIO-Kennung: Bus
- Schnittstelle → Adresse setzt die LED-Nummer
- Schnittstelle → Port-Typ: LED
- Schnittstelle → Steuerungs-Typ: Begriffs-Nummern (Max. 6 Sub-LEDs → 2 x WS2812)
- Helligkeit
Die Begriffs-Werte sind mit RocNetNode Pi08 kompatibel. (WIO version 0.81+)
Servos
Die Adressierung ist die gleiche, wie bei normalen Ausgängen.
Steuerung | Ausgang | Weiche | Bereich |
---|---|---|---|
WIO | Schnittstellenkennung = "WIO" | Schnittstellenkennung = "WIO" | - |
WIO-Kennung | Bus | Bus | 1…255 |
Servo-Port | Adresse | Adresse | 1…4 |
Zusätzliche Option | - | Einzel-Ausgang | - |
Position 1 | Parameter Ein | Parameter | 0…180° |
Position 2 | Parameter Aus | Wert | 0…180° |
Geschwindigkeit | Verzögerung | Schaltzeit | 1…10 |
Ziel | Port Typ "Servo" | Port Typ "Servo" | - |
RFID
Sicherstellen, dass keine Servos und LEDs angeschlossen sind, wenn auf RFID umgestellt wird. |
- Zwei Mifare RFID RC522-Leser werden unterstützt.
- Es werden 5 zusätzliche Ports benötigt; Servos sind parallel nicht möglich.
- Melde-Adressen sind 100 und 101. (In Rocrail 101 und 102.)
- Automatisches Rückmelder-Aus-Ereignis nach 1500ms. (Bis dahin muss es vom Server bestätigt sein.)
- Viermaliges Wiederholen bis zur Bestätigung, bevor aufgeben wird.
Signal | D1 Mini | RFID RC522 |
---|---|---|
Slave Select 1 | D3 | 1 (SDA) Leser 1 |
Slave Select 2 | D0 | 1 (SDA) Leser 2 |
SCK | D5 | 2 (SCK) |
MOSI | D7 | 3 (MOSI) |
MISO | D6 | 4 (MISO) |
Stifte I2C
Stift | Verwendung |
---|---|
A0 | Spannungs-Überwachung |
D1 | I2C SCL |
D2 | I2C SDA |
D4 | Eingebaute LED |
D8 | LEDs (FastLED) |
Display SSD1306
An I2C können zwei Displays vom Typ SSD1306 mit den I2C-Adressen 0x3C und 0x3D angeschlossen werden.
Formatierter Text ist mit RocDisplay kompatibel.
WIO unterstützt nur eine Teilmenge und es werden einige neue Kleinbuchstabenbefehle eingeführt.
Code-Seite ist ISO 8859 Latin für Font {F0}; {F1} ist nur 7 Bit ASCII.
Adressierung
Der Bus wird für die WIO-Kennung verwendet und die Display-Nummer für die Auswahl zwischen 1 und 2. (0x3C oder 0x3D)
Der Adress-Wert wird nicht verwendet.
Unterstützte Formatierung
Formatierungsbefehle sind in geschweiften Klammern eingeschlossen. Beispiel des Lösch-Befehls:
{g1}{E}{L0}{X0}Hello World!{P}
Befehl | Parameter | Beschreibung | Hinweis |
---|---|---|---|
{Bn} | n=0-19 | Zeichnet ein Bitmap an der aktuellen Position. | |
E | - | Lösche Display-Puffer. Ein zusätzliches {P} wird für das Löschen des Display benötigt. | |
{Fn} | n=0-2 | Font-Auswahl. 0=7x5 1=6x5w 2=6x5n | Font 5x5 wird nicht unterstützt, weil es nicht lesbar ist. |
{Hn} | n=0-255 | Setzt den Display-Kontrast. | |
{In} | n=0-1 | Invertiert das Display. 0=normal 1=invertiert | |
{Ln} | n=0-3 | Gehe zur Zeile. Der Bereich ist von der Displaygröße abhängig. | |
P | - | Puffer zum Display kopieren | |
{Rn} | n=0,2 | Legt die Drehung der Anzeige fest. 0=0° 2=180° | |
{?V} | - | Zeige Firmware-Version. | |
{Xn} | n=0-127 | Gehe zur Spalte. Der Bereich ist von der Displaygröße abhängig. | |
{Yn} | n=0-32 | Gehe zur Reihe. Der Bereich ist von der Displaygröße abhängig. | |
Neue Befehle | Parameter | Beschreibung | |
{cn} | n=0-16 | Zeichnet eine Analog-Uhr mit dem angegebenen Radius an der aktuellen Position. | |
{gn} | n=0,1,2 | Setzt die Display-Geometrie. 0=96x16, 1=128x32, 2=128x64 (1 ist Standard) | Dies dient nur zu Testzwecken. Um CPU-Last zu sparen, die Option display setzen. |
{i} | - | Invertierten Text umschalten. | |
{d} | - | Eine Textzeile herunterscrollen. | |
{f} | - | 7-Segment-Modellzeituhr. |
Hinweis: Wenn die Geometrie nicht standardmäßig ist, 128x32, MUSS der Text mit einem {gn}-Befehl beginnen, damit die richtige Geometrie ausgewählt wird.
Bitmaps
Die Bitmaps haben eine Größe von 20 x 8 Pixel.
DCC-Generator
WIO unterstützt folgende DCC-Pakete
- Lok-Geschwindigkeit und -Fahrtrichtung. (14 Fahrstufen werden nicht unterstützt.)
- Lok-Funktionen 0 - 28.
- POM schreiben/lesen. (Für POM lesen wird ein RailCom-Detektor benötigt.)
- Zubehör
- BinState
Eigenschaften
- 100% NMRA Timing-konform.
- Automatisch Gleisspannung AUS nach einem Verbindungsverlust zum Rocrail-Server.
- Zeigt Aktivität auf einem Display, wenn eines angeschlossen ist.
- 64 Slot Aktualisierungs-Stapel mit automatischer Bereinigung.
- 16fach Zubehör-Befehlswarteschlange.
Stifte DCC
Stift | Verwendung | Hinweis |
---|---|---|
D6 & D7 | Symmetrisches DCC-Signal. | |
D5 | Kurzschluss-Erkennung. | Benötigt einen 10 kΩ Pullup-Widerstand. |
ORD3
Zur Verwendung des 3,3V-Pegels muss parallel zum R1 ein 470Ω-Widerstand hinzugefügt werden.
Mobil-Adressierung
Schnittstellenkennung | WIO | Bemerkung |
---|---|---|
Bus | WIO-Kennung | |
Adresse | DCC-Decoder-Adresse. | Adressen > 99 werden als lange DCC-Adressen berücksichtigt. |
Fahrstufen | 28 oder 128 |
Mobil
Der WIO kann auch als mobiler RFID-Leser und I/O verwendet werden.
Die WIO-Kennung muss in dem zweiten Adress-Feld eingestellt werden.
Rückmelder-Einstellung
Loco [ICE-CAM] reports RFID event 56:101 [4.102.181.114.9.64.128] ON
Die gemeldete RFID muss zu einer Rückmelder-Kennung in Rocrail passen.
Die Adresse dieses Rückmelder muss auf Null eingestellt sein.
Die Kennung muss in dieser RFID-Schreibweise eingestellt sein.
Für das Kopieren dieser Kennung können die Rocrail-Traces oder der Rückmelder-Monitor verwendet werden.
Funktion-Einstellung
Um Funktionen an den WIO zu übergeben, muss die Funktion mit Funktions-Adresse und FX eingestellt werden.
Hardware
Die Firmware für IO-Type RIC funktioniert nicht ohne Pull-Up-Widerstände an den Tasten-Eingängen, einschließlich des Drehgebers.
Pläne & PCBs
Die veröffentlichte Hardware sind Prototypen, unvollständig und nicht zur Veröffentlichung bereit.
Es werden nur Original-GCA-Bausätze unterstützt.