# 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: Custom IR-Protokoll (pulse-distance, 38 kHz) mit nrfx_pwm + PPI implementieren. Signal mit Oszilloskop/Logic Analyzer verifizieren. Sicherstellen, dass Funk die IR-Engine nicht stört. **Hinweis:** MilesTag2 wurde verworfen zugunsten eines eigenen, kürzeren Protokolls mit CRC8 (siehe [Spezifikationen](specifications/ir_protocol.md)).

#### 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)