User Tools

Site Tools


arduino:wio-de

Differences

This shows you the differences between two versions of the page.


Previous revision
arduino:wio-de [2025/05/19 20:56] (current) – [Schritt-Motor] babbel
Line 1: Line 1:
 +[[:arduino:wio-fr|{{ icons:fr.png|French Version}}]][[:arduino:wio-de|{{ icons:de.png|Deutsche Version}}]][[:arduino:wio-en|{{ icons:uk.png|English Version}}]]
 +======WIO - Firmware======
 +[[:german|{{ :hardware.png}}]][[:german|{{ :rocrail-logo-35.png}}]]
 +[[:german|Inhalt]] -> [[:hardware-de#arduino|Arduino]]
 +  * [[arduino:wio-overview-de|WIO-Übersicht]] | [[:arduino:wio-setup-de|WIO-Konfiguration]] | [[:arduino:wioctrl-de|WIO Control]] | [[:arduino:amp-de|Benutzer-Bitmaps]] | **[[:arduino:wio-de|WIO-Firmware]]** | [[:arduino:wio-mobile-de|WIO Mobil]] | [[:arduino:wio-cable-de|Kabel]] | [[:wio:wio-ledscript-en|LEDScript]] (en)
 +  * [[:arduino:wio-rascii-en|WIO RASCII]] (en) | [[:arduino:wio-canprot-en|WIO CAN Protocol]] (en)
 + 
 + \\
 + \\
 +=====Einführung=====
 +Dieses Projekt ist auf die Plattformen ESP8266, ESP32 und RP2040 ausgerichtet.\\
 +Der Quellcode ist nur verfügbar, um ihn auf dem Zielgerät flashen zu können, wenn keine andere Methode möglich ist.\\
 +Das Forken oder Manipulieren des Quellcodes ist NICHT erlaubt und urheberrechtlich geschützt.\\
 +
 +
 +Sie kann verwendet werden als:
 +  * Drahtloser Fahrtregler
 +
 +oder als drahtloser I/O:
 +  * 32 I2C I/O [[:hardware-de#Erweiterungseinheiten|GCA-kompatibel]]  
 +  * 2 Displays ​SSD1306
 +
 +und eine der folgenden zusätzlichen Optionen:
 +    - LED-Steuerung WS2812
 +    - 4 Servos
 +    - 2 RC522-Leser
 +    - DCC-Generator
 +    - Mobil-PWM, Fahrtrichtung und Licht
 +
 +und eine der folgenden Optionen:
 +
 +  * ID12LA 125kHz RFID-Leser an RX
 +  * RailCom-Leser an RX
 +
 +====Unterstützte Boards====
 +  * Raspberry Pi Pico W -> empfohlen 
 +  * Lolin/Wemos D1 Mini ESP 8266
 +  * Lolin D32
 +  * ESP32 Dev Module
 +  * ESP32 CAM Module
 +
 +====Verwendete Stifte====
 +Stift-Zuordnung in ''Pins.cpp'' prüfen:
 +  * Pins.cpp
 +
 +
 +====Informationsblatt====
 +  * {{:wio:wio-2.pdf|WIO-2}} Stand 2019-2022
 + \\
 +===== Achtung =====
 +{{ :arduino:wifi-analyse.jpg?300|Bei einer Ausstellung verwendete WiFi-Kanäle...}}
 +  - 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 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=====
 +Die Arduino IDE mit folgenden Boards und Bibliotheken vorbereiten:
 +====Boardverwalter=====
 +Im Einstelldialog bei "Zusätzliche Boardverwalter-URLs" die folgende URL hinzufügen:
 +<code>
 +https://arduino.esp8266.com/stable/package_esp8266com_index.json
 +https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
 +https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
 +</code>
 +{{ :arduino:board-manager-en.png?300}}
 +Und die ESP8266 und ESP32 Board-Bibliotheken installieren.\\
 +====Board-Auswahl====
 +{{ :arduino:lolin-ide-board.png?240}}
 +''LOLIN(WEMOS)D1 R2 & mini''\\
 +
 +====Bibliotheken====
 +===ESP8266 & ESP32===
 +  * ESP8266 (Board Manager)
 +  * Adafruit NeoPixel ​(WS2812)
 +  * RotaryEncoder
 +  * MFRC522 ​(RC522)
 +  * Servo
 +  * ArduinoOTA
 +  * mcp_can 
 +    * https://github.com/coryjfowler/MCP_CAN_lib
 +    * [[:arduino:rcan-de#modifikationen|MCP_CAN Modifikationen]]
 +  * SparkFun APDS9960 RGB and Gesture Sensor \\ Zeile 198 in Arduino/libraries/SparkFun_APDS9960.h muss von NA_STATE in NO_STATE geändert werden, da sie mit der WiFi RP2040-Bibliothek in Konflikt steht. Dieser Enum-Wert wird in der Arduino/libraries/SparkFun_APDS9960.cpp nicht verwendet. (Implementierung)
 +
 +===ESP32===
 +  * ESP32 (Board Manager)
 +  * ESP32Servo
 +  * ESP32CAN
 +    * https://github.com/miwagner/ESP32-Arduino-CAN
 +
 +__**ESP32CAN Modifikationen**__\\
 +Der ''xSemaphoreTake'' sollte nach 500ms ablaufen, anstatt für immer zu warten.\\
 +''portMAX_DELAY'' mit 500 ersetzen und anstelle von null rc der ''xSemaphoreTake''-Funktion zurückgeben. (CAN.c)
 +<code c>
 +int CAN_write_frame(const CAN_frame_t *p_frame) {
 + if (sem_tx_complete == NULL) {
 + return -1;
 + }
 +
 + // Write the frame to the controller
 + CAN_write_frame_phy(p_frame);
 +
 + // wait for the frame tx to complete
 + int rc = xSemaphoreTake(sem_tx_complete, 500);
 + return rc;
 +}
 +</code>
 +
 +| Einfach die "Upload-Geschwindigkeit" auf 460800 verringern, falls beim Hochladen des Sketch Kommunikationsfehler angezeigt werden. |
 + \\
 +====FileSystem====
 +1M/2M FS-Größe auswählen:\\
 +{{:arduino:esp8266-fs-size.png?240}}\\
 +LittleFS ist ein Datei-System, das in WIO für das Hochladen von Benutzer-Bitmaps verwendet werden kann.\\
 +Installieren des Arduino-IDE-Plugin für das Hochladen von Daten:
 +  * https://github.com/esp8266/arduino-esp8266fs-plugin
 +
 +=====WIO-Sketch=====
 +| //Copyright (c) 2002-2025 Robert Jan Versluis, Rocrail.net// |
 +WIO ist Firmware zur Steuerung von Fahrtregler, I2C, LEDs, Servos, RFID, Displays und DCC.\\
 +Der Quellcode ist nicht öffentlich.\\
 + \\
 +
 +====Binary====
 +{{ :arduino:esp-downloadtool.jpg?400}}{{ :arduino:espressif_flash_tool_chip.jpg?150}}{{ :arduino:espressif_flash_tool.jpg?300}}
 +Das Espressif-Tool verwenden, um das WIO-Binary hochzuladen.
 +  * [[https://wiki.rocrail.net/rocrail-snapshot|WIO Binaries]]
 +  * [[https://www.espressif.com/en/support/download/other-tools|ESP Flash Download Tool]]
 +
 +====Compiler-Ausgabe====
 +Die roten FastLED pragma Meldungen, die nur informell sind, können ignoriert werden, wenn die beiden letzten weißen Zeilen angezeigt werden:
 +<code>
 + #    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.
 +</code>
 +
 +^ 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 115200 bps erfolgen oder durch modifizieren der [[#benutzer-konfiguration|USERCNF.h]]:
 +<code>
 +#1CConnecting to [secure.home]
 +#13WiFi try to connect
 +...
 +#13WiFi try to connect
 +#17WiFi connected RSSI=-55
 +</code>
 +
 +Ausgabe nach einem ''?''-Befehl:\\
 +<code>
 +------------------------------
 +revision=458 WIO (c)Rocrail
 +192.168.100.175 RSSI=-52
 +battery=186
 +EEPROM size=3804
 +Free heap=174271
 +I/O state=00 00 00 00
 +------------------------------
 +SPIFFS total=1345kb used=0kb
 +file: Disco01.led size=110
 +------------------------------
 +Configuration:
 +------------------------------
 +ssid1=
 +pwd1=
 +ssid2=
 +pwd2=
 +server=
 +name=[local]
 +id=45
 +io=i2cled 
 +i2c=ooooooooiiiiiiii
 +steps=64
 +sleeptimer=5
 +pulse=5
 +pwmsize=0
 +options=0xC2 0x01 0x00 0x00
 +booster=0
 +board=1
 +display=3
 +railcom=0
 +id12=0
 +depart=0
 +stepper=0
 +canprot=0(0)
 +canio=0
 +canusb=0
 +trace=0
 +------------------------------
 +</code>
 +
 +
 +====Benutzer-Konfiguration====
 +Die [[https://gitlab.com/rocrail/wio/-/blob/master/USERCNF.h|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.\\
 +:!: Die Werte aus der USERCNF.h-Datei werden nur verwendet, wenn es noch keine Einstellungen gibt (neues Gerät).\\
 +- Sollen die Werte im Flash-Speicher eines bestehenden WIO durch die Werte in USERCNF.h ersetzt werden, dann in der Arduino-IDE "Erase Flash" auf "All Flash Contents" setzen.\\
 +- Soll nur die Firmware eines bestehenden WIO upgedated werden, ohne die Einstellungen (z.B. WLAN-Einstellungen) zu ändern, dann in der Arduino-IDE "Erase Flash" auf "only Sketch" setzen.
 +
 +<html><a name="monitor_commands"></html>
 +====Monitor-Befehle====
 +Der Arduino Seriell-Monitor kann zur Änderung der WIO-Einstellungen mit 115200 bit/s verwendet werden.\\
 +  - Wenn RailCom aktiviert wurde, schaltet die Baudrate automatisch auf 250000 und der serielle Monitor kann "nur lesen".
 +  - Wenn ID12 aktiviert wurde, schaltet die Baudrate automatisch auf 9600 bit/s und der serielle Monitor kann "nur lesen".
 +
 +Grundsätzliche Verbindungs-Einstellung kann auch über die Registerkarte __**[[:arduino:wio-setup-de#wartung_maintenance|Wartung]]**__ des WIO Einstelldialogs erfolgen.\\
 +
 +|< >|
 +^ Befehle ^ Beschreibung ^ Standard ^ Bemerkung ^
 +| ?  | Zeigt die momentanen Einstellungen und wie sie geändert werden. |
 +| !  | Auflistung des verwendeten Flash-Speichers. |
 +| *sod | Erzwingt Start of Day |*scan | List all available WiFi APs |
 +| *scan | Listet alle verfügbaren WiFi APs |
 +| *ssid1=<​value>​ | Setzt die WiFi-AP SSID. | - | Primäre SSID (max. 30 Zeichen) | 
 +| *pwd1=<value> | Setzt das WiFi-Passwort. Ein WiFi-Neuverbindung wir gestartet. | - | Primäres WiFi-Passswort (max. 30 Zeichen) |
 +| *ssid2=<value> | Setzt die WiFi-Access-Point SSID. | - | Alternative SSID (max. 30 Zeichen) |
 +| *pwd2=<value> | Setzt das WiFi-Passwort. Ein WiFi-Neuverbindung wir gestartet. | - | Alternatives WiFi-Passswort (max. 30 Zeichen) |
 +| *server=<value> | Setzt die Rocrail-Server-IP oder den Namen. | - | Kann ein CSV von max. 30 Zeichen sein. (1.71+) \\ Ggf. auch 2 alternative Server-IPs oder -Namen. \\ Beispiele: "192.168.1.110,192.168.100.5" \\ oder "​mba2019,​win2019" \\ Wenn auf "auto" gesetzt ist, hat das den gleichen Effekt, wie der "autoserver"-Parameter.|
 +| *autoserver=<value> | Setzt die Rocrail-Server-Auto-Suche mit R2RNet. | siehe USERCNF.h -> ENABLE_R2RNET | 0=off, 1=on |
 +| *name=<value> | Optionaler Node-Name. | - |
 +| *id=<value> | Node-Nummer/Fahrtregler-ID; Muss eindeutig sein . | 33 |
 +| *io=<value> | WIO-Typ.  | i2cled ​|
 +| *i2c=<value> | I2C-Port-Konfiguration.  | oooooooobbbbbbbboooooooobbbbbbbb |
 +| *steps=<value> | Anzahl der Drehgeber-Schritte. | 127 |
 +| *pulse=<value> | Ausgangs-Impuls-Länge in 100ms-Einheiten. | 5 |
 +| *canprot=<value> | CAN-Protokoll | MBUS | 0=MBUS, 1=RCAN |
 +| *dccslave=<value> | DCC-Rolle | Master | 0=Master, 1=Slave(Booster) |
 +| *trace=<value> | Trace level | 9 (volatile) | 0=Info, 1=Debug, 9=None \\ Nur für die aktuelle Sitzung. |
 +| *ptmain=<value> | Service-Modus, PT, PoM-H-Bridge | 0 (flüchtig) | 0=off, 1=on \\ Nur für Tests! |
 +| *pwm=<value> | PWM-Größe für Mobile Motor-Steuerung | - | 600=10Hz |
 +| *display=<value> | Display-Typ: 0=96x16, 1=128x32, 2=128x64, 3=SH1106 | - | 1 |
 +
 +**Hinweis:**  Den <value> (Wert) entsprechend der lokalen Bedingungen ersetzen.\\
 +**Hinweis:​** ​Nach Änderung des WIO-Typs ist ein Reset erforderlich.\\
 +\\
 +
 +|< >|
 +^ Port-Typ ^ Beschreibung ^
 +| i | Eingang |
 +| o | Ausgang |
 +| b | Block: Eingang mit 2 Sekunden Aus-Verzögerung. |
 +| p | Pulse: Ausgang mit autom. Aus. |
 +(Block ist ein Input welcher erst Low meldet nachdem es 2 Sekunden stabil Low gewesen ist, wie es bei einem Gleisbesetztmelder sein sollte.)
 +\\
 +\\
 +
 +===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  |
 +
 + \\
 +====OTA Updating====
 +|< >|
 +|  //Muss im WIO-Dialog aktiviert werden.//  |
 +Wenn ein Update per USB nicht möglich oder zu umständlich ist, kann ein WIO-Update auch "Over The Air" (OTA) (über WLAN) erfolgen.\\
 +{{:arduino:wio-ota-en.png?400}}\\
 +Einfach aus der Liste den gewünschten WIO anstelle eines USB-Ports auswählen und Upload ausführen.\\
 +Wenn nach einem **Passwort** gefragt wird, ist das dasselbe, wie für den __**[[#grundeinstellung_mit_web-browser|Access Point]]**__ (Standard "12345678").\\
 +{{:arduino:wio-ota-display.png}} {{:arduino:ota-upload-en.png?600}}\\
 +
 +
 + \\
 +====OTA von Grund auf neu====
 +  * __**[[arduino:wio-setup-de#ota_von_grund_auf_neu|WIO mit OTA von Grund auf neu installieren]]**__
 +=====RIC - Fahrtregler=====
 +| **Hinweis:** RIC wird in der Firmware nicht mehr unterstützt und durch [[:arduino:wioctrl-en|WIO Control]] ersetzt.|
 +** 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)\\
 +{{ :arduino:ric-prototype.jpg?200}}
 +====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 beginnt sehr schnelles Blinken, solange die Batterie nicht vollständig entladen ist.\\
 +===Servererkennung===
 +Wenn beim Rocrail-Server R2RNet auf Multicast-Adresse 224.0.1.20 aktiviert ist, kann WIO den Servernamen / die IP-Adresse abrufen, um automatisch eine Verbindung zum Client-Port 8051 herzustellen.\\
 +
 + \\
 +=====WIO - I/O=====
 +  * Verbindet direkt mit dem Rocrail-Server-Client-Port 8051. Siehe **[[https://www.rocrail.info/viewtopic.php?p=207808#p207808|Forum-Beitrag]]**
 +  * Wiederherstellung von WiFi- und Server-Verbindung.
 +  * 32 Digital-I/O, MCP23017, kompatibel mit allen GCA-Schnittstellen.
 +    * Eingang
 +    * Ausgang
 +    * Block
 +    * Pulse
 +  * 100 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. (Blink-Ausgänge werden nicht bestätigt.)
 +  * Eingangs-Ereignisse müssen innerhalb 100ms bestätigt werden. Nach dieser Zeitüberschreitung werden sie erneut gesendet. (Max. 5 Wiederholungen.)
 + \\
 +====I/O Extender PCF8574P====
 +Bis zu 4 Stück I/O-Extender Typ PCF8574 können als Alternative zu 2 Stück von MCP23017 verwendet werden.
 +  - 0x20 und 0x21 sollten nicht als I2C-Slave-IDs verfügbar sein. (Keine MCP23017's installiert.)
 +  - Die Slave-ID's der PCF8574 müssen mit 0x22 beginnen.
 +
 +**Achtung:** //Prüfen ob der richtige Typ zur 0x20-Basisadresse passt: PCF8574P oder PCF857T. (Der Typ PCF8574A beginnt mit der Basisadresse 0x38.)//\\
 +
 +\\
 +====Adressierung====
 +|< >|
 +^ Rocrail ^ WIO ^
 +| Schnittstellenkennung | "WIO" |
 +| Node ID (Bus) | Kennung |
 +| Adresse | I2C-Port |
 +| Adresse | LED-Port |
 +| Adresse | Servo-Port |
 +Dieses Adressierungs-Schema wird verwendet für:
 +  * Ausgänge
 +  * Weichen
 +  * Signale
 +  * Rückmelder
 +
 +===Doppelspulen-Weichen===
 +| //__Deaktivieren__ der Optionen 'Einzel-Ausgang' und 'Zubehör', den Typ 'Ausgang' __aktivieren__.// |
 +Für Weichen mit mehr als einem Port wird die nächste Adresse für den Weichenbefehl verwendet. \\
 +Wenn sich also an Port 1 eine Doppelspulen-Weiche befindet, sollte Port 2 nicht verwendet werden. Die zweite Weiche geht dann an Port 3. \\
 +Beide I2C-Ausgänge werden automatisch als Typ 'p' Pulse verwendet. \\
 +Mögliche Hardware:
 +  * **[[:mgv76-de|GCA76]]**
 +  * [[:gca77-de|GCA77]]
 +  * [[:gca107-de|GCA107]]
 +
 +====Blinken====
 +Die Ausgangs-Blink- und Verzögerungs-Optionen können für Blinken eines I2C-Port verwendet werden.\\
 +Wenn die Verzögereung Null ist, wird die Standard-Pulslänge verwendet.\\
 + \\
 +====LEDs====
 +{{ :arduino:ws2812.jpg?200}}{{ :arduino:ws2811-chip.jpg?200}}
 +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/WS2811)
 +  - Schnittstelle -> Helligkeit setzt Helligkeit 
 +  - Schnittstelle -> Dimmen (0…15) setzt die Dimm-Schritte (Überblenden). Ein Wert von Null deaktiviert Dimmen.
 +Die Begriffs-Werte sind mit __**[[:rocnet:rocnetnode-led-de#signal-unterstuetzung|RocNetNode Pi08]]**__ kompatibel. (WIO version 0.81+)\\
 +
 +====Signale====
 +  - Schnittstelle -> WIO-Kennung: Bus
 +  - Schnittstelle -> Adresse setzt den LED-Offset 
 +  - Schnittstelle -> Port-Typ: Ausgang
 +  - Schnittstelle -> Steuerungs-Typ: Begriffs-Nummern 
 +Die Begriffs-Werte sind mit __**[[:rocnet:rocnetnode-led-de#signal-unterstuetzung|RocNetNode Pi08]]**__ kompatibel. (WIO version 0.81+)\\
 +\\
 +
 +====Charlieplexing Signal Support====
 +
 +Nur verfügbar auf [[:wio:wio03-io16-en|WIOesp32 16 I/O]], [[:wio:wiopico-io16-en|WIOpico 16 I/O]], WIOpico, [[:wio:wiopico-en|SIOpico]]\\
 +Ein Rocrail-Signal mit Steueraspekten und Porttyp-Multiplex verwendet 4 Pins, beginnend mit dem Port-Offset.\\
 +Die Wiederholfrequenz beträgt ca. 4000 Hz.\\
 +Aspektwerte werden aus der Registerkarte „Einzelheiten“ verwendet. Es werden 24 Bit verwendet, die oberen 12 Bit sind zum Blinken.\\
 +Beispiel: LED 1 und 2 an und LED 2 blinkend: 0x002003 -> Aspektwert = 8195 \\
 +
 +Ein zweites Signal am Mast kann in Rocrail mit Adresse + 100 definiert werden, um es mit dem Hauptsignal zu kombinieren.\\
 +
 +Helligkeit setzt Helligkeit, es können nur Werte zwischen 200-255 verwendet werden. Ein Wert < 200 wird auf 200 gesetzt.\\
 +Ein überblenden mit Dimmen ist nicht möglich.\\
 +
 +^ LED Nummber for Viessmann Multiplex Signal^^^^^^^^^
 +|LED|Pin+|Pin-|1|2|3|4|Viessmann| |
 +|1|1|2|H|L| | |Vr_Ge_O|Vorsignal  gelb  oben |
 +|2|1|3|H| |L| |Hp_Rt_R|Hauptsignal rot  rechts |
 +|3|1|4|H| | |L|Hp_Rt_L|Hauptsignal rot  links |
 +|4|2|1|L|H| | |Vr_Gr_O|Vorsignal  grün oben |
 +|5|2|3| |H|L| |Vr_Gr_u|Vorsignal grün unten |
 +|6|2|4| |H| |L| | |
 +|7|3|1|L| |H| |Hp_Ge|Hauptsignal gelb |
 +|8|3|2| |L|H| |Vr_Ge_U|Vorsignal gelb unten |
 +|9|3|4| | |H|L|Hp_Ws_L|Hauptsignal weiß links |
 +|10|4|1|L| | |H|Hp_Gr|Hauptsignal grün |
 +|11|4|2| |L| |H| | |
 +|12|4|3|||L|H|Hp_Ws_R|Hauptsignal weiß rechts |
 +
 +
 +Für eine korrekte Anzeige des Hauptsignals bei Rot und Rangieren muss das Vorsignal ausgeblendet werden. \\
 +Der Helligkeitswert im Haupt- und Vorsignal muss identisch sein. \\
 +
 +Multiplexeingänge von Viessmann, Ansicht von unten auf den Stecker. \\
 +{{:wio:viessmann-stecker.png?200|}}
 +
 + \\
 +====Servos====
 +{{ :arduino:servo.jpg?200}} {{ :arduino:servo-pwm.png?200}}
 +Die Adressierung ist die gleiche, wie bei normalen Ausgängen.\\
 +^ Steuerung ^ Ausgang ^ Weiche ^ Signal ^ Segment Drehscheibe ^ Bereich ^
 +| WIO | Schnittstellenkennung = "WIO" | Schnittstellenkennung = "WIO" | Schnittstellenkennung = "WIO" | Schnittstellenkennung = "WIO" | - |
 +| WIO-Kennung | Knoten-ID | Knoten-ID | Knoten-ID | Knoten-ID | 1...255 |
 +| Servo-Port | Adresse | Adresse | Adresse | Adresse | 1...4 |
 +| Zusätzliche Option | - | Einzel-Ausgang ON | - | - |
 +| Steuerung | - | - | Begriffs-Nummern | - | - |
 +| Position 1 | Parameter Ein | Parameter | Rot Begriff 0 **((Signal-Dialog, Registerkarte "Einzelheiten", Eingabedialog "Wert" mit {{:icons:threedotbutton.png?25}} öffnen. \\ Den Wert des Servowinkels im Dezimalfeld eingeben __und mit Enter bestätigen__.))** |  - | 0...180° |
 +| Position 2 | Parameter Aus | Wert | Grün Begriff 1 **((Signal-Dialog, Registerkarte "Einzelheiten", Eingabedialog "Wert" mit {{:icons:threedotbutton.png?25}} öffnen. \\ Den Wert des Servowinkels im Dezimalfeld eingeben __und mit Enter bestätigen__.))** |  - | 0...180° |
 +| Position | - | - | - | Decoder Gleisnummer | PWM 500...2500 ²|
 +| Geschwindigkeit | Verzögerung | Schaltzeit | Dimmen | Schrittverzögerung | 1...10 |
 +| Ziel | Port Typ "Servo" | Port Typ "Servo" | Port Typ "Servo" | Type wioservo | - |
 +² Achtung zu hohe oder niedrige Werte können den Servo beschädigen mit PWM 1500 = 0° beginnen.
 +
 +
 +  * **Hinweis:** Die Positions-Werte 0...180° werden als PMW-Werte (Duty Cycle) von 700...2300 µs ausgegeben. \\ Ggf. sind Winkelwerte an die Servo-Eigenschaften anzupassen.  
 + \\
 +====RFID====
 +{{ :arduino:wio-spi-rfid.jpg?240}}
 +|  //Sicherstellen, dass keine Servos und LEDs angeschlossen sind, wenn auf RFID umgestellt wird.//  |
 +Mit WIO Type I/O16 nicht möglich, hier bitte ID-12LA verwenden.
 +
 +  - Zwei 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 8266 / Lolin D32 ^ 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) |
 +\\
 +
 +====ID-12LA====
 +{{  :arduino:rfid-card-antenna.jpg?200}} {{  :arduino:id12la-pin6-led-taginrange.jpg?200}} \\
 +Optional kann ein RFID-Leser vom Typ [[http://id-innovations.com|ID-12LA]] an den RX-Stift angeschlossen werden, der Tags erkennen kann, die an Rocrail gemeldet werden.\\
 +Der Tag wird als **[[:sensor-gen-de#kennung|Rückmelder-Kennung]]** oder **[[:sensor-int-de#uid-name|UID-Name]]** verwendet, **[[:can-gc4-de#rfid-schreibweise|dezimal punkt-formatiert]]**.\\
 +Die **[[:gca_rfid-de|GCA-RFID-Platine]]** kann für Montage und Anschluss des ID-12LA verwendet werden.\\
 +__Der serielle Monitor wird auf 9600 Bit/s gesetzt.__\\
 +**Hinweis 1:** Dies ist für das Scannen von Tags zwischen den Schienen, um Rocrail wissen zu lassen, wo das fahrende Fahrzeug ist.\\
 +**Hinweis 2:** Tags verwenden, die schnell reagieren.\\
 +
 + \\
 +====Stifte I2C====
 +|< >|
 +^ Stift ^ Verwendung ^
 +| A0 | Spannungs-Überwachung |
 +| D1 | I2C SCL |
 +| D2 | I2C SDA |
 +| D4 | Eingebaute LED |
 +| D8 | LEDs (FastLED) |
 +
 +<html><!--
 +====Stifte native====
 +^ Stift ^ Verwendung ^
 +| A0 | Spannungs-Überwachung |
 +| D0...D7 | I/O-Ports an J1 |
 +| D8 | LEDs (FastLED) |
 +--></html>
 +
 +====Stifte S88====
 +|< >|
 +^ ESP8266 ^ ESP32 ^ PicoW ^ Verwendung ^
 +| D0 | 12 | 10 | PS |
 +| D5 | 17 | 11 | Reset |
 +| D6 | 26 | 12 | Takt |
 +| D7 | 27 | 13 | Daten |
 +
 + \\
 +
 +
 +====Display SSD1306/SH1106====
 +|{{:arduino:wio-oled-128x32.jpg?0x160}}|{{:arduino:f8.jpg?0x160}}|
 +|  Beispiel.  |  {f8} auf einem SH1106 Display.  |
 +An I2C können zwei Displays vom Typ SSD1306 mit den I2C-Adressen 0x3C und 0x3D angeschlossen werden.\\
 +Formatierter Text ist mit **[[:rocnet:rocdisplay-en#text_format|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.\\
 +===Multiplexing===
 +Bis zu 16 Displays können mit **[[:wio:wio-displaymultiplex-en|Display-Multiplexing]]** (en) verwendet werden.\\
 +===Unterstützte Formatierung===
 +Formatierungsbefehle sind in geschweiften Klammern eingeschlossen.
 +Beispiel des Lösch-Befehls:
 +<code>
 +{g1}{E}{L0}{X0}Hello World!{P}
 +</code>
 +|< >|
 +^ Befehl ^ Parameter ^ Beschreibung ^ Hinweis ^
 +| {B#} | #=0-99999999 | Liest eine AMP-Datei, "#.amp", von SPIFFS und zeichnet die Bitmap an der aktuellen Position. |
 +| {B'//name//'} oder {B[name]} | AMP-Datei //name// | Liest eine AMP-Datei, "//name//.amp", von SPIFFS und zeichnet die Bitmap an der aktuellen Position. | Der Name muss zwischen eckigen Klammern((für Rocview bevorzugt)) oder einfachen Anführungszeichen stehen. |
 +| E | - | Lösche Display-Puffer. Ein zusätzliches {P} wird für das Löschen des Display benötigt. |
 +| {F#} | #=0-2 | Font-Auswahl. 0=7x5 1=6x5w 2=6x5n | Font 5x5 wird nicht unterstützt, weil es nicht lesbar ist. |
 +| {H#} | #=0-255 | Setzt den Display-Kontrast. |
 +| {I#} | #=0-1 | Invertiert das Display. 0=normal 1=invertiert |
 +| {L#} | #=0-3 | Gehe zur Zeile. Der Bereich ist von der Displaygröße abhängig. (Y = L * 8) |
 +| P | - | Puffer zum Display kopieren | 
 +| {R#} | #=0,2 | Legt die Drehung der Anzeige fest. 0=0° 2=180° | Siehe auch **[[:arduino:wio-setup-de#display|Display Konfiguration]]** | 
 +| {?V} | - | Zeige Firmware-Version. |
 +| {X#} | #=0-127 | Gehe zur Spalte. Der Bereich ist von der Displaygröße abhängig. |
 +| {Y#} | #=0-32 | Gehe zur Reihe. Der Bereich ist von der Displaygröße abhängig. |
 +^ Neue Befehle ^ Parameter ^ Beschreibung ^
 +| {c#} | #=1-16 | Zeichnet eine Analog-Uhr mit dem angegebenen Radius an der aktuellen Position. | Nur eine (Modellzeit)-Uhr je Display wird aktualisiert. |
 +| {g#} | #=0,**1**,2,3 | Setzt die Display-Geometrie. 0=96x16, 1=128x32, 2=128x64, 3=SH1106 ​(1 ist Standard) | Dies dient nur zu Testzwecken. Um CPU-Last zu sparen, die Option **[[#monitor-befehle|display]]** setzen. \\  Siehe auch **[[:arduino:wio-setup-de#display|Display Konfiguration]]** |
 +| {i} | - | Invertierten Text umschalten. |
 +| {s#} | #=1-x | Zeichnet Lauftext mit einer Anzeige-Breite von # Zeichen an der aktuellen Position. | Beispiel: {s12}Scrolling text to show...{s} |
 +| {d} | - | Eine Textzeile herunterscrollen. |
 +| {f#} | #=1-2 | 7-Segment-Modellzeituhr. | Nur eine (Modellzeit)-Uhr je Display wird aktualisiert. |
 +| {f7} | - | Benutzerdefinierte Modellzeituhr. Benötigte Dateien: ''0.amp...9.amp'' und ''colon.amp'' | Beispieldaten: {{:arduino:f7.zip}} \\ Max. Dateigröße ist 1024 Bytes pro ''amp''. \\ ''DISPLAY_FASTCLOCK'' muss in der ''USERCNF.h'' auf ''true'' gesetzt sein. |
 +| {f8} | - | wie {f7} aber mit führender Null. | Beispiel: 08:22 anstatt von 8:22|
 +| {p} | - | Displays wechseln. |
 +| {l#,#} | - | Zeichnet eine Linie von X,Y nach #,# |
 +| {r#,#} | - | Zeichnet ein Rechteck links oben X,Y nach rechts unten #,# |
 +| {z#} | - | Zeichnet einen Kreis mit Mittelpunkt und Radius # |
 +| {x#,#} | - | Zeichnet ein Pixel an #,# |
 +| {+} | - | [[:arduino:wio-ampchar-en|Verwendet große Zeichen vom Datei-System.]] | Die Zeichen sind auf dem Datei-System im "amp"-Format. Beispiel: ''3.amp'' |
 +| {-} | - | Große Zeichen beenden. |
 +
 +**Hinweis:** //Wenn die Geometrie nicht standardmäßig ist, 128x32, **MUSS** der Text mit einem {gn}-Befehl beginnen, damit die richtige Geometrie ausgewählt wird.//\\
 +
 + \\
 +
 +====7-Segment Display HT16K33 ====
 +{{ :arduino:adafruit-ht16k33.jpg?200}}
 +//Modellzeit-Uhr//\\
 +Das Adafruit-breakout-board HT16K33 wird auf I2C-Adresse 0x70 unterstützt.\\
 +Es zeigt abwechselnd Uhrzeit, Datum und Temperatur.\\
 +Mit der USERCNF.h-Einstellung ''NTP_CLOCK'' wird der ''pool.ntp.org''-Dienst verwendet, um die Tageszeit anstelle der Zeit vom Rocrail-Server zu erhalten. Dabei wird nicht zwischen Datum und Temperatur gewechselt.\\
 + \\
 +
 +====DCC-Generator====
 +{{ :arduino:pulseview-wio-dcc.jpg?400}}
 +=== WIO unterstützt folgende DCC-Pakete ===
 +  * Lok-Geschwindigkeit und -Fahrtrichtung. (14 Fahrstufen werden nicht unterstützt.)
 +  * Lok-Funktionen 0 - 32.
 +  * PoM schreiben/lesen. (Für PoM lesen wird ein RailCom-Detektor, GCA214, benötigt.)
 +  * Zubehör
 +  * BinState
 +  * Programmiergleis; Service-Modus. (Es ist eine zweite H-Brücke erforderlich: __**[[:gca:wioprog2-en|WIO-Prog2]]**__)
 +    - Globale Gleisspannung muss EIN sein.
 +    - PT muss auf EIN gestellt sein.
 +    - Lesen/Schreiben CV
 +  * Lok-Adressen >= 100 gelten als Lange Addressen.
 +  * Die Kurzadresse 111 wird als Dummy verwendet, um andere Decoder zu veranlassen, ihre Adresse zu senden.
 +
 +===Eigenschaften===
 +  * 100% NMRA Timing-konform.
 +  * Automatisch Gleisspannung AUS nach einem Verbindungsverlust zum Rocrail-Server.
 +  * Zeigt Aktivität auf einem Display, wenn eines angeschlossen ist.
 +  * 48 Slot Aktualisierungs-Stapel mit automatischer Bereinigung.
 +  * 12fach Zubehör-Befehlswarteschlange.
 +===Stifte DCC===
 +|< >|
 +^ Stift ^ Verwendung ^ Hinweis ^
 +| D6 & D7 | Symmetrisches DCC-Signal. |
 +| D5 | H-Brücke 1 aktivieren | Betrieb |
 +| D8 | H-Brücke 2 aktivieren | Service |
 +
 +===ORD3===
 +Zur Verwendung des 3,3V-Pegels muss parallel zum R1 ein 470Ω-Widerstand hinzugefügt werden.\\
 +===Mobil-Adressierung===
 +|< >|
 +^ Schnittstellenkennung | WIO | Bemerkung |
 +^ Node ID (Bus) | WIO-Kennung |
 +^ Adresse | DCC-Decoder-Adresse. | Adressen > 99 werden als lange DCC-Adressen berücksichtigt. |
 +^ Fahrstufen | 28 oder 128 |
 + \\
 +====Mobil====
 +Verwendet den WIO als Mobil-Decoder.\\
 +Der Lokomotiven-__**[[:loc-int-de#bus|Bus]]**__-Wert muss auf die WIO-Kennung gesetzt sein.\\
 +Die Anzahl der __**[[:loc-int-de#fahrstufen|Dekoder-Fahrstufen]]**__ muss im Bereich von 50 bis 100 eingestellt sein.\\
 +===Stifte LOLIN D1===
 +{{  arduino:lipo3s-measure-.png?240}}
 +|< >|
 +^ Stift ^ Verwendung ^ H-Brücke ^ Bemerkung ^
 +| D0 | Licht vorne | | Kabine 1 |
 +| D3 | Licht hinten | | Kabine 2 |
 +| D5 | Motor-Aktivierung | ENA | RC ESC((**R**emote **C**ontrol - **E**lectronic **S**peed **C**ontroller \\ = Elektronik-Fahrtregler aus dem Modellbau-Bereich)) Servo-PWM |
 +| D6 | PWM für Vorwärts-Richtung | IN 1 | |
 +| D7 | PWM für Rückwärts-Richtung | IN 2 | |
 +| D8 | Servo-PWM für Entkuppler | | F1 |
 +| I2C 1-32 | Funktionen 1 bis 32 | | |
 +| A0 | Batterie-Monitor LiPo 3S | | + 100kΩ A0 32kΩ - |
 +Beschleunigung/Abbremsen kann mit dem Lok-Schnittstellen-Parameter __**[[:loc-int-de#masse|Masse]]**__ simuliert werden. (10ms Auflösung.)\\
 +Ein Masse-Wert von 5 erhöht/verringert die PWM alle 5 x 10 ms um 1 Schritt.\\
 +Vstart und Vhigh, CV2/CV5, können mit dem __**[[:loc-int-de#fahrstufenbereich|Fahrstufenbereich]]**__ simuliert werden.\\
 +===Electronic Speed Controller===
 +Ein **E**lectronic **S**peed **C**ontroller, ESC, an Stift D5 kann auch zur Steuerung des Motors verwendet werden, wenn diese Option auf Eins gesetzt ist.\\
 +Hinweis: __**Nur Masse und PWM anschliessen, falls der ESC einen [[https://de.wikipedia.org/wiki/Battery_Eliminator_Circuit|Battery Eliminator Circuit]] unterstützt.**__\\
 +
 + \\
 +====RailCom====
 +{{ :arduino:railcom_cutout.jpg?400}}
 +Der serielle Anschluss auf der WIO-Platine kann verwendet werden, um einen Verstärkers für das Lesen von RailCom-Daten anzuschliessen.\\
 +Der **[[:GCA214-de|GCA214]]** kann als Verstärker verwendet werden.\\
 +Folgende RailCom-Kennungen werden unterstützt:\\
 +|< >|
 +^ Kennung ^ Kanal ^ Beschreibung ^
 +|  0  |  2  | POM lesen |
 +|  1  |  1  | Dekoder Low-Adresse |
 +|  2  |  1  | Dekoder High-Adresse |
 +Der einzige Weg RailCom-Lesen in WIO zu aktivieren, ist das Setzen dieser Option im WIO-Dialog. (WIO 0.105, Rocrail 2.1.212)\\
 +Die serielle Geschwindigkeit wird auf 250000 bit/s gesetzt und der Monitor kann nur lesen. __Daher ist es bei aktivieren dieser Option nicht möglich, WIO mit Monitor-Befehlen einzustellen.__\\
 + \\
 +====Sensoren====
 +{{ :arduino:bmp280.jpg?140}}{{ :arduino:tsl2591.jpg?140}}
 +Ein an I2C angeschlossener BME280/BMP280-Sensor wird für Temperatur, Luftdruck und Feuchtigkeit unterstützt.\\
 +Für korrekte Druckwerte muss die USER_ALTITUDE in der USERCNF.h auf die lokale Höhe eingestellt werden.\\
 +Ein an I2C angeschlossener TSL2591 'Light-to-Digital Converter' (Digitaler Lichtsensor) wird zur Berechnung der Helligkeit unterstützt.\\
 +
 +===Dynamischer Text===
 +Temperatur, Luftdruck und Feuchtigkeit können als Text in XMLScript-Variablen verwendet werden.\\
 +Siehe: __**[[:text-gen-de#dynamischer_text|Dynamischer Text]]**__ \\
 + \\
 +
 +====Sound====
 +Sound kann auf ESP32-Baugruppen durch Verwenden eines der DAC((**D**igital-**A**nalog-**C**onverter))-Stifte (GPIO25 oder GPIO26) abgespielt werden.\\
 +Der ''USER_SOUND'' in der ''USERCNF.h'' muss auf ''true'' gestellt sein:
 +<code>
 +// Sound
 +#define USER_SOUND          true
 +</code>
 +
 +Unterstütztes [[https://de.wikipedia.org/wiki/RIFF_WAVE|RIFF-Wave]]-Format:
 +  * PCM-Typ
 +  * Sample-Rate 11.025 Hz
 +  * 16 Bit-Samples
 +  * Ein Kanal (Mono)
 +===Aktion===
 +  * Typ: Sound
 +  * Befehl: Play
 +  * Parameter: Sound-Datei inkl. Pfad, wie: "/F9.wav"
 +  * Schnittstellen-Bus: WIO-Kennung (ID)
 +Beispiel:
 +<code xml>
 +<ac id="F9" cmd="play" param="/F9.wav" type="sound" iid="WIO" bus="38" addr="0" port="0"/>
 +</code>
 +===Empfehlungen===
 +Der DAC ist nur in der Lage, 8 Bits zu verwenden. Die 16-Bit-Daten müssen interpretiert werden, was nicht ohne Datenverlust möglich ist.\\
 +Um das beste Ergebnis zu erhalten:
 +  * Die Sound-Dateien normalisieren, so daß die vollen 16 Bit verwendet werden.
 + \\
 +
 +====Schritt-Motor====
 +Der WIO-02 unerstützt zwei Typen von Schritt-Motoren: 4-Darht- und 3-Draht-Stepp-Treiber.\\
 +{{ :arduino:stepmotor-4wire.jpg?0x200}}{{ :arduino:stepmotor-3wire.jpg?0x200}}
 +|< >|
 +^ WIO-02 ^ 4-Draht ^ 3-Draht ^ Hinweis ^
 +| 32 | IN1 | CLK+ |
 +| 13 | IN2 | DIR+ |
 +| 2 | IN3 | ENABLE+ |
 +| 15 | IN4 | - |
 +| 25     | -   | | Hall/Reed-Kalibrier-Sensor *| 
 +| EP1-1   | GND | CLK-,DIR-,ENABLE- |
 +| -       | VCC | 12 - 45V DC | Externe Stromversorgung |
 +
 +* Der Kalibrier-Sensor sollte möglichst nahe des Gleises 0 installiert werden.
 +
 +
 +===Drehscheiben-Einstellung===
 +|< >|
 +|  Drehscheibe Schnittstelle  ||
 +^ Feld ^ Wert ^ Hinweis ^
 +| Knoten-ID | WIO-02 ID | |
 +| Adresse | 1 | //fest// |
 +| Beleuchtungen  | 1...32 | Optionale Beleuchtung der Brücken-Kabine. \\ Digitaler Ausgangs-Port auf demselben WIO-02. |
 +| Fahrstufen | 0-16777215 | Anzahl der Schritte für eine 360°-Drehung. \\ Im Fall eines 28BYJ-48: 4096 Schritte. |
 +| Korrektur | 0-255 | Zum Ausgleich des Getriebespiels. |
 +| Schrittverzögerung | 0-255 | Schrittgeschwindigkeit \\ Je höher der Wert \\ umso geringer die Geschwindigkeit |
 +| Offset | -32767...+32767 | Kalibrierungs-Korrektur in Schritten. |
 +| Typ | wio |
 +| Drehgeschwindigkeit | 1-10 | Größe der Start- und Verzögerungsrampe |
 +//Die Anzahl der Schritte für eine Drehscheiben-Drehung wird zur Berechnung des kurzen Weges benötigt.//\\
 + \\
 +|< >|
 +|  Drehscheibe Gleise \\ (Beispiel 4096 Schritte)  ||
 +^  Gleis  ^  Dekoder-Gleis  ^
 +|  0  |  0  |
 +|  12  |  1024  |
 +|  24  |  2048  |
 +|  36  |  3072  |
 +
 +XML-Beispiel: (Nur unbedingt notwendige Angaben sind gelistet.)
 +<code xml>
 +  <tt ori="west" id="tt1" x="11" y="4" z="0" pos="0" iid="RCAN-1" bus="102" addr="1" type="wio" decsteps="4096">
 +    <track nr="0" decnr="0"/>
 +    <track nr="12" decnr="1024"/>
 +    <track nr="24" decnr="2048"/>
 +    <track nr="36" decnr="3072"/>
 +  </tt>
 +</code>
 +
 +
 +=== Ausgangs-Einstellung ===
 +
 +|< >|
 +|  Schnittstelle  ||
 +^ Feld ^ Wert ^ Hinweis ^
 +| Knoten-ID | WIO ID | |
 +| Adresse | 1 | //fest// |
 +| Parameter Ein | 0-16777215 | Anzahl der Schritte gegen den Uhrzeigersinn |
 +| Parameter Aus | 0-16777215 | Anzahl der Schritte im Uhrzeigersinn |
 +| Verzögerung | 0-255 | Schrittgeschwindigkeit \\ Bei einem Wert >0 wird eine Anfahr- und Bremsrampe generiert.  |
 +| Typ | Motor |
 +
 +Eine Kalibrierung ist nicht möglich!
 +
 +====CAN====
 +{{ :arduino:gc2a-wio-can.jpg?400}}
 +Der WIO-CAN-Typ kann als CAN-WiFi-Brücke verwendet werden für: 
 +  * [[:mbus:cs3-de#kommunikations-typ|MBUS, Typ TCP an Port 5550]]
 +  * RCAN, Type TCP+Binary an Port 5550.\\
 +====MCP2515====
 +Stift-Zuordnung für das Verwenden des SPI MCP2515(16MHz) am __**[[:can-gca2a-de|GC2a]]**__:
 +|< >|
 +^ Name ^ Nano ^ Lolin D1 Mini ^ Lolin D32 ^ Hinweis ^
 +| GND | GND | GND | GND | Ground |
 +| 5V | 5V | 5V | 5V(USB) | |
 +| CS | D10 | D3 | GPIO14 | Chip Select |
 +| MOSI | D11 | D7 | GPIO23(MOSI) | Master Output, Slave Input |
 +| MISO | D12 | D6 | GPIO19(MISO) | Master Input, Slave Output |
 +| SCK | D13 | D5 | GPIO18(SCK) | Serial Clock |
 +
 +Der Lolin D1 Mini muss an 5V-USB ohne Stromversorgung vom CAN-Bus angeschlossen sein.\\
 +Es wird ein WIO-CAN-Bausatz verfügbar sein.\\
 +
 +====ESP32====
 +Die aktuelle WIO-Firmware, 1.94, verwendet den internen CAN-Controller und nutzt dafür nur den MCP2551/2561. (SPI CAN wird für MCP2515 nicht mehr unterstützt.)\\
 +Im Fall von ESP32 wird die CAN-Kommunikation immer aktiviert, unabhängig, welcher WIO-Typ ausgewählt ist.\\
 +|< >|
 +^ Anschluss ^ ESP32 Stift ^ MCP2561 ^
 +| TXCAN  |  16 |  1 |
 +| RXCAN  |   4 |  4 |
 +
 + \\
 + \\
 +=====Mobil ​RFID-Leser=====
 +Der WIO kann auch als mobiler RFID-Leser und I/O verwendet werden.\\
 +Die WIO-Kennung muss in dem **[[:loc-int-de#zweite_adresse|zweiten Adress]]**-Feld eingestellt werden.\\
 +
 +====Rückmelder-Einstellung====
 +<code>Loco [ICE-CAM] reports RFID event 56:101 [4.102.181.114.9.64.128] ON</code>
 +Die gemeldete RFID muss zu einer __**[[:sensor-gen-de#kennung|Rückmelder-Kennung]]**__ in Rocrail passen.\\
 +Der Rückmelder muss in Rocrail eine eindeutige Adresse ungleich Null haben.\\
 +Die Kennung muss in dieser __**[[:can-gc4-de#rfid-schreibweise|RFID-Schreibweise]]**__ eingestellt sein.\\
 +Für das Kopieren dieser Kennung können die Rocrail-Traces oder der __**[[:sensormon-de|Rückmelder-Monitor]]**__ verwendet werden.
 + \\
 +====Funktion-Einstellung====
 +Um Funktionen an den WIO zu übergeben, muss die Funktion mit **[[:loc-fun-de#adresse_fx|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====
 +  * https://gitlab.com/rocrail/Arduino/tree/master/WIO/hardware
 +
 +//Die veröffentlichte Hardware sind Prototypen, unvollständig und nicht zur Veröffentlichung bereit. \\
 +Es werden nur Original-GCA-Bausätze unterstützt.//
 +
 +  * https://wiki.rocrail.net/doku.php?id=gca:gca-index-de
 +
 +\\
 +===== Fehlersuche =====
 +|< >|
 +|  Oberseite  ||  Unterseite  ||
 +|  LOLIN D1 mini  |  Wemos mini  |  LOLIN D1 mini  |  Wemos mini  |
 +| {{:arduino:d1-top.jpg?0x300}} || {{:arduino:d1-bottom.jpg?0x300}} ||
 +
 +|< >|
 +^ Stift ^ Lolin ^ Wemos ^
 +|  D3  |  -  | Wird nicht starten, falls "Low". |
 +
 +==== Sehr langsam ====
 +Wenn I2C-Module wie Pi02 oder Pi03 an den I2C-Bus des WIO angeschlossen sind und keine Stromversorgung haben, verlangsamt dies die Verarbeitung und es werden keine anderen I2C-Geräte erkannt. (Mehrere Sekunden zwischen den Aufruf-Wiederholungen.) \\
 +Der I2C-Bus-Extender P82B715 scheint die I2C-Takt- und Datenleitungen zu belasten, was die Interrupt-Routine in der Wire-(I2C)-Bibliothek irritiert. \\
 +Der Pi08 hat mit dem PCA9622-Chip und dessen internem I2C-Bus-Extender dieses Problem nicht. \\
 +=== Lösung ===
 +Sicherstellen, dass zeitgleich mit dem WIO auch alle angeschlossenen I2C-Module eingeschaltet sind. \\
 +
 +====macOS "Big Sur"====
 +===Upload tool ESP8266===
 +  * https://forum.arduino.cc/index.php?topic=702144.0
 +
 +===Upload tool ESP32===
 +  * https://github.com/espressif/esptool/issues/540
 +
 +
 +
 +=====Programmieren WIO-Binary mit Arduino IDE-Tools=====
 +|< >|
 +|  Arduino IDE 1.8.16  |
 +
 +====macOS "Big Sur"====
 +===ESP8266===
 +<code>
 +export WIOBIN=~/Downloads/WIO.ino.d1_mini.bin
 +
 +/Users/$USER/Library/Arduino15/packages/esp8266/tools/python3/3.7.2-post1/python3 \
 +/Users/$USER/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.1/tools/upload.py \
 +--chip esp8266 --port /dev/cu.usbserial-110 --baud 921600 --before default_reset --after hard_reset write_flash 0x0 $WIOBIN
 +</code>
 +===ESP32===
 +<code>
 +~/Library/Arduino15/packages/esp32/tools/esptool_py/3.1.0/esptool \
 +--chip esp32 \
 +--port /dev/cu.usbserial-01B9FA0C \
 +--baud 921600 \
 +--before default_reset \
 +--after hard_reset write_flash \
 +-z \
 +--flash_mode dio \
 +--flash_freq 80m \
 +--flash_size 4MB \
 +0x10000 WIO.ino.d1_mini32.bin
 +</code>
 +
 +
 +
 +====Windows 10====
 +<code>
 +set WIOBIN=\Users\%USERNAME%\Downloads\WIO.ino.d1_mini.bin
 +
 +C:\Users\%USERNAME%\AppData\Local\Arduino15\packages\esp8266\tools\python3\3.7.2-post1/python3 -I C:\Users\%USERNAME%\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2/tools/upload.py --chip esp8266 --port COM3 --baud 921600 --before default_reset --after hard_reset write_flash 0x0 %WIOBIN%
 +</code>
 +
 +====PiOS-64 "Buster"====
 +<code>
 +export WIOBIN=/home/$USER/Downloads/WIO.ino.d1_mini.bin
 +
 +/home/$USER/.arduino15/packages/esp8266/tools/python3/3.7.2-post1/python3 -I /home/$USER/.arduino15/packages/esp8266/hardware/esp8266/3.0.2/tools/upload.py --chip esp8266 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash 0x0 $WIOBIN 
 +</code>
 +
 +
 +