Repozitár s projektom - schémami zapojenia, strojovými kódmi (firmware/Button-DOMINATOR) pre testovanie - Github: Airsoft - RFID DOMINATOR - Arduino
Pri záujme o firmvér pre tlačidlový DOMINATOR v strojovom kóde kontaktujte na:

martinius96@gmail.com

Arduino LCD Tlačidlo Stopky Schéma I2C Paintball DOMINATOR

Tlačidlový DOMINATOR - stopky pre Airsoft | Paintball


Entity v projekte tlačidlový DOMINATOR:

Tím RED - tlačidlo pre používateľský vstup
Tím RED
Tím GRE - tlačidlo pre používateľský vstup
Tím GRE
Rozhodca - tlačidlo pre používateľský vstup
Rozhodca
Eraser - tlačidlo pre používateľský vstup
Eraser

Popis projektu Tlačidlový DOMINATOR


Tlačidlový DOMINATOR je zariadenie - stopky pre športy typu Airsoft, Paintball. Stopky využívajú riadiaci mikrokontróler Arduino (Arduino Uno / Nano), prípadne samostatný čip (Atmel) AtMega328P, ktorý ovláda celú logiku systému. 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. Tlačidlový DOMINATOR využíva tlačidlový vstup pre akciu obsadenia bodu členom tímu, rovnako aj pre vstup entity rozhodcu a erasera. Celkom teda 4 tlačidlá pre 4 entity systému, využívajú sa spínacie tlačidlá zapojené v režime INPUT_PULLUP. Stlačením tlačidla sa privedie GND signál na vstupný digitálny vývod Arduina (Active-LOW spínací signál). Používajú sa spínacie tlačidlá, nie rozpínacie (nereagovali by na logiku systému, boli by vždy všetky softvérovo "stlačené"). V základnej verzii DOMINATOR reaguje okamžite na stlačenie - aktivuje sa počítanie času pre daný tím (neoveruje sa dĺžka stlačenia, počet stlačení a iné...). Časy sú vypísané na LCD znakový displej rozmeru 16x2, prípadne 20x4, ktorý komunikuje s riadiacim mikrokontrolérom po I2C zbernici. Ak tím člen tímu RED obsadí bod stlačením tlačidla, spustí sa buzzer, ktorý krátkym pípnutím 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 člen tímu stlačí príslušné tlačidlo, opäť sa ozve buzzer, rozsvieti sa dióda tímu GRE, čas tímu RED sa pauzuje a počíta sa čas tímu GRE, ktorý bod obsadil. Ak svoje tlačidlo stlačí organizátor (rozhodca), oba časy sa zapauzujú až do momentu, kým nevykoná používateľský vstup člen niektorého z tímov. Tento typ vstupu je tak vhodný pre spustenie prestávky, ale môže taktiež ukončiť hru pre jej vyhodnotenie. Tlačidlový DOMINATOR má ešte štvrté tlačidlo pre entitu eraser, ktorá oba časy zapauzuje a vynuluje na počiatočné hodnoty ako po spustení stopiek Tlačidlový DOMINATOR. Slúži pre reštart hry, inicializáciu novej hry. Projekt je vhodný pre Airsoft akcie, športové areály, čí Airsoft tímy, ktoré si môžu dané zariadenie zostrojiť. Výhodou systému Tlačidlový DOMINATOR je, že ho je možné klonovať a vytvoriť si X bodov s totožnou konfiguráciou prostredníctvom strojového kódu, ktorý je možné nahrávať do neobmedzeného počtu Arduino dosiek a čipov a zaručuje totožný chod aplikácie. Hráči tak môžu v hre obsadzovať viacero bodov, pričom sa na konci hry sčíta čas, ako dlho bol ktorý bod obsadený ktorým tímom. Je možné využiť aj tlačidlá s integrovanou dútnavkou, ktorá zlepší čítateľnosť a odhalí farbu jednotlivých tlačidiel v šere, tme.


Kompatibilný riadiaci hardvér pre tlačidlový 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

Periférie pre tlačidlový DOMINATOR:


LCD znakový displej 16x2 / 20x4
LCD znakový displej 16x2 / 20x4
I2C prevodník pre LCD displej
I2C prevodník pre LCD displej
Spínacie tlačidlo (pushbutton)
4x spínacie tlačidlo (pushbutton)
Hlásič
Hlásič
2x LED diódy
2x LED diódy
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 20mAh pri 5V napájaní. Vhodné napájať cez powerbanku, nabíjačku od telefónu s USB výstupom.

Tlačidlový DOMINATOR za behu v Airsoft hre


Airsoft Dominator RFID

Tlačidlový DOMINATOR - ukážka funkčnosti a logiky systému



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


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
5V Vcc
D5 IN
Arduino Uno / Nano (AtMega328P) LED diódy
GND GND
D4 IN (RED) LED
D3 IN (GREEN) LED
Arduino Uno / Nano (AtMega328P) Tlačidlá (INPUT_PULLUP)
GND GND
D6 IN (GREEN)
D7 IN (ERASER)
D8 IN (Rozhodca)
D9 IN (RED)

Schéma zapojenia - Tlačidlový DOMINATOR:


Airsoft Dominator RFID

Testovací program (Shareware) - Tlačidlový DOMINATOR so strojovým kódom


K projektu Tlačidlový DOMINATOR je dostupná Shareware verzia (.hex). Verzia umožňuje merať maximálne 15 sekúnd hry pre každý tím. Cieľom verzie je overiť kompatibilitu s vašim hardvérom. V Github repozitári sú dostupné strojové kódy na základe I2C adresy prevodníka pre LCD displej. Najpoužívanejšie adresy sú 0x27 a 0x3F. Ak neviete adresu vášho prevodníka využite vstavaný príklad v Arduino IDE --> I2C Scanner, ktorý vám adresu vypíše na UART rozhranie (Sériový monitor). Strojový kód je možné nahrať do mikrokontroléru Arduino Uno cez softvér AVRDUDE - súčasť Arduino IDE, prípadne s GUI rozhraním cez XLoader - ľahšie na použitie.

  • AVRDUDE je nutné spustiť cez CMD (príkazový riadok) je nainštalované s prostredím Arduino IDE. Nachádza sa v C:/Users/User/Documents/ArduinoData/packages/arduino/tools/avrdude/6.X.X-arduino/bin
  • Vzorový príkaz pre nahratie programu do Arduino Uno / Nano (AtMega328P):
  • avrdude -CC: avrdude.conf -v -patmega328p -carduino -PCOM21 -b115200 -D -Uflash:w:sketch.ino.hex:i
  • XLoader je Windows aplikácia (spusiteľný .exe nástroj) s jednoduchým grafickým rozhraním, ktoré umožňuje výber firmvéru - strojového kódu (.hex), cieľovej platformy a vie dynamicky ukázať COM port, na ktorom sa zariadenie nachádza.
  • Jednoduchým kliknutím na Upload je možné strojový kód automatizovane nahrať (XLoader využíva podobne ako Arduino IDE nástroj AVRDUDE). Okno XLoadera informuje o úspešnom uploade formou výpisu počtu uploadovaných bajtov.
  • Firmvér je možné stiahnuť z repozitára projektu: TU. Firmvér je v priečinku Github repozitáru projektu /firmware/button_dominator/ rozdelený podľa adresy I2C prevodníka (zistili ste z I2C scanner výstupu na UART rozhranie).

    Dostupný firmvér (Shareware) - Tlačidlový DOMINATOR


    Názov firmvéru (v priečinku button_dominator) Určené pre Stiahnuť
    0x27.ino.hex LCD znakový displej rozmeru 16x2, alebo 20x4 s I2C prevodníkom, ktorý komunikuje na adrese 0x27 Stiahnuť firmvér
    0x3F.ino.hex LCD znakový displej rozmeru 16x2, alebo 20x4 s I2C prevodníkom, ktorý komunikuje na adrese 0x3F Stiahnuť firmvér
    V prípade najnovších čínskych klonov Arduino Nano, ktoré majú "Old Bootloader" je nutné nahrávať rýchlosťou 57600 baud/s! Pri iných verziách s novším Bootloaderom 115200 baud/s (táto rýchlosť je použitá aj v AVRDUDE príkaze pre nahratie strojového kódu).

    Nahrávanie Shareware verzie projektu Tlačidlový DOMINATOR do Arduina cez XLoader


    XLoader - Arduino - AVRDUDE - Tlačidlový DOMINATOR - testovací program

    Všeobecný videonávod pre upload firmvéru do Arduina cez XLoader



    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
    }