# Projekt: Lasertag Kommunikation (nRF52840) Dieses Projekt beschreibt ein modulares Lasertag-System basierend auf dem nRF52840. Es nutzt **Dynamic Multiprotocol** (Bluetooth Low Energy & OpenThread), um eine nahtlose Kommunikation zwischen einer Weboberfläche (Game-Leader), Westen und Waffen zu ermöglichen. ## System-Architektur * **Game-Leader:** Fungiert als Brücke (Bridge). Er kommuniziert via **BLE (Web Bluetooth)** mit einem Smartphone/Laptop und via **Thread (CoAP/UDP)** mit den Spielgeräten. * **Westen/Waffen:** Reine Thread-Knoten, die Befehle empfangen und Statusmeldungen (Treffer) senden. * **Bases:** Stationäre Geräte, die Spielmodi wie "Capture the Base" ermöglichen. ## Geplante Verzeichnisstruktur Das Projekt ist als Zephyr-Workspace-Struktur angelegt, um Code-Redundanz zu vermeiden. ```text lasertag/ ├── apps/ # Applikations-spezifischer Code (Binaries) │ ├── leader_base/ # Kombinierte Firmware für Game-Leader & Bases │ ├── weapon/ # Firmware für die Waffen-Einheit │ └── vest/ # Firmware für die Westen-Einheit ├── libs/ # Gemeinsame Bibliotheken (Zephyr Module) │ ├── ble_mgmt/ # BLE Services & Advertising Profile │ ├── thread_mgmt/ # CoAP Server/Client & Thread Stack Setup │ └── game_logic/ # Treffer-Logik & Spielstatus-Management ├── boards/ # Custom Board Definitions (PCBs) ├── common/ # Gemeinsame Header (UUIDs, CoAP-Pfade, IDs) └── scripts/ # Hilfsskripte (Provisioning, Shell-Tools) ``` ## Roadmap ### Entwicklungs-Roadmap (Schritt-für-Schritt) Diese Roadmap führt vom nRF52840DK bis zum fertigen Produkt. #### Phase 1: Die "Tisch"-Basis (PoC) **Ziel:** Stabile Thread-Kommunikation und IR-Signalerzeugung verifizieren. - [ ] Zephyr Setup: Installation des nRF Connect SDK (NCS) und VS Code. - [ ] Custom Board Definition: Board-File anlegen, das die Pins des nRF52840DK auf die geplanten Funktionen mappt (PWM für IR, GPIO für Buttons). - [ ] Thread Mesh: Minimalen OpenThread-Stack aufsetzen. Ein DK als Leader (FTD), einer als Child. UDP/CoAP-Ping bei Knopfdruck. - [ ] IR-Engine: MilesTag-Encoder mit nrfx_pwm + PPI implementieren. Signal mit Oszilloskop/Logic Analyzer verifizieren. Sicherstellen, dass Funk die IR-Engine nicht stört. #### Phase 2: Der "Prototyp" (Integration) **Ziel:** Einbindung von Audio und Solenoid. - [ ] Audio: MAX98357A am I2S-Interface. WAV-Player, der Samples aus internem Flash abspielt. - [ ] Solenoid-Treiber: MOSFET-Schaltung auf Breadboard. PWM-Logik für "Kick" (100% für 30ms) und "Hold" (30%). Thermik des Solenoids testen. - [ ] Haptik-Sync: Audio ("Bang!") und Solenoid-Kick in der Software synchronisieren. #### Phase 3: Die "Optik & Sensorik" (Physik) **Ziel:** Reichweitentest. - [ ] Linsen-Test: Oslon Black LED auf Star-Platine + Carclo/LEDiL-Linse justieren (Abstand exakt einhalten). - [ ] Sensor-Array: TSOP-Sensoren für die Weste verdrahten. Outdoor-Test bei Sonne. Software-Filterung anpassen, um Reflexions-Fehler zu minimieren. #### Phase 4: Die "App & Logik" (System) **Ziel:** Spielsteuerung. - [ ] BLE Gateway: Leader-Box sendet Thread-Statusdaten via BLE an Smartphone (Web Bluetooth API oder nRF Toolbox App). - [ ] Web App: Einfache HTML/JS-Seite, die via Web Bluetooth API mit dem Leader spricht, um ein Spiel zu starten ("Start Game" als Thread Broadcast). #### Phase 5: Das "Custom PCB" (Hardware) **Ziel:** Miniaturisierung. - [ ] Schaltplan: Schaltungen in KiCad übertragen. Trennung von Analog-GND (Sensoren) und Power-GND (Solenoid) beachten. - [ ] Layout: Antennenplatzierung/Impedanz anpassen; Testpunkte für SWD vorsehen (Debug). ### Grobe Zeitachsen (Richtwerte) | Phase | Ziel | Dauer (Richtwert) | Abhängigkeiten | | :--- | :--- | :--- | :--- | | 1 | Thread + IR PoC | 1–2 Wochen | HW: nRF52840DK, Logic-Analyzer | | 2 | Audio + Solenoid | 2 Wochen | Phase 1 abgeschlossen | | 3 | Optik & Sensorik | 1–2 Wochen | Phase 2 abgeschlossen, Outdoor-Tests | | 4 | App & Steuerung | 1–2 Wochen | Phase 2 abgeschlossen, BLE-Gateway vorhanden | | 5 | Custom PCB | 3–4 Wochen | Phasen 1–3 verifiziert, Schaltplan stabil | ## Technologie-Stack - **Hardware:** nRF52840 (DK & Custom PCBs) - **OS:** Zephyr RTOS via nRF Connect SDK - **Funk:** OpenThread (Mesh) & BLE 5.x - **Protokolle:** CoAP über UDP, GATT (BLE) - **Frontend:** Web Bluetooth API (JavaScript)