Github repozitár projektu RFID DOMINATOR: RFID Dominator - Arduino - AtMega328P
Pri záujme o firmvér pre RFID DOMINATOR v strojovom kóde kontaktujte na:

martinius96@gmail.com

Arduino LCD RFID, NFC RC522 Stopwatch Schematics Airsoft Paintball DOMINATOR

RFID DOMINATOR - stopky pre Airsoft | Paintball


Nová verzia projektu RFID DOMINATOR (Domination Timer) podporuje tieto typy firmvéru RFID čítačky NXP RC522:
  • Firmware version: 0x12 = counterfeit chip - (neoriginálny NXP čip, náhrada)
  • Firmware version: 0x91 = Version 1.0 - (originálny NXP čip)
  • Firmware version: 0x92 = Version 2.0 - (originálny NXP čip)

  • Entity v hre RFID DOMINATOR pre Airsoft:


    RFID náramok štandardu ISO/IEC 14443-A - Tím RED
    Tím RED
    RFID náramok štandardu ISO/IEC 14443-A - Tím GRE
    Tím GRE
    RFID náramok štandardu ISO/IEC 14443-A - Rozhodca
    Rozhodca
    RFID náramok štandardu ISO/IEC 14443-A - Eraser
    Eraser

    Popis projektu RFID DOMINATOR pre Airsoft:


    DOMINATOR (Domination Timer) je zariadenie - stopky pre športy typu Airsoft, Paintball s riadiacim mikrokontorlérom Arduino (Uno / Nano) s AVR čipom AtMega328P. Súčasťou stopiek je LCD znakový displej rozmeru 16x2 (16 znakov x 2 riadky), respektíve 20x4, na ktorom sa vyobrazujú časy jednotlivých tímov. V hre sú 2 tímy - RED tím a GRE tím, ktoré proti sebe hrajú a zaberajú pomyselný bod, ktorý je tvorený týmto zariadením - DOMINATOR. Na začiatku hry sú na displeji vypísané časy 00 hodín, 00 minút, 00 sekúnd pre RED tím, GRE tím. Každý z členov tímu je vybavený kartou, náramkom, prípadne kľúčenkou, ktorá komunikuje na frekvencii 13.56 MHz s RFID čítačkou, ak je v jej dosahu. Kľúčenky a náramky môžu byť farebné odlíšené (zelené, červené podľa tímu a funkcie...), čo umožňuje ich efektívnejšiu distribúciu hráčom, ale aj ich archiváciu a uskladnenie. Ak tím RED obsadí bod, hráč tímu priloží svoju kartu k čítačke, čím bod obsadí. Táto akcia spustí buzzer, ktorý ohlási zmenu na bode. Následne sa rozsvieti LED dióda tímu RED na tomto stanovišti a na displeji sa začne pripočítavať čas pre tento tím. V prípade, že bod obsadí tím GRE a kartu priloží k čítačke člen tohto tímu, opäť sa ozve buzzer, rozsvieti sa dióda tohto tímu, čas tímu RED sa pauzuje a počíta sa čas tímu GRE, ktorý bod obsadil.


    Ak kartu / kľúčenku priloží organizátor (rozhodca), oba časy sa zapauzujú až do momentu, kým nepriloží kartu niektorý z tímov. Tento typ karty je tak vhodný pre spustenie prestávky, ale môže byť využitá aj pri ukončení hry, kedy je nutné čas zastaviť pre vyhodnotenie hry. Ak kartu priloží Eraser, oba časy sa zastavia a zároveň sa vynulujú na počiatočnú hodnotu 00 hodín, 00 minút, 00 sekúnd, ktorá sa vypíše na displej. Karta Eraser slúži pre reštart hry, inicializáciu novej hry bez nutnosti power-on cyklu. Projekt je vhodný pre Airsoft akcie, športové areály, čí Airsoft tímy, ktoré si môžu dané zariadenie Dominator zostrojiť s funkčným firmvérom ku ktorému existuje schéma zapojenia i návrh plošného spoja pre strojové vyrábanie s vŕtaním. Výhodou projektu RFID DOMINATOR je, že licencia oprávňuje klonovať a vytvoriť si X bodov s totožnou konfiguráciou prostredníctvom strojového kódu. Do hry je tak možné umiestniť ľubovoľný počet nezávisle na sebe fungujúcich RFID DOMINATOR bodov, ktoré reagujú na totožné RFID karty. Systém je otestovaný, funkčný, možno rýchlo nasadiť na kompatibilný hardvér. Čítačka NXP RC522 pracuje na frekvencii 13.56 MHz, RFID tagy registruje na cca 3 centimetre (nutný skoro až fyzický dotyk s čítačkou), kompatibilný formát tagov ISO/IEC 14443-A (MIFARE CLASSIC 1K, DesFire EV1, spätná kompatibilita s ISO/IEC 14443-4). Pod danú normu tagov spadajú aj ISIC, autobusové karty, ktoré fungujú ako NFC karty a dokážu oznámiť svoju fyzickú adresu - UID čítačke v dosahu.


    Výpis časov na LCD znakovom displeji 20x4:


    LCD character display 20x4 - Arduino Domination Timer - DOMINATOR

    Kompatibilný riadiaci hardvér pre RFID DOMINATOR:


    Riadiaci mikrokontróler Arduino Uno
    Arduino Uno
    Riadiaci mikrokontróler Arduino Nano
    Arduino Nano
    Riadiaci mikrokontróler AtMega328P DIP
    AtMega328P - DIP28
    Riadiaci mikrokontróler AtMega328P SMD
    AtMega328P - SMD

    Kompatibilné periférie pre RFID DOMINATOR:


    LCD znakový displej 16x2 / 20x4
    LCD znakový displej 16x2 / 20x4
    I2C prevodník pre LCD displej
    I2C prevodník pre LCD displej
    RFID čítačka NXP RC522
    RFID čítačka NXP RC522
    RFID čipy štandardu ISO/IEC 14443-A
    RFID čipy štandardu ISO/IEC 14443-A
    Hlásič
    Hlásič
    2x LED diódy
    2x LED diódy
    RFID DOMINATOR - DOMINATION TIMER

    Princíp funkčnosti projetku RFID DOMINATOR po hardvérovej stránke:


    RFID čítačka NXP RC522 komunikuje s mikrokontrolérom (Arduino / samostatný čip AtMega328P) po SPI zbernici s hodinovým signálom (CLK) 4 MHz. Čítačka reaguje na vzdialenosť čipu cca 3cm od antény, pričom má konfigurovateľný zisk antény v rozsahu 18 až 48 dB (48 dB je použité vo finálnej aplikácii). Načítava UID (identifikátor) RFID kariet v dosahu, preposiela tento identifikátor Arduinu. Arduino načítanú adresu karty porovná v multipodmienke, aplikuje digitálne stavy na diódy, beží na ňom univerzálne počítadlo riadené funkciou millis(), ktoré zodpovedá za počítanie oboch časov. Na základe splnenej podmienky sa začne počítadlo aplikovať na daný tím, ktorému UID prislúcha. Čas je posielaný po I2C zbernici na znakový displej 20x4, kde je vykreslený na konkrétny riadok - prepisuje sa iba konkrétna pozícia pre čo najrýchlejšiu obnovu času. Výpis všetkých úprav na displej trvá do 30ms pri rýchlosti I2C zbernice 100 kHz - Standard speed, ktorý je použitý. Pri vážnom záujme možno vytvoriť firmvér v strojovom kóde pre AtMega328P na mieru aj pre iné typy RFID čítačiek: RDM6300, PN532, Wiegand W26, zvýšenie hodinového signálu I2C zbernice až na 400 kHz (Fast Speed).

    Maximálny rozsah času, ktorý môže byť vypísaný v systéme: 99 hodín, 59 minút a 59 sekúnd
    Spotreba: cca 110mAh pri 5V napájaní. Vhodné napájať cez powerbanku, nabíjačku od telefónu s USB výstupom.

    Určenie projektu RFID DOMINATOR:


    Projekt RFID DOMINATOR je z hľadiska jeho univerzálnosti vhodný pre implementáciu do Airsoft akcií a s možnosťou klonovania firmvéru je tak možné do herného poľa osadiť X DOMINATOR bodov s identickým firmvérom, o ktoré môžu hráči hrať s rovnakými RFID kartami. DOMINATOR sa hodí aj pre tímy, športové areály a ihriská ktoré tak môžu týmto zariadením rozšíriť ponúkané služby a herné módy pre rôzny počet hráčov. Ak sú RFID karty, náramky, respektíve kľúčenky farebne odlíšené, je veľmi ľahké a univerzálne ich distribuovať hráčom na základe ich tímu. Jednoduchá je aj ich archivácia. Použitie kariet, náramkov, respektíve kľúčeniek je ľahké a zvládnu to všetky vekové kategórie v Airsoft hrách. Samotný RFID čip je chránený v plastovom puzdre, nevadí mu špina, voda, je plne bezúdržbový. Nemá batériu, čip aktivuje RFID čítačka, ktorá ho vysielaným elektromagnetickým poľom nabije a umožní mu vyslať UID ak je v dosahu RFID čítačky. DOMINATOR je vhodný pre herné módy s rovnakým počtom hráčov v oboch tímoch, napr. DOMINATION, Capture Point (Points v prípade viac klonovaných DOMINATOR bodov). Využitie je predovšetkým pre športy Airsoft, Paintball hry.


    Ukážka funkčnosti - RFID DOMINATOR:



    Doska Plošných Spojov - (DPS) - RFID DOMINATOR - GERBER / výroba fotocestou


    DPS návrh počíta s využitím dosky Arduino Nano
  • DPS je obojstranná s prekovmi, rozmery: 100x105mm

  • Výroba DPS pre RFID DOMINATOR v Číne / na Slovensku


    DPS je možné nechať si vyrobiť na Slovensku u PB Spoj, kde dokážu vyrobiť obojstrannú DPS. Výrobu je možné zrealizovať napríklad v Číne, kde dokážu vyrobiť obojstrannú DPS z GERBER návrhu. Jeden z najpopulárnejších a najlacnejších výrobcov je JLCPCB, kde je možné GERBER súbory priamo nahrať ako .zip archív. DPS sa vizualizuje, automaticky sa nastavia vrsty, rozmery DPS, obojstranná DPS. Výroba trvá 1-2 dni. Kedysi sa tento výrobca preslávil akciou výroby 10 kusov PCB za 2 doláre.


    Dnes JLCPCB umožňuje vyrobiť 5 kusov tejto DPS pre RFID DOMINATOR za 6.96€, 10 kusov za 10.16€ (aktuálne k januáru 2021, ceny stúpajú). Preprava - dostupná najlacnejšia alternatíva za 7.44€ až po DHL s doručením do 3-5 pracovných dní, pričom cena prepravy je 23.16€. JLCPCB automaticky aplikuje zľavový kupón na 8€ pre prepravu, ktorý vám pridelí po registrácii. Teda s najlacnejšou prepravnou alternatívou s doručením do 25 dní je táto preprava pri prvom nákupe zdarma vďaka kupónu. Zaujímavým výrobcom PCB je aj AISLER, ktorý ponúka výrobu DPS od 3 kusov s cenou cca 7,6€ za kus s poštovným zdarma, prípadne ponúka aj možnosť doručenia za príplatok cez UPS. Taktiež je možné využiť aj iných dostupných výrobcov, napríklad: PCBWay, AllPCB, NextPCB, SeeedStudio, ktorí majú technológiu pre výrobu DPS strojovou metódou z GERBER súborov.

    DPS pre Airsoft DOMINATOR - AISLER Osadená DPS s komponentami pre RFID Dominator

    Pin headre v DPS návrhu:


  • 2x female pin-header 15-pin (pre Arduino Nano)
  • 1x female pin-header 8-pin (pre RFID čítačku NXP RC522)
  • 1x female 90° pin-header 4-pin (pre I2C prevodník LCD displeja 20x4)

  • Distančné stĺpiky v DPS návrhu:


  • 4x distančný stĺpik pre znakový LCD displej 20x4 (Ø max 2.5 mm)
  • 2x distančný stĺpik pre RFID NXP RC522 (Ø max 3.5 mm)

  • Rozmery súčiastok:


    PDF dokument s rozmermi súčiastok je dostupný: TU

    Tabuľkové zapojenie vývodov - RFID DOMINATOR - plne odpovedá schéme zapojenia:


    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 prevodník pre LCD displej
    GND GND
    5V Vcc
    A4 (Hardware SDA) SDA
    A5 (Hardware SCL) SCL
    Arduino Uno / Nano (AtMega328P) Buzzer (hlásič)
    GND GND
    D5 IN
    Arduino Uno / Nano (AtMega328P) LED diódy
    GND GND
    D4 IN (RED)
    D3 IN (GREEN)

    Schéma zapojenia - RFID DOMINATOR:


    Airsoft Dominator RFID

    Program pre načítanie UID adries RFID kariet pre DOMINATOR


    Program slúži na načítanie identifikátorov (UID) RFID tagov, kariet, ktoré budú použité v programe pre RFID DOMINATOR - tento zdrojový kód nereprezentuje RFID DOMINATOR, ani jeho logiku!. Výpis UID RFID karty sa realizuje do sériového (UART) monitoru - použitá rýchlosť 9600 baud/s (znakov za sekundu). Výpis je vhodné ukladať a prepísať do prehľadného .xls (EXCEL) dokumentu, ktorý uľahčí správu priradených RFID kariet ku konkrétnym tímom a entitám pre finálnu aplikáciu RFID DOMINATOR, ktorej strojový kód je viazaný na dodané UID kariet. Pre úspešné nahratie zdrojového kódu pre načítanie UID kariet je nutné importovať knižnicu MFRC522 do vášho prostredia Arduino IDE. Knižnica MFRC522 vo verzii 1.4.8: Github repozitár - stiahnuť .zip archív a obsah archívu nakopírovať do Arduino/libraries (zložka sa nachádza najčastejšie v Dokumentoch, alebo podľa vlastnej inštalácie v inom umiestnení).


    Príklad uložených UID RFID kariet - Excel dokument .xls:


    Fyzické UID RFID kariet uložené v prehľadnom Excel dokumente

    Excel (.xls) šablóna pre zápis UID - ON-line Google Tabuľky: Google Tabuľky - RFID DOMINATOR Template

    Programová implementácia - DOMINATION TIMER RFID
    /*|-------------------------------------------------|*/
    /*|Názov: Načítanie UID RFID kariet                 |*/
    /*|Popis: Načíta prostredníctvom RFID čítačky RC522 |*/
    /*|adresu RFID karty, ktorá je priložená a vypíše   |*/
    /*|UID na UART rozhranie.                           |*/
    /*|Zaznamenané UID kariet sa použijú pre DOMINATOR  |*/
    /*|Autor: Bc. Martin Chlebovec                      |*/
    /*|E-mail: martinius96@gmail.com                    |*/
    /*|Licencia pouzitia: MIT                           |*/
    /*|Revízia: 12. Marec 2021                          |*/
    /*|-------------------------------------------------|*/
    
    
    // Šablóna - Google SpreadSheet: https://docs.google.com/spreadsheets/d/1EHpdJi8v84eJ-6ExEPT6JuPkxI9Tfbm8v85zGRFvJ1Q/edit?usp=sharing
    
    
    /*
     * Typical pin layout used:
     * -----------------------------------------------------------------------------------------
     *             MFRC522      Arduino       Arduino   Arduino    Arduino          Arduino
     *             Reader/PCD   Uno/101       Mega      Nano v3    Leonardo/Micro   Pro Micro
     * Signal      Pin          Pin           Pin       Pin        Pin              Pin
     * -----------------------------------------------------------------------------------------
     * RST/Reset   RST          9             5         D9         RESET/ICSP-5     RST
     * SPI SS      SDA(SS)      10            53        D10        10               10
     * SPI MOSI    MOSI         11 / ICSP-4   51        D11        ICSP-4           16
     * SPI MISO    MISO         12 / ICSP-1   50        D12        ICSP-1           14
     * SPI SCK     SCK          13 / ICSP-3   52        D13        ICSP-3           15
     *
     */
    #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(112); // set to max (00001110)
      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);
    }
    

    Optimalizácia programu pre RFID DOMINATOR:


    Čísla UID RFID kariet pre RED, GRE, rozhodcu a erasera vložené do polí, ktoré môžu byť ľahko škálovateľné pre rozšírenie počtu hráčov, ktorí sú priradený ku konkrétnej skupine. Celé polia sú uložené do flash pamäte mikrokontroléru ako rad-only segmenty, teda polia nemusia bežať v RAM pamäti zaberať tak operačnú pamäť, ktorú DOMINATOR využíva. Štandardný program RFID DOMINATOR-a pre 10x UID pre RED i GRE tím a 2x UID pre Rozhodcu a Erasera zaberá 9512 bajtov flash pamäte, t.j. 30% a 501 bajtov pamäte RAM, t.j. 24%. Statické reťazce (const) premenné uložené do PROGMEM. Použité F makro pre statické výpisy na UART monitor, prípadne na LCD znakový displej.


    I2C Scanner - program pre načítanie adresy I2C prevodníka pre LCD displej


    Očakávaný výstup programu I2C Scanner:


    Výpis I2C adresy, na ktorej komunikuje I2C prevodník pre displej 16x2 / 20x4

    Knižnica Wire je vstavaná do Arduino IDE, nie je nutná jej inštalácia. Program je možné skompilovať a overiť komunikáciu po I2C zbernici s LCD znakovým displejom. I2C prevodník je vhodné pripojiť k Arduinu na hardvérové I2C vývody (SCL na A5, SDA na A4) ešte pred nahratím programu, stačí aj bez dispelja. Načítanú adresu displeja je nutné dodať pre úspešný build pre Arduino spolu s UID RFID kariet.

    #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
    }
    
    Získejte registraci domén s tld .online, .space, .store, .tech zdarma!
    Stačí si k jedné z těchto domén vybrat hosting Plus nebo Mega a registraci domény od nás dostanete za 0 Kč!
    Objednat