Project Repository - Firmware Shareware for RFID Domination Timer: Airsoft Domination Timer firmware
If you are interested in the full firmware for the RFID Domination Timer, please contact the author of the project in English at:

martinius96@gmail.com

Arduino LCD RFID, NFC NXP C522 Stopwatch Schematics Airsoft Paintball Domination Timer

RFID Domination Timer 1.0 - stopwatch for Airsoft | Paintball


The new version of the RFID Domination Timer project supports these types of firmware RFID readers NXP RC522:
  • Firmware version: 0x12 = counterfeit chip - (non - original NXP chip, replacement)
  • Firmware version: 0x91 = Version 1.0 - (original NXP Semiconductors chip)
  • Firmware version: 0x92 = Version 2.0 - (original NXP Semiconductors chip)

  • User entities in a color-coded RFID Domination Timer project:


    RFID wristband of ISO / IEC 14443-A standard - Team RED
    Team RED
    RFID wristband of ISO / IEC 14443-A standard - Team GRE
    Team GRE
    RFID wristband of ISO / IEC 14443-A standard- Referee
    Referee
    RFID wristband of ISO / IEC 14443-A standard - Eraser
    Eraser

    RFID Domination Timer 1.0 description:


    Domination timer (DOMINATOR) is a stopwatch device designed for 2 teams that play against each other and try to occupy the point and keep it for as long as possible. The stopwatch is suitable for Airsoft / Paintball game mode DOMINATION, resp. Capture Hill. They consist of an ATmega328P microcontroller (AVR), which can be part of the Arduino development kit (Uno / Nano / Pro Mini). An LCD character display (size 16x2 or 20x4, chipset HD44780) is used to visualize times of both teams. The times are listed in two lines below each other and are dynamically updated if there is an active team at the point (a point occupied by a team). The stopwatch is equipped with indicator LEDs in team colors, which signal the active team at the point and a detector (piezo transducer), which announces the change at the point after attaching the RFID card. Teams are implemented in the game - RED team and GRE team who play against each other and try to occupy the point and then keep it for as long as possible. At the beginning of the game, the display shows the times 00 hours, 00 minutes, 00 seconds for RED team , GRE team . Each team member is equipped with an RFID chip that is integrated into the bracelet (or card / keychain). The RFID chip transmits its unique identifier - UID (unique ID), which is read by an RFID reader and verified in the logic of the system to which the entity (team) belongs. Individual bracelets can be color-coded (red, green by team and entity function), which allows them to be distributed more quickly to players, but also archived and stored by color. The RED team will occupy the point when the RED team member attaches their card to the RFID reader. This action triggers a buzzer that announces the change of point with a short beep. Subsequently, the LED of the RED team at this station will light up and the display will start adding the time for this team until the members team card is inserted , Referee , or Eraser . If the point is occupied by a GRE player and the card is attached to an RFID reader, the buzzer will announce this change with a short beep, the GRE LED will light up (RED LED turns off), REDs current time stops , and GREs time is scored.


    If the Referee attaches his RFID card, the running time will stop at the current value. The point becomes neutral, the active teams LED goes out. The stoppage lasts until a member of the RED team or the GRE team presents their card. This type of card is thus suitable for temporarily stopping an ongoing game, controlling a players intervention, or injuries. At the same time, the card can be used at the end of a round of the game, to evaluate the round, respawn teams before continuing. If Eraser attaches the card, both times will stop and reset to the initial value of 00 hours, 00 minutes, 00 seconds, which will be displayed. The Eraser card is used to restart the game, to initialize a new game without the need for a power-on cycle. The RFID reader responds to the insertion of an RFID card immediately, including the entire logic of the Dominator project. The project is suitable for Airsoft events (MilSim, LARP), sports facilities, or Airsoft teams, which can build a Dominator device with their own hardware. Firmware is universal, which is based on the wiring diagram, it is also possible to use the available PCB design for the production of printed circuit boards. The advantage of the RFID Domination timer project is that the usage license authorizes the user to clone and create X points with the same configuration via machine code. Machine code (.hex) is a compiled firmware format for the RFID Dominator project for supplied UID RFID cards that are embedded in the code before compilation. It is thus possible to place any number of independently operating RFID Domination timer points in the game, which respond to identical RFID cards according to a uniform configuration. The RFID Dominator system is tuned, it can be put into the game immediately. Firmware uploads within 10 seconds via XLoader .


    LCD 20x4 output for RFID Domination Timer:


    LCD character display 20x4 - Arduino Domination Timer - Domination Timer

    Compatible control hardware for RFID Domination Timer:



    Peripherals for RFID Domination Timer:


    RFID Domination Timer - DOMINATION TIMER

    How RFID Domination Timer works (hardware side):


    The NXP RC522 RFID reader communicates with the microcontroller (Arduino / stand-alone chip ATmega328P) via the SPI bus with a clock signal (SCLK) of 4 MHz. The RC522 reader responds to the RFID chip at a distance of approximately 3 cm from the antenna, while having a configurable antenna gain in the range of 18 to 48 dB (48 dB is used in the final application for DOMINATOR). Reads the UID (identifier) of RFID chips in range, forwards this identifier to Arduino. Arduino compares the read address of the card in a multi-condition, triggers a buzzer beep, applies digital states to the LEDs, runs a universal counter controlled by the internal function millis() - Timer 0, which is responsible for counting both times. Based on the fulfilled condition, the counter starts to be applied to the given team to which the UID belongs and the time counter is running. The time is plotted on a 16x2 or 20x4 LCD character display. The time data is sent via the I2C bus with a clock signal (SCL) of 100 kHz (Standard Speed). To restore the display as quickly as possible, only the number at the given position (given character) is overwritten. Hours and minutes and seconds are overwritten only when changing and always only for a given team. In case of serious interest, it is possible to create firmware in machine code for ATmega328P to measure also for other types of RFID readers: RDM6300, PN532, Wiegand W26, increase of I2C bus clock signal up to 400 kHz (Fast Speed). Possible firmware expansion for Domination Timer to 3 or 4 teams.

    RFID Domination Timer - game with 4 teams
    Maximum time range that can be listed on the system: 99 hours, 59 minutes, and 59 seconds
    Consumption: approx. 50 mAh with 5V power supply. Convenient to power via power bank, charger from a phone with USB output.

    Where to use RFID Domination Timer project:


    The RFID Domination Timer project is, in terms of its versatility, suitable for implementation in Airsoft actions, and with the possibility of cloning the firmware, it is possible to place X Domination Timer points in the game field with identical firmware, which players can play with the same RFID cards. Domination Timer is also suitable for teams, sports grounds and playgrounds, which can use this device to expand the services and game modes offered for different numbers of players. If RFID cards, bracelets or key fobs are color-coded, it is very easy and universally distributed to players based on their team. Their archiving is also simple. Using cards, bracelets or key rings is easy and can handle all ages in Airsoft games. The RFID chip itself is protected in a plastic case, it does not mind mud, dirt, water, frost, it is fully maintenance-free. It has no battery, the chip activates the RFID reader, which charges it with the transmitted electromagnetic field and allows it to send a UID - identifier if it is within range of the RFID reader. Domination Timer is suitable for game modes with the same number of players in both teams, e.g. DOMINATION, Capture Point (Points for multiple cloned Domination Timer points).


    Demonstration of functionality - RFID Domination Timer:



    Printed circuit board - (PCB) - RFID Domination Timer


    The PCB design envisages the use of the Arduino Nano board!
  • PCB is double-sided with overlays, dimensions: 104x101 mm
  • PCB production for Domination Timer

    The PCB design for the RFID Domination Timer (1.0) project is available in .lppz format (LibrePCB). The archive can be uploaded to the website of the German company AISLER, which can produce a printed circuit board by machine, including drilling and tapping holes. The standard production price is 23 € for three pieces, which is the minimum order (7 € / piece). The price is also with postage and low priority with delivery within 3 weeks of ordering. It is recommended to use a pin headre on the PCB, as it is possible to replace the hardware in the event of a fault without the need for soldering. Spacers can also be replaced by threaded rods. The box for the project is not designed. The PCB can be mounted in a box or on the wall through 4 mounting holes in the corners of the PCB. Production can also be realized at Chinese manufacturers - JLCPCB / PCBWAY ...

    PCB for RFID Domination Timer - Arduino - AISLER RFID Domination Timer with PCB - back side Arduino Nano

    Pin headers in PCB design (* - optional:

  • 2x female pin-header 15-pin (for Arduino Nano)*
  • 1x female pin-header 8-pin (for RFID reader RC522)*
  • 1x female 90° pin-header 4-pin (for I2C LCD display converter 20x4)
  • Spacers in the design of PCB:

  • 4x spacer for character LCD display 20x4 (M3 15x6 mm), 4x M3 screw, 4x M3 nut
  • 2x spacer for RFID NXP RC522 (M3 15x6 mm), 2x M3 screw, 2x M3 nut
  • 2x mounting holes (M3 screw / threaded rod)
  • Part dimensions:

    A PDF document with part dimensions is available: HERE

    Table connection of terminals - RFID Domination Timer - fully corresponds to the wiring diagram:

    Arduino Uno / Nano (ATmega328P) NXP RFID RC522
    GND GND
    3V3 3V3
    D9 RST
    D10 SDA (SS)
    D11 MOSI
    D12 MISO
    D13 SCK
    Arduino Uno / Nano (ATmega328P) I2C converter for LCD display
    GND GND
    5V Vcc
    A4 (Hardware SDA) SDA
    A5 (Hardware SCL) SCL
    Arduino Uno / Nano (ATmega328P) Buzzer
    GND GND
    5V Vcc
    D5 IN
    Arduino Uno / Nano (ATmega328P) LED diodes
    GND GND
    D4 IN (RED)
    D3 IN (GREEN)

    Wiring diagram - RFID Domination Timer:


    Airsoft Domination Timer RFID

    Test program (Shareware) - RFID Domination Timer with machine code


    Shareware version in the form of machine code (.hex) for the Arduino microcontroller (ATmega328P) is available for the RFID Domination Timer project. The version allows you to initially record 4 different UID RFID cards, which are assigned to the RED, GRE, Referee and Eraser teams. Request to enter a specific card is displayed on the LCD character display 16x2 or 20x4 with I2C converter. Subsequently, it is possible to test the game mechanics and the response of the reader to the RFID card with time visualization on the display. It is possible to measure a maximum of 15 seconds of play for each team with the possibility of resetting it with an Eraser card and measuring again for 15 seconds. The goal of the version is to verify compatibility with your hardware. Machine code can be uploaded to the Arduino Uno microcontroller via the AVRDUDE software - part of the Arduino IDE, or with a GUI interface via XLoader - easier to use.

  • AVRDUDE must be run via the CMD (command line) installed with the Arduino IDE. Located in C:/Users/User/Documents/ArduinoData/packages/arduino/tools/avrdude/6.X.X-arduino/bin
  • Sample command to upload a program to Arduino Uno / Nano (ATmega328P):
  • avrdude -CC: avrdude.conf -v -patmega328p -carduino -PCOM21 -b115200 -D -Uflash:w:sketch.ino.hex:i
  • XLoader is a Windows application (executable .exe tool) with a simple graphical interface which allows you to select the firmware - machine code (.hex), the target platform and can dynamically show the COM port on which the device is located.
  • By simply clicking on Upload, machine code can be uploaded automatically ( XLoader uses similar as Arduino IDE tool AVRDUDE). The XLoader window informs you of a successful upload by listing the number of bytes uploaded.
  • The firmware can be downloaded from the project repository: HERE . Firmware is in folder of the project repository /rfid_dominator/ divided according to the address of the I2C converter (you found out from the I2C scanner output to the UART interface).

    Available firmware (Shareware) - RFID Domination Timer


    Firmware name (in the rfid_dominator folder) Designed for Download
    Shareware_RFID_DOMINATOR.hex LCD character display size 16x2 or 20x4 with I2C converter Download firmware

    Demonstration of functionality - Shareware RFID Domination Timer:


    RFID Domination Timer for Airsoft / Paintball - shareware Arduino firmware
    In the case of the latest Chinese Arduino Nano clones, which have an "Old Bootloader", it is necessary to record at 57600 baud / s! For other versions with the newer Bootloader 115200 baud / s (this speed is also used in the AVRDUDE command to load machine code).

    Program for reading UID addresses of RFID cards for Domination Timer


    The program is used to read the identifiers (UID) of RFID tags, cards that will be used in the program for RFID Domination Timer - this source code does not represent RFID DOMINATOR or its logic! . The UID RFID card is written to the serial (UART) monitor - the used speed is 9600 baud / s (characters per second). The statement should be saved and rewritten in a clear .xls (EXCEL) document, which will facilitate the management of assigned RFID cards to specific teams and entities for the final RFID DOMINATOR application, whose machine code is tied to the supplied UID cards. To successfully upload the source code for loading UID cards, you need to import the MFRC522 library into your Arduino IDE.


    Available libraries for microcontrollers (Arduino)


    Library archive (.zip) expand to C:/Users/[User]/Documents/Arduino/libraries
    Library name Library function Download
    MFRC522

    Library for AVR microcontrollers (ATmega) Arduino Uno / Nano / Mega. It allows to communicate with RFID reader NXP RC522 via SPI bus.

    Download

    Example of stored UID RFID cards - Excel document .xls:


    Physical UID of RFID cards stored in a clear Excel document
    Software implementation - DOMINATION TIMER RFID
    Template for storing identifiers (UID) of RFID cards: On-line template Google Spreadsheets Offline template .xlsx
    /*|-------------------------------------------------|*/
    /*|Title: Reading RFID cards UID (unique identifier)|*/
    /*|Compatible for Arduino Uno / Nano / ATmega328P   |*/
    /*|Author: Martin Chlebovec (martinius96@gmail.com) |*/
    /*|E-mail: martinius96@gmail.com                    |*/
    /*|Revision: 28. July 2022                          |*/
    /*|-------------------------------------------------|*/
    
    
    //Template for writing RFID codes for RFID DOMINATION TIMER - Google SpreadSheet: https://docs.google.com/spreadsheets/d/1EHpdJi8v84eJ-6ExEPT6JuPkxI9Tfbm8v85zGRFvJ1Q/edit?usp=sharing
    
    #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);
      Serial.println(F("Reading of RFID cards for RFID Domination Timer"));
      SPI.begin();
      rfid.PCD_Init(); // Init MFRC522
      rfid.PCD_SetAntennaGain(rfid.RxGain_max);
      rfid.PCD_DumpVersionToSerial(); //Write version of Firmware to UART
    }
    
    void loop() {
      if (rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()) {
        dump_byte_array(rfid.uid.uidByte, rfid.uid.size);
        rfid.PICC_HaltA();
        rfid.PCD_StopCrypto1();
      }
    }
    
    void dump_byte_array(byte *buffer, byte bufferSize) {
      for (byte i = 0; i < bufferSize; i++) {
      }
      Serial.print(F("Detected UID (code) of RFID CARD: "));
      unsigned long code = 10000 * buffer[4] + 1000 * buffer[3] + 100 * buffer[2] + 10 * buffer[1] + buffer[0]; //finalny kod karty
      Serial.println(code);
    }
    

    Program optimization for RFID DOMINATOR:


    UID numbers of RFID cards for RED, GRE, Referee and Eraser inserted into fields that can be easily scaled to expand the number of players assigned to a particular group. Entire arrays are stored in the microcontrollers flash memory as row-only segments, so the arrays do not have to run in RAM to take up the RAM used by DOMINATOR. The standard RFID DOMINATOR program for 10x UID for RED and GRE team and 2x UID for Referee and Eraser takes up 9512 bytes of flash memory, i. 30% and 501 bytes of RAM, i. 24%. Static strings (const) of a variable stored in PROGMEM. Used F macro for static reports on the UART monitor or on the LCD character display.