All checks were successful
Deploy Docs / build-and-deploy (push) Successful in 13s
4.4 KiB
4.4 KiB
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.
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)