Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Übersetzungen dieser Seite:



DB0SL Doku


Veranstaltungen: Fieldday Juli 2025


Mast: Übersicht
Hütte: Übersicht


LoRa APRS/Meshcore/MeshCOM: db0sl_ausbau.pdf
Übersicht


Netzwerk und Rechner:
DB0SL Netzwerk und Rechner
Controller-Alt
Controller-Neu


KW Web RX: Übersicht


Digitalfunk: Übersicht


FM-Funknetz: Übersicht


2m-Relais: 2m Relais

de:netzwerk:controllerneu

Controller, neuer Zustand

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.

Pinbelegung

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.

Verhalten

  • Beim Einschalten wird der aktuelle Türstatus gelesen. Eine offene Tür löst sofort eine Ansage aus.
  • Solange eine Tür offen bleibt, wird ihre Ansage alle 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.
  • Beim Schließen einer Tür verfallen noch ausstehende Ansagen dieser Tür. Sind beide Türen geschlossen, beginnt das über RELAY_ID_INTERVAL_MS einstellbare Intervall für die Relaiskennung (Vorgabe: 10 Minuten). Bei erneuter Öffnung wird eine ausstehende Kennung verworfen.
  • Jede PIO-Anforderung ist ein 250-ms-Impuls. Danach wartet der Controller auf 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.
  • Auf 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.
  • Die Türkontakte werden 40 ms entprellt. Alle laufenden Zeiten werden mit millis() verwaltet; es gibt kein delay().

Betriebssicherheit und Fehlersuche

  • Das WLAN wird beim Start eingerichtet. Bei Verbindungsverlust versucht der Controller alle 15 Sekunden eine Wiederverbindung. Nach 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.
  • Bei unterbrochener MQTT-Verbindung wird alle 5 Sekunden erneut verbunden. Nach 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.
  • Ein Task-Watchdog überwacht den Programm-Loop. Bleibt er länger als 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.
  • Der serielle Monitor (115200 Baud) zeigt den Neustartgrund einschließlich eines durch WLAN oder MQTT ausgelösten Neustarts, den Watchdog-Status sowie die Verbindungsversuche. Für eine Vor-Ort-Prüfung WLAN oder Broker kurz abschalten und die Wiederverbindung sowie die erneute MQTT-Meldung beobachten.

Konfiguration und Bedienung

  1. In include/config.h das WLAN-Passwort bei WIFI_PASSWORD eintragen.
  2. WIFI_SSID ist DB0SL-Wlan
  3. MQTT_HOST ist 192.168.144.21
  4. Der lokale Broker verwendet keine Anmeldung; MQTT_USER und MQTT_PASSWORD bleiben leer
  5. DOOR_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.
  6. Mit ./build.sh build kompilieren und linken.
  7. Mit ./build.sh all bauen, auf das ESP32 DevKitC V4 flashen und anschließend den seriellen Monitor mit 115200 Baud öffnen.
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
de/netzwerk/controllerneu.txt · Zuletzt geändert: 2026/09/21 21:31 von kurt

Seiten-Werkzeuge