Repository mit Testsoftware-Implementierungen für Airsoft WiFi-Punkte: Airsoft - WiFi-Punkte - Arduino
Wenn Sie Firmware für WiFi-Punkte erwerben möchten, wenden Sie sich an: martinius96@gmail.com
Arduino LCD WiFi Stoppuhr Planen Taste Capture Points Paintball DOMINATOR

WiFi Punkte für Airsoft | Paintball


Entitäten im WiFi-Punkte-Projekt:

Mannschaft RED
Mannschaft RED
Mannschaft GRE
Mannschaft GRE

Projektbeschreibung für WiFi-Punkte:

Capture Points-Spielmodus für Airsoft- und Paintball-Sportarten. Die Punkte kommunizieren über WLAN-Module aus der nRF24L01-Serie miteinander, während sie Informationen über den Status des Punkts austauschen (ob er besetzt ist und von welchem Team). Ein Punkt ist ein permanenter Sender und erfordert die Kommunikation vom anderen Punkt. Der zweite Punkt ist der Empfänger und reagiert auf die vom Sender empfangenen Daten, wodurch Kollisionen bei der Kommunikation auf der WiFi-Frequenz von 2,4 GHz vermieden werden. Jeder der Punkte verwendet einen Arduino-Steuerungs-Mikrocontroller (Arduino Uno / Nano) oder einen separaten Chip (Atmel) AtMega328P, der die gesamte Logik des Systems steuert. Es gibt 2 Teams im Spiel - RED mannschaft a GRE mannschaftdie gegeneinander spielen und versuchen, beide Punkte durch Drücken der entsprechenden Taste zu besetzen. Die Tasteneingabe gibt an, wie ein Mitglied des RED- oder GRE-Teams einen Punkt belegt. Die im INPUT_PULLUP-Modus verbundenen Drucktasten werden verwendet. Durch Drücken der Taste wird das GND-Signal dem digitalen Arduino-Eingangsanschluss (Active-LOW-Schaltsignal) zugeführt. Die Druckdauer / Anzahl der Druckmaschinen wird nicht gesteuert und ist nicht konfigurierbar. Der Punkt reagiert sofort auf einen Tastendruck. Das Spiel endet, wenn beide Punkte von derselben Mannschaft besetzt sind. Die Änderung des Punktes wird vom Detektor angezeigt, am Ende des Spiels piepen beide Detektoren in einer Endlosschleife und gleichzeitig wird die WiFi-Kommunikation zwischen den nRF24L01-Modulen unterbrochen. Die WiFi-Module nRF24l01 kommunizieren mit 2,4 GHz. nRF24l01 (ohne + PA + LNA) kommunizieren auf etwa 70 Metern, nRF24l01 + PA + LNA auch pro Kilometer im Wald bzw. in einer sonst gestörten Umgebung auf einer Höhe von 450-700 Metern bei maximaler Sendeleistung. Für die externe Stromversorgung muss ein YL-Adapter mit einem 3,3-V-Wandler verwendet und über einen externen Adapter mit Strom versorgt werden. Verwenden Sie kein 5-V-Netzteil vom Arduino, da die Gefahr besteht, dass der Controller zerstört wird. Das 3-V3-Terminal ist nicht für die Stromversorgung des Moduls geeignet, da es in leistungsstärkeren Übertragungsmodi einen hohen Stromverbrauch aufweist. Der Neustart beider Punkte erfolgt durch Zurücksetzen der Arduín-Taste oder durch Herausziehen und Anschließen der Stromversorgung (Einschaltzyklus).

Drahtlose Module kommunizieren mit 2,4 GHz, es handelt sich nicht um WiFi-Technologie, sie benötigen keinen Router oder Zugangspunkt! Die Module verfügen über einen eigenen Kommunikationskanal mit einer Auswahl von bis zu 140 Kanälen.

Unterstützte Modulgeschwindigkeiten nRF24L01:

  • 250 kbps - Diese Option wird für ältere nRF24L01 nicht unterstützt!
  • 1 Mbps
  • 2 Mbps
  • Leistungsmodi von nRF24L01-Modulen:

  • RF24_PA_MIN=-18dBm
  • RF24_PA_LOW=-12dBm
  • RF24_PA_MED=-6dBM
  • RF24_PA_HIGH=0dBm
  • Blockdiagramm - WiFi-Punkte - Airsoft:

    Blockschema - Punkte erfassen - Airsoft / Paintball, Arduino, nRF24L01

    Kompatible Steuerungshardware für WiFi-Airsoft-Punkte:



    Peripheriegeräte für WiFi Airsoft-Punkte:


    2x WLAN-Modul nRF24L01 / nRF24L01 + PA + LNA
    2x WiFi-Modul nRF24L01 / nRF24L01 + PA + LNA
    Schaltknopf
    4x Schaltknopf
    Summer
    2x Summer
    4x LEDs
    4x LEDs

    Schaltplan - WiFi-Punkte


    WiFi body - DOMINATOR - schéma zapojenia - Arduino / Airsoft, stopwatch, DOMINATION

    WiFi-Punkte - Verbindung testen


    WiFi body - - Arduino pre Airsoft, Paintball

    WiFi Punkte - Capture Points - Demonstration der Funktionalität:


    Die Verdrahtung der Klemmen - Konfigurierbarer DOMINATOR - entspricht vollständig dem Schaltplan:

    Arduino Uno / Nano (AtMega328P) nRF24L01
    GND GND
    3V3 / externý zdroj Vcc
    D3 CSN
    D4 CE
    D11 MOSI
    D12 MISO
    D13 SCK
    Arduino Uno / Nano (AtMega328P) LED Dioden
    GND GND
    D7 IN (RED)
    D8 IN (GREEN)
    Arduino Uno / Nano (AtMega328P) Taste (INPUT_PULLUP)
    GND GND
    D5 IN (RED)
    D6 IN (GRE)
    Arduino Uno / Nano (AtMega328P) Summer
    D2 IO
    GND GND

    Testprogramm - WiFi-Punkte


    Ziel des Testprogramms ist es, die Hardwarekompatibilität zu testen (Versionen von nRF24L01-Modulen mit einer Übertragungsrate von 250 kbps, da nicht alle diese unterstützen). Testen und implementieren Sie eine Verbindung zwischen dem Sender und dem Empfänger mit einem Rückruf des Empfängers, der die an den Sender gesendeten Daten zurückgibt. Der Empfänger verfügt über einen integrierten Summer, der piept, wenn bestimmte Daten erkannt werden. Er zeigt an, dass eine Verbindung zum Sender besteht und die Daten fließen. Der Tester eignet sich auch zur Verwendung im Airsoft-Spiel zum ersten Testen der Reichweite und der Kommunikation zwischen den beiden Knoten. Der Sender sendet immer, der Empfänger nur als Antwort auf den Sender nach dem Empfang der Daten. Es ist möglich, unterschiedliche Daten in der Struktur zu übertragen, größere Pakete.

    Sendertester (Dies ist kein Programm für das Airsoft WiFi-Projekt! - Das Projekt ist bezahlt)

    //nRF24L01 + PA + LNA - Transmitter tester
    //Author: Martin Chlebovec (martinius96)
    //Web: https://arduino.php5.sk
    //Donate: https://paypal.me/chlebovec
    
    #include <SPI.h>
    #include "RF24.h"
    // nastavení propojovacích pinů
    #define CE 4
    #define CS 3
    // inicializace nRF s piny CE a CS
    RF24 nRF(CE, CS);
    // nastavení adres pro přijímač a vysílač,
    // musí být nastaveny stejně v obou programech!
    byte adresaPrijimac[]= "prijimac00";
    byte adresaVysilac[]= "vysilac00";
    void setup() {
      // komunikace přes sériovou linku rychlostí 9600 baud
      Serial.begin(9600);
      // zapnutí komunikace nRF modulu
      nRF.begin();
      nRF.setDataRate( RF24_250KBPS );
      // nastavení výkonu nRF modulu,
      // možnosti jsou RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH and RF24_PA_MAX,
      // pro HIGH a MAX je nutnýv externí 3,3V zdroj
      nRF.setPALevel(RF24_PA_LOW);
      // nastavení zapisovacího a čtecího kanálu
      nRF.openWritingPipe(adresaVysilac);
      nRF.openReadingPipe(1,adresaPrijimac);
      // začátek příjmu dat
      nRF.startListening();
    }
    
    void loop() {
      // for smyčka pro postupné odeslání
      // hodnot 0 až 3 pro načtení všech dat
      // z přijímače
      for (int i=0; i < 4; i++ ) {
        // ukončení příjmu dat
        nRF.stopListening();
        // vytisknutí aktuální volby po sériové lince
        Serial.print("Posilam volbu ");
        Serial.println(i);
        // uložení startovního času komunikace
        unsigned long casZacatek = micros();
        // odeslání aktuální volby, v případě selhání
        // vytištění chybové hlášky na sériovou linku
        if (!nRF.write( &i, sizeof(i) )){
           Serial.println("Chyba při odeslání!");
        }
        nRF.startListening();
        unsigned long casCekaniOdezvy = micros();
        boolean timeout = false;
        while ( ! nRF.available() ){
        if (micros() - casCekaniOdezvy > 200000 ){
              timeout = true;
              break;
          }      
        }
        if ( timeout ){
          Serial.println("Chyba při prijmu, vyprseni casu na odezvu!");
        }
        else{
         
            unsigned long prijataData;
            nRF.read( &prijataData, sizeof(prijataData) );
            unsigned long casKonec = micros();
            Serial.print("Odeslana volba: ");
            Serial.print(i);
            Serial.print(", prijata data: ");
            Serial.println(prijataData);
            Serial.print("Delka spojeni: ");
            Serial.print(casKonec - casZacatek);
            Serial.println(" mikrosekund.");
        }
        delay(200);
      }
    }
    

    Empfängertester Dies ist kein Programm für das Airsoft WiFi-Projekt! - Das Projekt ist bezahlt)

    //nRF24L01 + PA + LNA - Receiver tester
    //Author: Martin Chlebovec (martinius96)
    //Web: https://arduino.php5.sk
    //Donate: https://paypal.me/chlebovec
    
    #include <SPI.h>
    #include "RF24.h"
    int prijem;
    const int buzzer = 2;
    #define CE 4
    #define CS 3
    RF24 nRF(CE, CS);
    byte adresaPrijimac[] = "prijimac00";
    byte adresaVysilac[] = "vysilac00";
    void setup() {
      Serial.begin(9600);
      pinMode(buzzer, OUTPUT);
      nRF.begin();
      nRF.setDataRate( RF24_250KBPS );
      nRF.setPALevel(RF24_PA_LOW);
      nRF.openWritingPipe(adresaPrijimac);
      nRF.openReadingPipe(1, adresaVysilac);
      nRF.startListening();
    }
    
    void loop() {
      unsigned long odezva;
      if ( nRF.available()) {
        // čekání na příjem dat
        while (nRF.available()) {
          nRF.read( &prijem, sizeof(prijem) );
        }
        Serial.print("Prijata volba: ");
        Serial.print(prijem);
        switch ( prijem ) {
          case 1:
    
            odezva = millis();
    
            tone(buzzer, 50, 500);
    
            break;
          case 2:
            odezva = millis() / 1000;
            break;
          case 3:
            odezva = micros();
            break;
          default:
            odezva = 0;
            break;
        }
        nRF.stopListening();
        nRF.write( &odezva, sizeof(odezva) );
        nRF.startListening();
      }
    }