Репозиторий проекта - схемы подключения, машинные коды для тестирования - Github: Airsoft - RFID DOMINATOR - Arduino
Если вас интересует программная реализация проекта Domination Timer, обращайтесь на английском языке: martinius96@gmail.com
Arduino LCD RFID, NFC RC522 Stopwatch Schematics Airsoft Paintball Domination Timer

RFID Domination Timer - секундомер для | Paintball


Новая версия проекта RFID DOMINATOR (Domination Timer) поддерживает эти типы прошивок RFID-считывателей NXP RC522:
  • Firmware version: 0x12 = counterfeit chip - (неоригинальный чип NXP, замена)
  • Firmware version: 0x91 = Version 1.0 - (оригинальный чип NXP)
  • Firmware version: 0x92 = Version 2.0 - (оригинальный чип NXP)
  • Сущности пользователей в проекте RFID Domination Timer с цветовой кодировкой:

    RFID-браслет стандарта ISO / IEC 14443-A - Tím RED
    Команда RED
    RFID-браслет стандарта ISO / IEC 14443-A - Tím GRE
    Команда GRE
    RFID-браслет стандарта ISO / IEC 14443-A - Рефери
    Рефери
    RFID-браслет стандарта ISO / IEC 14443-A - Ластик
    Ластик

    Описание проекта:

    Domination Timer (DOMINATOR) - это устройство - секундомер для таких видов спорта, как страйкбол, пейнтбол. В секундомере используется управляющий микроконтроллер Arduino (Arduino Uno / Nano) или отдельный чип (Atmel) AtMega328P, который контролирует всю системную логику. Секундомер включает в себя символьный ЖК-дисплей размером 16x2 (16 символов x 2 строки) или 20x4, на котором отображается время отдельных команд. В игре участвуют 2 команды - RED команда и команда GRE которые играют друг против друга и занимают воображаемую точку, которую образует это устройство - ДОМИНАТОР. В начале игры на дисплее отображается время 00 часов, 00 минут, 00 секунд для RED команда , GRE команда . Каждый член команды снабжен картой, браслетом или брелоком, который на частоте 13,56 МГц обменивается данными с RFID-считывателем, если он находится в пределах досягаемости. Брелки и браслеты могут иметь цветовую кодировку (зеленый, красный в зависимости от команды и функции ...), что позволяет более эффективно распространять их среди игроков, а также их архивирование и хранение.


    Если RED команда занимает очко, командный игрок прикрепляет свою карту к считывателю, таким образом занимая очко. Это действие вызывает зуммер, сообщающий об изменении точки. Затем загорится КРАСНЫЙ светодиод команды на этой станции, и на дисплее начнется добавление времени для этой команды. Если группа GRE занимает точку и член этой команды прикрепляет карту к считывателю, снова звучит зуммер, загорается светодиод этой команды, время команды RED приостанавливается, и время команды учитывается. GRE, который занял точку. Если карту / брелок прикрепляет организатор (судья), оба раза приостанавливаются, пока одна из команд не вставит карту. Таким образом, этот тип карты подходит для начала перерыва, но также может использоваться в конце игры, когда необходимо остановить время, чтобы оценить игру. В Domination Timer все еще есть четвертый тип карты - ластик, который приостанавливает оба раза и сбрасывает до начальных значений, как после запуска секундомера DOMINATOR. Используется для перезапуска игры, инициализации новой игры. Проект подходит для мероприятий по страйкболу, спортивных сооружений или команд по страйкболу, которые могут собрать оборудование. Преимущество системы Domination Timer заключается в том, что систему можно клонировать и создавать X-точки с той же конфигурацией с помощью машинного кода, с которыми можно бороться независимо в игре, в то время как карты RFID будут полностью работать на всех устройствах DOMINATOR. Система проверена, работоспособна, проста в обслуживании. Считыватель NXP RC522 работает на частоте 13,56 МГц, регистрирует метки RFID на расстоянии примерно 3 сантиметра (требуется почти физический контакт со считывателем), совместим с форматом меток ISO / IEC 14443-A. Данный стандарт тегов также включает ISIC, шинные карты, которые функционируют как карты NFC и могут передавать свой физический адрес - UID считывающему устройству в пределах диапазона.


    Список времен на символьном ЖК-дисплее 20х4:


    Список времен на символьном ЖК-дисплее 20х4

    Совместимое оборудование управления для RFID Domination Timer:



    Совместимая периферия для RFID Domination Timer:


    LCD znakový displej 16x2 / 20x4
    Символьный ЖК-дисплей 16x2 / 20x4
    I2C prevodník pre LCD displej
    Конвертер I2C для ЖК-дисплея
    RFID čítačka NXP RC522
    Считыватель RFID NXP RC522
    RFID čipy štandardu ISO/IEC 14443-A
    RFID-чипы стандарта ISO / IEC 14443-A
    Hlásič
    Зуммер
    2x LED diódy
    2x LED диоды
    RFID Domination Timer - DOMINATION TIMER

    Принцип работы аппаратной части:

    Считыватель RFID NXP RC522 взаимодействует с микроконтроллером (Arduino / автономный чип AtMega328P) через шину SPI с тактовым сигналом (CLK) 4 МГц. Считыватель реагирует на расстояние чипа около 3 см от антенны, в то время как он имеет настраиваемое усиление антенны в диапазоне от 18 до 48 дБ (48 дБ используется в конечном приложении). Получает UID (идентификатор) RFID-карт в диапазоне, пересылает этот идентификатор в Arduino. Arduino сравнивает адрес считанной карты в нескольких условиях, применяет цифровые состояния к диодам, запускает универсальный счетчик, управляемый функцией millis (), которая отвечает за счет обоих времен. На основании выполненного условия счетчик будет применен к данной команде, которой принадлежит UID. Время отправляется по шине I2C на символьный дисплей 20x4, где оно отображается в определенной строке - только определенная позиция перезаписывается для максимально быстрого восстановления времени. Перечисление всех настроек дисплея занимает до 30 мс при скорости шины I2C 100 кГц - Стандартная скорость, которая используется. В случае серьезного интереса можно создать прошивку в машинном коде для AtMega328P для измерения других типов считывателей RFID: RDM6300, PN532, Wiegand W26, увеличение тактового сигнала шины I2C до 400 кГц (Fast Speed).

    Максимальный диапазон времени, который может быть указан в системе: 99 часов 59 минут и 59 секунд.
    Потребление: около 110 мАч при питании 5 В. Удобно получать питание через внешний аккумулятор, зарядное устройство от телефона с выходом USB.

    Чтобы указать проект RFID Domination Timer:

    Проект RFID Domination Timer по своей универсальности подходит для реализации в действиях Airsoft, а с возможностью клонирования прошивки можно установить X очков DOMINATOR в игровом поле с идентичной прошивкой, в которую игроки могут играть с те же RFID-карты. Domination Timer также подходит для команд, спортивных и игровых площадок, которые могут использовать это устройство для расширения услуг и режимов игры, предлагаемых для разного количества игроков. Если RFID-карты, браслеты или брелоки имеют цветовую маркировку, это очень легко и повсеместно распространяется среди игроков в зависимости от их команды. Их архивирование также простое. Использовать карты, браслеты или брелки легко, и они подходят для всех возрастов в играх для страйкбола. Сам чип RFID защищен пластиковым корпусом, не боится грязи, воды, полностью не требует обслуживания. У него нет батареи, чип активирует считыватель RFID, который заряжает его передаваемым электромагнитным полем и позволяет ему отправлять UID, если он находится в пределах досягаемости считывателя RFID. Domination Timer подходит для режимов игры с одинаковым количеством игроков в обеих командах, например ДОМИНАЦИЯ, Точка захвата (точки для нескольких клонированных точек ДОМИНАТОРА). Он в основном используется для страйкбольных видов спорта, пейнтбольных игр.


    Демонстрация функциональности - RFID Domination Timer:



    Печатная плата - (PCB) - RFID Domination Timer - GERBER / изготовление по фото маршрут


    Конструкция печатной платы предусматривает использование платы Arduino Nano.
  • Печатная плата двухсторонняя с накладками, размеры: 100х105мм.
  • Производство печатных плат в Китае

    Печатные платы могут быть изготовлены в Словакии на PB Spoj, а также в Китае - машинное производство из файлов GERBER. Один из самых популярных и дешевых производителей: JLCPCB. Файлы GERBER можно выгружать непосредственно в виде архива, при этом печатная плата визуализируется, автоматически устанавливаются записываемые ею слои и размеры печатной платы. Изготовление 1-2 дня. Этот производитель когда-то был известен тем, что производил 10 печатных плат за 2 доллара. Сегодня JLCPCB позволяет изготовить 5 частей этой печатной платы для RFID Domination Timer за 6,96 евро, 10 штук за 10,16 евро. Транспорт - самая дешевая альтернатива - 7,44 € до DHL с доставкой в течение 3-5 рабочих дней, при стоимости транспорта 23,16 €. JLCPCB автоматически применит купон на скидку в размере 8 евро на доставку, который будет назначен вам после регистрации. Таким образом, с самой дешевой альтернативой доставки с доставкой в течение 25 дней, эта доставка бесплатна при первой покупке. Также возможно использование других доступных производителей, например: PCBWay, AllPCB, NextPCB, SeeedStudio, у которых есть технология производства печатных плат машинным способом из файлов GERBER.

    DPS pre Airsoft Domination Timer - JLCPCB

    Головка штифта в дизайне печатной платы:

  • 2 розетки с 15-контактным разъемом (для Arduino Nano)
  • 1x 8-контактный гнездовой разъем (для считывателя RFID RC522)
  • 1x розетка под 90 °, 4-контактный разъем (для преобразователя ЖК-дисплея I2C 20x4)
  • Прокладки в дизайн-плате:

  • 4x распорка для символьного ЖК-дисплея 20x4 (Ø макс. 2,5 мм)
  • 2 прокладки для RFID RC522 (Ø макс. 3,5 мм)
  • Размеры детали:

    Доступен PDF-документ с размерами деталей:здесь
    RFID Domination Timer - DOSKA PLOŠNÝCH SPOJOV - DPS - PCB - RC522, Arduino - Nano, buzzer, LED, stopky, stopwatch
    RFID Domination Timer - DOSKA PLOŠNÝCH SPOJOV - DPS - Výroba fotocestou

    Таблица подключения клемм - RFID Domination Timer - полностью соответствует схеме подключения:

    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 для ЖК-дисплея
    GND GND
    5V Vcc
    A4 SDA
    A5 SCL
    Arduino Uno / Nano (AtMega328P) Зуммер
    GND GND
    5V Vcc
    D5 IN
    Arduino Uno / Nano (AtMega328P) Светодиоды
    GND GND
    D4 IN (RED)
    D3 IN (GREEN)

    Схема подключения - RFID DOMINATOR:


    Airsoft Dominator RFID

    Тестовая программа (условно-бесплатная) - RFID Domination Timer с машинным кодом


    Условно-бесплатная версия в виде машинного кода (.hex) для микроконтроллера Arduino (ATmega328P) доступна для проекта RFID Domination Timer. Первоначально версия позволяет записывать 4 различных RFID-карты UID, которые назначаются командам RED, GRE, Referee и Eraser. Запрос на ввод конкретной карты отображается на символьном ЖК-дисплее 16х2 или 20х4 с конвертером I2C. Впоследствии можно протестировать игровую механику и реакцию считывателя на RFID-карту с временной визуализацией на дисплее. Можно измерить максимум 15 секунд игры для каждой команды с возможностью сброса его с помощью карты ластика и повторного измерения в течение 15 секунд. Цель версии - проверить совместимость с вашим оборудованием. Машинные коды, основанные на адресе преобразователя I2C для ЖК-дисплея, доступны в репозитории Github. Наиболее часто используемые адреса - 0x27 и 0x3F. Если вы не знаете адрес вашего преобразователя, используйте встроенный пример в Arduino IDE -> I2C Scanner, который запишет адрес в интерфейс UART (Serial monitor). Машинный код может быть загружен в микроконтроллер Arduino Uno с помощью программного обеспечения AVRDUDE - части Arduino IDE или с помощью графического интерфейса пользователя через XLoader - проще в использовании.

  • AVRDUDE должен запускаться через CMD (командную строку), установленную с Arduino IDE. Находится в C: /Users/User/Documents/ArduinoData/packages/arduino/tools/avrdude/6.X.X-arduino/bin
  • Пример команды для загрузки программы в Arduino Uno / Nano (AtMega328P):
  • avrdude -CC: avrdude.conf -v -patmega328p -carduino -PCOM21 -b115200 -D -Uflash:w:sketch.ino.hex:i
  • XLoader - это приложение для Windows (исполняемый файл .exe) с простым графическим интерфейсом , который позволяет вам выбрать прошивку - машинный код (.hex), целевую платформу и может динамически отображать COM-порт, на котором расположено устройство.
  • При простом нажатии на "Загрузить" машинный код может быть загружен автоматически ( XLoader используется аналогично инструменту Arduino IDE AVRDUDE). Окно XLoader информирует вас об успешной загрузке, указав количество загруженных байтов.
  • Прошивку можно скачать из репозитория проекта: ЗДЕСЬ . Прошивка находится в папке Github репозитория проекта /rfid_dominator/, разделенной по адресу преобразователя I2C (вы узнали из вывода сканера I2C на интерфейсе UART).

    Доступная прошивка (условно-бесплатная) - RFID Domination Timer


    Название прошивки (в папке rfid_dominator) Предназначен для Скачать
    RFID_Dominator_0x27.hex Символьный ЖК-дисплей размером 16x2 или 20x4 с преобразователем I2C, который обменивается данными по адресу 0x27 Скачать прошивку
    RFID_Dominator_0x3F.hex Символьный ЖК-дисплей размером 16x2 или 20x4 с преобразователем I2C, который обменивается данными по адресу 0x3F Скачать прошивку

    Демонстрация функциональности - Shareware RFID DOMINATOR:


    В случае последних китайских клонов Arduino Nano, которые имеют "старый загрузчик", необходимо записывать со скоростью 57600 бод / с! Для других версий с более новым загрузчиком 115200 бод / с (эта скорость также используется в команде AVRDUDE для загрузки машинного кода).

    Программа для чтения UID адресов RFID карт для Domination Timer


    Программа используется для чтения идентификаторов (UID) меток RFID, карт, которые будут использоваться в программе для RFID Domination Timer - этот исходный код не представляет RFID DOMINATOR, проект не распространяется бесплатно! . Адрес карты записывается в последовательный (UART) монитор - используемая скорость составляет 9600 бод / с (символов в секунду). Выписку следует сохранить и переписать в четком документе .xls (EXCEL), который упростит управление назначенными RFID-картами определенным группам и организациям для окончательного приложения RFID DOMINATOR, машинный код которого привязан к поставляемым UID-картам. Вы должны импортировать библиотеку MFRC522 в свою Arduino IDE, чтобы успешно загрузить исходный код для загрузки карт UID. Загрузите репозиторий проекта RFID Domination Timer (на который указывает первая ссылка вверху страницы), скопируйте содержимое папки / src / (папка MFRC522) в папку / Arduino / libraries / (путь к папке зависит от того, где у вас установлена IDE Arduino), чаще всего в Documents / Program Files в старых операционных системах Windows.


    Пример сохраненных карт UID RFID - документ Excel .xls:


    Физические карты UID RFID, хранящиеся в четком документе Excel - таймер доминирования RFID для страйкбола

    Шаблон Excel (.xls) - электронные таблицы Google: Google Tabuľky - RFID DOMINATOR Template


    Программная реализация для RFID Domination Timer:


    Данные UID для RED, GRE, Referee и Eraser встроены в поля, которые можно легко масштабировать, чтобы увеличить количество игроков, назначенных определенной группе. Стандартная программа RFID Domination Timer для 10x UID для команд RED и GRE и 2x UID для Referee и Eraser занимает 26% флэш-памяти (28 кБ + 4 кБ загрузчика) и 28% оперативной памяти (2 кБ). Domination Timer оптимизирован, статические строки хранятся во флэш-памяти как данные только для чтения. Статические строковые (константные) переменные, хранящиеся в PROGMEM. Используется макрос F для статических отчетов на мониторе UART или используется для функции lcd.print (), которая реализует отчет на дисплее.

    Programová implementácia - DOMINATION TIMER RFID
    /*|--------------------------------------------------|*/
    /*|Title: Loading UID RFID cards                     |*/
    /*|Desc: Reads via RFID reader NXP RC522             |*/
    /*|the address of the RFID card that is attached and |*/
    /*|printed UID on the UART interface.                |*/
    /*|The recorded UID cards will be used for DOMINATOR |*/
    /*|Author: Bc. Martin Chlebovec                      |*/
    /*|E-mail: martinius96@gmail.com                     |*/
    /*|License: MIT                                      |*/
    /*|Revision: 12. March 2021                          |*/
    /*|--------------------------------------------------|*/
    
    /*
     * 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("UID of present card: ");
      unsigned long kod = 10000 * buffer[4] + 1000 * buffer[3] + 100 * buffer[2] + 10 * buffer[1] + buffer[0]; //finalny kod karty
      Serial.println(kod);
    }
    

    I2C Scanner - программа для чтения адреса конвертера I2C для ЖК-дисплея


    Ожидаемый результат I2C Scanner:


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

    Библиотека Wire встроена в IDE Arduino, установка не требуется. Программа может быть скомпилирована и проверена связь через шину I2C с символьным ЖК-дисплеем. Конвертер I2C должен быть подключен к Arduino к аппаратным клеммам I2C (SCL к A5, SDA к A4) перед загрузкой программы, этого достаточно даже без дисплея. Полученный адрес дисплея должен быть предоставлен для успешной сборки для Arduino вместе с UID карт RFID.

    #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
    }