[![build status](https://gitea.rabe11.de/FCS/Winden-Telemetry/actions/workflows/build_release.yaml/badge.svg?event=push)](https://gitea.rabe11.de/FCS/Winden-Telemetry/releases) ![Gitea Release](https://img.shields.io/gitea/v/release/FCS/Winden-Telemetry?gitea_url=https%3A%2F%2Fgitea.rabe11.de) # Winden-Telemetry Aktuelle Version: v0.1.0 Der eigene Projektcode steht unter der MIT-Lizenz. Die verwendeten Drittanbieterbibliotheken bleiben unter ihren jeweiligen Original-Lizenzen. Eine Übersicht der Komponenten, Versionen und Lizenzbedingungen steht in [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md); der vollständige Lizenztext für den Projektcode steht in [LICENSE](LICENSE). Übertragung der IAS des Segelflugzeuges an die Winde ### Hardware: - [Heltec LoRa 32 (V3)](https://heltec.org/project/wifi-lora-32-v3/) - SG90 Servo - MS4525 differenz Drucksensor - 12 LED Ring WS2812b 50mm - BMP180 Temperatur und Luftdrucksensor - DC-DC Step Down Wandler 3A MP1584 - Relais ### Features: - [x] LORA zum Übertragen - [x] Airspeed via differenz Drucksensor - [x] Webinterface über eigenen Access Point - [x] min/max speed per Webinterface einstellbar - [x] Kennzeichen per Webinterface einstellbar - [x] maximale Übertragungszeit per Webinterface einstellbar (Standard: 90 Sekunden) - [x] Firmware-Upload per Webinterface für beide Firmwarevarianten - [x] Analoge Anzeige in der Winde - [x] Farbige LEDs für Limits - [x] Übertragungszeit Begrenzen - [x] 12V-Warnleuchten-Erkennung am Wind-Modul via GPIO 5 - [x] NMEA-Statusübertragung zum SKP-Modul mit Prefix $PWTLW - [x] SKP-Modul mit Relaissteuerung über GPIO 7 und Timeout-Sicherung - [x] eigenes SKP-Webinterface mit WLAN- und OTA-Funktionen - [x] Luftdrucksensor für Höhe und Vario ### Webinterface und Firmware-Update Beide Firmwarevarianten starten einen eigenen WLAN-Access-Point. Der voreingestellte WLAN-Name ist bei Sailplane `Sailplane-D1234` und bei der Winde `Winde-Telemetry`. - Passwort: `telemetry` - Webadresse: `http://192.168.4.1/` Im Webinterface lassen sich die WLAN-Einstellungen verwalten. Je nach Modul werden nur die tatsächlich genutzten Werte angezeigt. Die Werte bleiben nach einem Neustart erhalten. Das Sailplane-Modul verwendet sie für Telemetrie und Schlepp-Erkennung, während die Wind- und SKP-Module die passenden Betriebswerte für ihren jeweiligen Betrieb übernehmen. Für ein Firmware-Update die passende `.bin`-Datei aus `.pio/build//` auswählen. Nach einem erfolgreichen Upload startet das Gerät automatisch neu. ## Aufbau Pin Layout Heltec WiFi LoRa (v3) ![Heltec WiFi LoRa (v3)](https://heltec.org/wp-content/uploads/2023/09/pin.png) ### Anschlusszuordnung | Heltec WiFi LoRa (v3) Pin | MP1584 |SG90 Pin | BMP180 Pin | MS4525 Pin | LED Ring Pin | | --- | --- | --- | --- | --- | --- | | GND | OUT -| GND | GND | GND | GND | | 3.3 V| | | VCC | VCC | VCC | | GPIO 6| | | | | IN | | GPIO 7| | 1 PWM (Orange)| | | | GPIO19| | | SDA| SDA | | GPIO20| | | SCL| SCL| | 5V | OUT + | VCC | | | ## PCB Die Platine ist so gestaltet das sie individuell bestückt werden kann, je nach Verwendung ![Platine bestückt](img/Winden_Telemetry_PCB.png) ![Platinen Vorderseite](img/Winden_Telemetry_PCB_front.png)![Platinen Rückseite](img/Winden_Telemetry_PCB_back.png) [Schaltplan](img/Winden_Telemetry_Schematic.pdf) | Bauteil | Modul Segelflugzeug | Modul Winde | Modul SKP | | --- |--- |--- |--- | | J1 | x | x | x | optional| | A1 | x | x | x | optional| | I2C_1 | MS4525 | optional| optional| | I2C_2 | BMP180 | optional| optional| | I2C_3 | optional| optional| optional| | I2C_4 | optional| optional| optional| | GPIO3 | optional| optional| optional| | GPIO4 | optional| optional| optional| | GPIO5 | optional| Eingang Warnleuchte | optional| | GPIO6 | optional| LED Ring | optional| | GPIO7 | optional| Servo | Relaissteuerung | ## Programmablauf Segelflugzeug ```mermaid flowchart TD A(["Start"]) A --> B{"ist Senden an?"} B --> | Ja | C{"Sende Timer <90 sec"} I --> | Nein | E{"is airborn?"} C --> | Nein | F["Sende Schleppen komplett"] -->G["is airborn=true"] -->L["Lowspeedtimer = 0"] C --> | Ja | D["Sende Speed"] D --> Z["Warte 1 Sekunde"] L ----> H["Senden aus"] -->Z Z --> B B --> | nein | I{"Speed < 30 km/h"} E --> | nein |J["Senden an"] -->P["Start Sendetimer"] --> D I --> | ja| K["Lowspeedtimer + 1"] K --> M{"lowspeedtimer >90"} M --> | ja | N["is airborn=false"] --> Z M --> | nein | Z E --> | ja |O["Lowspeedtimer = 0"] --> Z ```