PlatformIO-Projekt für ein ESP32 DevKitC V4 mit ESP32-WROOM-32 und Arduino-Framework. Die Ausgänge steuern über Optokoppler die bereits im VXR-9000 programmierten CW-Nachrichten.
| Funktion | DevKitC-Header | ESP32-GPIO | VXR-9000 DB25-Pin | Signal am ESP32 |
|---|---|---|---|---|
| Türkontakt innen | J2-7, IO32 | 32 | – | LOW = geschlossen, HIGH = offen |
| Türkontakt außen | J3-12, IO16 | 16 | – | LOW = geschlossen, HIGH = offen |
VXR-9000 TX_ATT | J3-11, IO17 | 17 | 5 bl | LOW = Sender aktiv |
| VXR-9000 PIO-2 → „INNEN“ | J2-9, IO25 | 25 | 17 ge | HIGH = Optokoppler EIN, PIO nach GND |
| VXR-9000 PIO-1 → „AUSSEN“ | J2-10, IO26 | 26 | 18 gn | HIGH = Optokoppler EIN, PIO nach GND |
| VXR-9000 PIO-3 → „DB0SL“ | J2-11, IO27 | 27 | 16 ws | HIGH = Optokoppler EIN, PIO nach GND |
| VXR-9000 GND | 1,14,20 sw | GND | ||
| VXR-9000 +12V | 2 rt | 13,8V vom VXR-9000 |
Die Eingangskanäle OK1–OK3 des Schaltplans haben je einen 470-Ω-Vorwiderstand an 5 V und einen 10-kΩ-Pull-up des Transistorausgangs nach 3,3 V. Türkontakt geschlossen bzw. aktives TX_ATT ziehen den zugehörigen GPIO auf LOW.
Die Ausgangskanäle OK1–OK3 sind im Schaltplan als PC814 mit bidirektionalen Eingangs-LEDs vorgesehen. GPIO HIGH treibt über 470 Ω eine LED gegen GND; der Transistor verbindet den VXR-PIO-Pin mit GND. Die Widerstandsnetzwerke auf der VXR-Seite werden entfernt.
Die drei PIO müssen am Funkgerät als Eingänge für die passenden CW-Nachrichten konfiguriert sein.
Im vorliegenden Schaltplan sind ESP32-GND, Optokoppler-GND und VXR-GND miteinander verbunden. Die Optokoppler bewirken hier deshalb keine galvanische Trennung zwischen ESP32 und Funkgerät. Das DevKitC darf entweder über USB oder über seinen 5-V-Pin versorgt werden; Espressif warnt vor gleichzeitiger Speisung über mehrere Versorgungswege.
DOOR_REPEAT_INTERVAL_MS erneut angefordert (Vorgabe: 30 000 ms). Beide Türen haben getrennte Timer; bei gleichzeitiger Öffnung wechseln sich die Ansagen ab. Ist TX_ATT aktiv, wartet der Controller und fasst ausstehende Wiederholungen je Tür zusammen.RELAY_ID_INTERVAL_MS einstellbare Intervall für die Relaiskennung (Vorgabe: 10 Minuten). Bei erneuter Öffnung wird eine ausstehende Kennung verworfen.TX_ATT und auf mindestens 500 ms Sendepause, bevor die nächste Anforderung ausgegeben wird. Wird TX_ATT innerhalb von 10 s nicht aktiv, meldet der serielle Monitor eine Warnung.tuerstatus wird ein retained JSON-Payload veröffentlicht, zum Beispiel {„innen“:„offen“,„aussen“:„geschlossen“}. Das geschieht nach jeder entprellten Statusänderung, nach MQTT-Wiederverbindung und spätestens nach MQTT_STATUS_INTERVAL_MS bei bestehender Verbindung (Vorgabe: 10 Minuten). Während einer Netzstörung wird der letzte aktuelle Zustand nach Wiederverbindung veröffentlicht. Diese MQTT Nachrichten werden auf der DB0SL Webseite („Sensoren“) angezeigt.millis() verwaltet; es gibt kein delay().WIFI_MAX_ATTEMPTS erfolglosen Versuchen (Vorgabe: 20; etwa fünf Minuten) startet das Board neu und beginnt die Versuche erneut. Ein erneutes WiFi.begin() während eines laufenden Verbindungsversuchs wird vermieden.MQTT_MAX_ATTEMPTS fehlgeschlagenen Verbindungsversuchen (Vorgabe: 20) startet das Board neu. Der TCP-Verbindungsversuch ist auf 3 Sekunden, der MQTT-Leseversuch auf 2 Sekunden begrenzt. Nach erfolgreicher Verbindung wird der aktuelle Türstatus sofort erneut auf tuerstatus veröffentlicht. Während eines PIO-Impulses beginnt kein neuer MQTT-Verbindungsversuch.WATCHDOG_TIMEOUT_MS stehen (Vorgabe: 30 Sekunden, mindestens 10 Sekunden), startet der ESP32 neu. Nach dem Neustart liest der Controller die Eingänge neu und setzt die Ausgänge zunächst auf LOW.include/config.h das WLAN-Passwort bei WIFI_PASSWORD eintragen.WIFI_SSID ist DB0SL-WlanMQTT_HOST ist 192.168.144.21MQTT_USER und MQTT_PASSWORD bleiben leerDOOR_REPEAT_INTERVAL_MS, RELAY_ID_INTERVAL_MS, MQTT_STATUS_INTERVAL_MS sowie optional WATCHDOG_TIMEOUT_MS, WIFI_MAX_ATTEMPTS und MQTT_MAX_ATTEMPTS können dort angepasst werden; Intervalle sind in Millisekunden, die Verbindungsgrenzen sind Anzahlen../build.sh build kompilieren und linken../build.sh all bauen, auf das ESP32 DevKitC V4 flashen und anschließend den seriellen Monitor mit 115200 Baud öffnen.