Stoppuhr der Dominanz ist ein Gerät, das für 2 Mannschaft entwickelt wurde, die gegeneinander spielen. Die Stoppuhr ist geeignet für den Airsoft / Paintball Spielmodus DOMINATION, bzw. Hügel erobern. Sie bestehen aus einem ATmega328P-Mikrocontroller (AVR), der Teil des Arduino-Entwicklungskits (Uno / Nano / Pro Mini) oder eigenständig verwendet werden kann. Zur Visualisierung der Zeiten dient ein LCD-Zeichendisplay (Größe 16x2 oder 20x4), das mit dem Mikrocontroller verbunden ist und mit diesem kommuniziert. Die Zeiten werden in zwei Zeilen untereinander aufgelistet und werden dynamisch aktualisiert, wenn sich ein aktives Mannschaft an dem Punkt befindet (ein von einem Mannschaft besetzter Punkt). Die Stoppuhr ist mit Anzeige-LEDs in Form einzelner Mannschaften ausgestattet, die das aktive Mannschaft am Punkt signalisieren und einem Detektor (Piezowandler), der nach Aufstecken der RFID-Karte den Wechsel am Punkt ankündigt. Mannschaften werden im Spiel implementiert - RED Mannschaft und GRE Mannschaft die gegeneinander spielen und versuchen, den Punkt zu besetzen und dann so lange wie möglich zu behalten. Zu Beginn des Spiels zeigt das Display die Zeiten 00 Stunden, 00 Minuten, 00 Sekunden für RED Mannschaft , GRE Mannschaft . Jedes Mannschaftsmitglied ist mit einem RFID-Chip ausgestattet, der in das Armband (oder die Karte / den Schlüsselanhänger) integriert ist. Der RFID-Chip überträgt seine eindeutige Kennung - UID (unique ID), die von einem RFID-Lesegerät gelesen und in der Logik des Systems verifiziert wird, zu dem die Entität (das Mannschaft) gehört. Einzelne Armbänder können farblich gekennzeichnet werden (rot, grün nach Mannschaft- und Entity-Funktion), wodurch sie schneller an die Spieler verteilt, aber auch farblich archiviert und gespeichert werden können. Das RED Mannschaft besetzt den Punkt, an dem das RED-Mannschaftsmitglied seine Karte am RFID-Lesegerät anbringt. Diese Aktion löst einen Summer aus, der den Punktwechsel mit einem kurzen Piepton ankündigt. Anschließend leuchtet die LED des RED Mannschaft an dieser Station und das Display beginnt die Zeit für dieses Mannschaft zu addieren, bis die Mannschaftkarte des Mitglieds eingesteckt wird , Schiedsrichter oder Radiergummi . Wenn der Punkt von einem GRE-Spieler besetzt ist und die Karte an einem RFID-Lesegerät befestigt ist, kündigt der Summer diese Änderung mit einem kurzen Piepton an, die GRE-LED leuchtet (RED LED erlischt), REDs aktuelle Zeit stoppt und GREs Zeit wird gewertet.
Wenn der Schiedsrichter seine RFID-Karte anlegt, stoppt die Laufzeit beim aktuellen Wert. Der Punkt wird neutral, die LED des aktiven Mannschaften erlischt. Die Unterbrechung dauert an, bis ein Mitglied des RED Mannschafts oder des GRE Mannschafts seine Karte vorlegt. Dieser Kartentyp ist somit geeignet, ein laufendes Spiel vorübergehend zu unterbrechen, Eingriffe eines Spielers oder Verletzungen zu kontrollieren. Gleichzeitig kann die Karte am Ende der Spielrunde verwendet werden, um die Runde zu bewerten, Mannschaften neu zu spawnen, bevor es weitergeht. Wenn der Radierer die Karte anbringt, werden beide Zeiten angehalten und auf den Anfangswert von 00 Stunden, 00 Minuten, 00 Sekunden zurückgesetzt, der angezeigt wird. Die Radiergummikarte wird verwendet, um das Spiel neu zu starten, um ein neues Spiel zu initialisieren, ohne dass ein Einschaltzyklus erforderlich ist. Der RFID-Reader reagiert sofort auf das Einstecken einer RFID-Karte, inklusive der gesamten Logik des Dominator-Projekts. Das Projekt eignet sich für Airsoft-Events (MilSim, LARP), Sportstätten oder Airsoft-Mannschaften, die mit eigener Hardware ein Dominator-Gerät bauen können. Die Firmware ist universell, basierend auf dem Schaltplan, es ist auch möglich das vorhandene PCB-Design für die Herstellung von Leiterplatten zu verwenden. Der Vorteil des RFID Stoppuhr der Dominanz-Projekts besteht darin, dass die Nutzungslizenz den Benutzer berechtigt, X-Punkte mit gleicher Konfiguration über Maschinencode zu klonen und zu erstellen. Maschinencode (.hex) ist ein kompiliertes Firmware-Format für das RFID Dominator-Projekt für gelieferte UID-RFID-Karten, die vor der Kompilierung in den Code eingebettet werden. Damit ist es möglich, beliebig viele unabhängig voneinander arbeitende RFID-Stoppuhr der Dominanz-Punkte im Spiel zu platzieren, die nach einer einheitlichen Konfiguration auf identische RFID-Karten reagieren. Das RFID Dominator System ist abgestimmt, es kann sofort ins Spiel eingesetzt werden. Firmware-Uploads innerhalb von 10 Sekunden über XLoader .
Der NXP RC522 RFID Reader kommuniziert mit dem Mikrocontroller (Arduino / Standalone ATmega328P Chip) über den SPI Bus mit einem Taktsignal (SCLK) von 4 MHz. Der RC522-Reader reagiert auf den RFID-Chip in einem Abstand von ca. 3 cm von der Antenne mit einem konfigurierbaren Antennengewinn im Bereich von 18 bis 48 dB (48 dB wird in der Endanwendung für DOMINATOR verwendet). Liest die UID (Identifier) von RFID-Chips in Reichweite, leitet diesen Identifier an Arduino weiter. Arduino vergleicht die gelesene Kartenadresse in einem Multi-Zustand, löst einen Summerton aus, wendet digitale Zustände an die LEDs an, führt einen universellen Zähler aus, der von der internen Funktion millis() gesteuert wird, die für das Zählen beider Zeiten verantwortlich ist. Aufgrund der erfüllten Bedingung wird der Zähler auf das angegebene Mannschaft angewendet, zu dem die UID gehört und der Zeitzähler läuft. Die Zeit wird auf einem 16x2 oder 20x4 LCD-Zeichen-Display angezeigt. Die Zeitdaten werden über den I2C-Bus mit einem Taktsignal (SCL) von 100 kHz (Standard Speed) gesendet. Um die Anzeige möglichst schnell wiederherzustellen, wird nur die Zahl an der angegebenen Stelle (vorgegebenes Zeichen) überschrieben. Stunden und Minuten und Sekunden werden nur bei Änderung und immer nur für ein bestimmtes Mannschaft neu geschrieben. Bei ernsthaftem Interesse kann im Maschinencode für ATmega328P Firmware erstellt werden, um für andere Arten von RFID-Lesegeräten zu messen: RDM6300, PN532, Wiegand W26, Erhöhung des I2C-Bus-Taktsignals auf 400 kHz (Fast Speed). Mögliche Firmware-Erweiterung für das DOMINATOR-Spiel auf 3 oder 4 Mannschaften.
PCBs können in der Slowakei unter hergestellt werden PB Spoj, oder auch in China - Maschinenproduktion aus GERBER-Dateien. Einer der beliebtesten und billigsten Hersteller ist: JLCPCB. GERBER-Dateien können direkt als Archiv hochgeladen werden, während die Leiterplatte visualisiert wird, die von ihr aufgezeichneten Schichten automatisch festgelegt werden und die Abmessungen der Leiterplatte festgelegt werden. Die Produktion dauert 1-2 Tage. Dieser Hersteller war berühmt für die Herstellung von 10 Stück Leiterplatten für 2 US-Dollar. Heute können Sie mit JLCPCB 5 Stück dieser Leiterplatte für RFID Stoppuhr der Dominanz für 6,96 € und 10 Stück für 10,16 € herstellen. Transport - Die günstigste Alternative ist für 7,44 € bis DHL mit Lieferung innerhalb von 3-5 Werktagen erhältlich, während die Transportkosten 23,16 € betragen. JLCPCB verwendet automatisch einen Rabattgutschein in Höhe von 8 € für den Versand, der Ihnen nach der Registrierung zugewiesen wird. Mit der günstigsten Versandalternative mit Lieferung innerhalb von 25 Tagen ist dieser Versand beim ersten Kauf kostenlos. Es ist auch möglich, andere verfügbare Hersteller zu verwenden, zum Beispiel: PCBWay, AllPCB, NextPCB, SeeedStudio, die über die Technologie für die maschinelle Herstellung von Leiterplatten aus GERBER-Dateien verfügen.
Arduino Uno / Nano (ATmega328P) | NXP RFID Leser RC522 |
GND | GND |
3V3 | 3V3 |
D9 | RST |
D10 | SDA (SS) |
D11 | MOSI |
D12 | MISO |
D13 | SCK |
Arduino Uno / Nano (ATmega328P) | I2C-Wandler für LCD-Anzeige |
GND | GND |
5V | Vcc |
A4 | SDA |
A5 | SCL |
Arduino Uno / Nano (ATmega328P) | Buzzer |
GND | GND |
5V | Vcc |
D5 | IN |
Arduino Uno / Nano (ATmega328P) | LED Dioden |
GND | GND |
D4 | IN (RED) |
D3 | IN (GREEN) |
Für das RFID Stoppuhr der Dominanz-Projekt steht eine Shareware-Version in Form von Maschinencode (.hex) für den Arduino-Mikrocontroller (ATmega328P) zur Verfügung. In der Version können Sie zunächst 4 verschiedene UID-RFID-Karten aufzeichnen, die den Mannschaften RED, GRE, Schiedsrichter und Radiergummi zugeordnet sind. Die Aufforderung zur Eingabe einer bestimmten Karte wird auf dem LCD-Zeichendisplay 16x2 oder 20x4 mit I2C-Wandler angezeigt. Anschließend ist es möglich, die Spielmechanik und die Reaktion des Lesegeräts auf die RFID-Karte mit Zeitvisualisierung auf dem Display zu testen. Es ist möglich, für jedes Team maximal 15 Sekunden Spielzeit zu messen, mit der Möglichkeit, es mit einer Radiergummi-Karte zurückzusetzen und erneut für 15 Sekunden zu messen. Das Ziel der Version besteht darin, die Kompatibilität mit Ihrer Hardware zu überprüfen. Maschinencodes basierend auf der I2C-Konverteradresse für das LCD-Display sind im Github-Repository verfügbar. Die am häufigsten verwendeten Adressen sind 0x27 und 0x3F. Wenn Sie die Adresse Ihres Konverters nicht kennen, verwenden Sie das eingebaute Beispiel in Arduino IDE -> I2C Scanner, das die Adresse an die UART-Schnittstelle (Serieller Monitor) schreibt. Maschinencode kann über die AVRDUDE-Software - Teil der Arduino IDE - oder mit einer GUI-Schnittstelle über XLoader auf den Arduino Uno-Mikrocontroller hochgeladen werden - einfacher zu bedienen.
Firmware-Name (im Ordner rfid_dominator) | Designed für | Herunterladen |
RFID_Dominator_0x27.hex | LCD-Zeichenanzeigegröße 16x2 oder 20x4 mit I2C-Konverter, der unter Adresse 0x27 . kommuniziert | Firmware herunterladen |
RFID_Dominator_0x3F.hex | LCD-Zeichenanzeigegröße 16x2 oder 20x4 mit I2C-Konverter, der unter Adresse 0x3F . kommuniziert | Firmware herunterladen |
Name der Bibliothek | Bibliotheksfunktion | Herunterladen |
---|---|---|
MFRC522 |
Bibliothek für AVR-Mikrocontroller (ATmega) Arduino Uno / Nano / Mega. Es ermöglicht die Kommunikation mit dem RFID-Lesegerät NXP RC522 über den SPI-Bus. |
Herunterladen |
LiquidCrystal_I2C |
Bibliothek für AVR-Mikrocontroller (ATmega) Arduino Uno / Nano / Mega. Es ermöglicht die Kommunikation mit dem LCD-Zeichendisplay über den I2C-Bus. |
Herunterladen |
/*|------------------------------------------------------------------|*/ /*|Titel: Abrufen der RFID-Kartenkennung |*/ /*|Beschreibung: Liest über RFID-Lesegerät RC522 |*/ /*|die Adresse der angebrachten und ausgedruckten RFID-Karte Kennung |*/ /*|auf der UART-Schnittstelle. |*/ /*|Die aufgezeichneten UID-Karten werden in RFID Stoppuhr verwendet |*/ /*|Der Autor: Martin Chlebovec |*/ /*|E-mail: martinius96@gmail.com |*/ /*|Nutzungslizenz: MIT |*/ /*|Revision: 12. März 2021 |*/ /*|------------------------------------------------------------------|*/ #include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 9 MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class void setup() { Serial.begin(9600); while (!Serial); SPI.begin(); rfid.PCD_Init(); // Init MFRC522 rfid.PCD_SetAntennaGain(rfid.RxGain_max); rfid.PCD_DumpVersionToSerial(); } void loop() { if (rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()) { Serial.print(F("Card UID: ")); dump_byte_array(rfid.uid.uidByte, rfid.uid.size); Serial.println(); Serial.print(F("PICC type: ")); MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak); Serial.println(rfid.PICC_GetTypeName(piccType)); rfid.PICC_HaltA(); rfid.PCD_StopCrypto1(); } } void dump_byte_array(byte *buffer, byte bufferSize) { for (byte i = 0; i < bufferSize; i++) { } Serial.print("Nacitany kod: "); unsigned long kod = 10000 * buffer[4] + 1000 * buffer[3] + 100 * buffer[2] + 10 * buffer[1] + buffer[0]; //finalny kod karty Serial.println(kod); }
#include <Wire.h> void setup() { Wire.begin(); Serial.begin(9600); while (!Serial); // Leonardo: wait for serial monitor Serial.println("\nI2C Scanner"); } void loop() { byte error, address; int nDevices; Serial.println("Scanning..."); nDevices = 0; for(address = 1; address < 127; address++ ) { // The i2c_scanner uses the return value of // the Write.endTransmisstion to see if // a device did acknowledge to the address. Wire.beginTransmission(address); error = Wire.endTransmission(); if (error == 0) { Serial.print("I2C device found at address 0x"); if (address < 16) Serial.print("0"); Serial.print(address,HEX); Serial.println(" !"); nDevices++; } else if (error==4) { Serial.print("Unknown error at address 0x"); if (address < 16) Serial.print("0"); Serial.println(address,HEX); } } if (nDevices == 0) Serial.println("No I2C devices found\n"); else Serial.println("done\n"); delay(5000); // wait 5 seconds for next scan }