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


KW Web RX: Übersicht


Digitalfunk: Übersicht


FM-Funknetz: Übersicht


2m-Relais: 2m Relais

de:netzwerk:controller

Controller, alter Zustand

Tür-offen Überwachung

die Türen haben einen Schleifkontakt: Tür-offen: Kontakt ist zu.

Die Kontakte hängen an +12V und wenn sie geschlossen sind versorgen sie je einen Zeitgeber (Multivibrator mit ein paar Sekunden Zykluszeit).

Diese beiden Multivibratoren haben ein Relais, welches alle paar Sekunden auf und zu geht. Dieses Relais steuert programmierbare Eingänge des VXR9000 an: Es verbindet den EXT PTT Anschluss sowie die prog.IOs 2(Innentüre) und 1(Außentüre) mit GND (über einen Schutzwiderstand)

Relais Kennung

Für die CW-Kennung gibt es noch eine Zusatzschaltung. Ist die Außentüre geschlossen, so ist diese RC Schaltung über den Ruhekontakt des Relais aktiv. Damit soll das Relais alle ca. 10min getriggert werden um die CW-Kennung abzuspielen.

Wenn die Außentüre geöffnet wird so schließt ein Relais und diese RC Schaltung geht außer Betrieb.

Controller, NEU

Versorgung: 12 Volt

Inputs:
Türkontakt innen, Türkontakt außen (das sind potentialfreie Schaltkontakte, geschlossen = Türe ist zu)
TX_ATT (open drain), geht auf GND wenn das VXR9000 sendet.

Die Inputs gehen über Optokoppler. Es findet keine Invertierung statt.

Outputs:
VXR9000 PIO-2 (5V kompatibel): auf GND legen triggert das Aussenden des Morsecodes „INNEN“
VXR9000 PIO-1 (5V kompatibel): auf GND legen triggert das Aussenden des Morsecodes „AUSSEN“
VXR9000 PIO-3 (5V kompatibel): auf GND legen triggert das Aussenden des Morsecodes „DB0SL“, also die Relaiskennung

Die Outputs gehen über Optokoppler. Es findet eine Invertierung statt, also: GPIO: High bedeutet Optokoppler zieht den Ausgang gegen GND.

Funktion:

  1. bei beiden geschlossenen Türen soll alle 10 Minuten die Relaiskennung gesendet werden
  2. Türe innen ist offen: sende „innen“
  3. Türe außen ist offen: sende „aussen“

zusätzlich sende bei Statusänderung oder alle 10 Minuten eine MQTT Message
Topic: db0sl/tuerstatus
Payload: value: „innen“: „offen“ oder „geschlossen“, „aussen“: „offen“ oder „geschlossen“

Ausführung

PlatformIO-Projekt für den DFRobot FireBeetle ESP32 V4 (DFR0478) mit Arduino-Framework. Die Ausgänge steuern über Optokoppler die bereits im VXR-9000 programmierten CW-Nachrichten. Der Controller erzeugt die Morsezeichen nicht selbst.

Pinbelegung

Funktion FireBeetle-Pin ESP32-GPIO Signal am ESP32
Türkontakt innen D7 13 LOW = geschlossen, HIGH = offen
Türkontakt außen DI 16 LOW = geschlossen, HIGH = offen
VXR-9000 TX_ATT LRCK 17 LOW = Sender aktiv
VXR-9000 PIO-2 → „INNEN“ D2 25 HIGH = Optokoppler EIN, PIO nach GND
VXR-9000 PIO-1 → „AUSSEN“ D3 26 HIGH = Optokoppler EIN, PIO nach GND
VXR-9000 PIO-3 → „DB0SL“ D4 27 HIGH = Optokoppler EIN, PIO nach GND

Die gewählten GPIO sind herausgeführt und keine Boot-Strapping- oder Flash-Pins. I²C (GPIO 21/22) und SPI (GPIO 5/18/19/23) bleiben frei. Die Board-Pins DI und LRCK sind für I²S beschriftet und werden hier als normale digitale Eingänge genutzt. Die drei Eingänge verwenden INPUT_PULLUP.

Das Optokopplerboard muss auf der ESP32-Seite den jeweiligen Eingang bei aktivem Signal gegen ESP32-GND ziehen; im Ruhezustand muss der Ausgang offen sein. Bei langen Leitungen oder störender Umgebung sind zusätzliche Pull-ups (z. B. 10 kΩ nach 3,3 V) und Entstörung sinnvoll. Auf keinen ESP32-GPIO dürfen 5 V gelangen. Die potentialfreien Türkontakte benötigen auf der Eingangsseite des Optokopplers eine geeignete Stromversorgung und Vorwiderstände entsprechend dem verwendeten Board.

Die Ausgangsseite der drei PIO-Optokoppler schaltet jeweils nur den PIO-Eingang gegen VXR-GND; die Optokoppler trennen ESP32- und VXR-Seite galvanisch. Je ein 10-kΩ-Pulldown an GPIO 25/26/27 hält die Optokoppler während Reset und Boot sicher ausgeschaltet.

Belegung am VXR-9000 (DB-25): PIO-1 („AUSSEN“) liegt auf Pin 18, PIO-2 („INNEN“) auf Pin 17 und PIO-3 („DB0SL“) auf Pin 16. TX_ATT liegt auf Pin 5. Die drei PIO müssen am Funkgerät als Eingänge für die passenden CW-Nachrichten konfiguriert sein.

Die FireBeetle-GPIO-Zuordnung stammt aus dem DFRobot-Datenblatt.

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 db0sl/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.
  • Die Türkontakte werden 40 ms entprellt. Alle laufenden Zeiten werden mit millis() verwaltet; es gibt kein delay().

Konfiguration und Bedienung

  1. In include/config.h das WLAN-Passwort bei WIFI_PASSWORD eintragen. WIFI_SSID ist bereits DB0SL-Wlan, MQTT_HOST ist 192.168.144.21. Der lokale Broker verwendet keine Anmeldung; MQTT_USER und MQTT_PASSWORD bleiben leer. DOOR_REPEAT_INTERVAL_MS, RELAY_ID_INTERVAL_MS und MQTT_STATUS_INTERVAL_MS können dort angepasst werden; alle Werte sind in Millisekunden. include/config.h wird durch .gitignore nicht eingecheckt.
  2. Mit ./build.sh build kompilieren und linken. Solange das WLAN-Passwort leer ist, wird bei einem geschützten WLAN keine Verbindung aufgebaut.
  3. Mit ./build.sh all bauen, auf den FireBeetle flashen und anschließend den seriellen Monitor mit 115200 Baud öffnen. Bei mehreren USB-Seriell-Adaptern: PORT=/dev/ttyUSB0 ./build.sh all.

Voraussetzung: PlatformIO CLI (pio) im PATH. Ohne angeschlossenes Board kann der Upload und Monitor nicht geprüft werden. Der MQTT-Broker verwendet hier unverschlüsseltes MQTT über TCP (Vorgabe Port 1883); er sollte im vertrauenswürdigen Netz stehen.

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/controller.txt · Zuletzt geändert: 2026/09/17 21:27 von kurt

Seiten-Werkzeuge