Репозиторий проекта - условно-бесплатная прошивка для RFID DOMINATOR: Airsoft Domination Timer firmware
Если вас интересует программная реализация проекта ДОМИНАТОР, обращайтесь на английском языке: martinius96@gmail.com
Arduino LCD RFID, NFC RC522 Stopwatch Schematics Airsoft Paintball ДОМИНАТОР

RFID ДОМИНАТОР - секундомер для | Paintball


Новая версия проекта RFID ДОМИНАТОР (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 занимает точку в момент, когда член команды RED прикрепляет свою карту к считывателю RFID. Это действие запускает зуммер, который сообщает об изменении точки коротким звуковым сигналом. После этого загорится светодиод КРАСНОЙ команды на этой станции, и на дисплее начнется добавление времени для этой команды, пока не будет вставлена карточка члена GRE команды , Рефери или Ластик . Если точка занята проигрывателем GRE и карта подключена к считывателю RFID, зуммер сообщит об этом изменении коротким звуковым сигналом, загорится светодиод GRE (КРАСНЫЙ светодиод гаснет), текущее время КРАСНОГО останавливается , и вычисляется время GRE, которое заняло точку.


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


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


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

    Совместимое оборудование управления для RFID ДОМИНАТОР:



    Совместимая периферия для RFID ДОМИНАТОР:


    Символьный ЖК-дисплей 16x2 / 20x4
    Символьный ЖК-дисплей 16x2 / 20x4
    Конвертер I2C для ЖК-дисплея
    Конвертер I2C для ЖК-дисплея
    Считыватель RFID NXP RC522
    Считыватель RFID NXP RC522
    RFID-чипы стандарта ISO / IEC 14443-A
    RFID-чипы стандарта ISO / IEC 14443-A
    Зуммер
    Зуммер
    2x LED диоды
    2x LED диоды
    RFID ДОМИНАТОР - DOMINATION TIMER

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

    Считыватель RFID NXP RC522 связывается с микроконтроллером (Arduino / автономный чип ATmega328P) через шину SPI с тактовым сигналом (SCLK) 4 МГц. Считыватель RC522 реагирует на RFID-чип на расстоянии примерно 3 см от антенны, имея при этом настраиваемое усиление антенны в диапазоне от 18 до 48 дБ (48 дБ используется в окончательном приложении для DOMINATOR). Считывает UID (идентификатор) чипов RFID в диапазоне, пересылает этот идентификатор в Arduino. Arduino сравнивает адрес считанной карты в нескольких условиях, запускает звуковой сигнал зуммера, применяет цифровые состояния к светодиодам, запускает универсальный счетчик, управляемый внутренней функцией millis (), которая отвечает за счет обоих времен. Исходя из выполненного условия, счетчик начинает применяться к данной команде, которой принадлежит UID, и счетчик времени работает. Время отображается на символьном ЖК-дисплее 16x2 или 20x4. Данные времени отправляются через шину I2C с тактовым сигналом (SCL) 100 кГц (стандартная скорость). Чтобы восстановить отображение как можно быстрее, перезаписывается только число в заданной позиции (заданный символ). Часы, минуты и секунды перезаписываются только при изменении и всегда только для данной команды. В случае серьезного интереса можно создать прошивку в машинном коде для ATmega328P для измерения также для других типов считывателей RFID: RDM6300, PN532, Wiegand W26, увеличение тактового сигнала шины I2C до 400 кГц (Fast Speed). Возможное расширение прошивки для игры DOMINATOR до 3-х или 4-х команд.

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

    Чтобы указать проект RFID ДОМИНАТОР:

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


    Демонстрация функциональности - RFID ДОМИНАТОР:



    Печатная плата - (PCB) - RFID ДОМИНАТОР - GERBER / изготовление по фото маршрут


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

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

    DPS pre Airsoft ДОМИНАТОР - 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 ДОМИНАТОР - DOSKA PLOŠNÝCH SPOJOV - DPS - PCB - RC522, Arduino - Nano, buzzer, LED, stopky, stopwatch
    RFID ДОМИНАТОР - DOSKA PLOŠNÝCH SPOJOV - DPS - Výroba fotocestou

    Таблица подключения клемм - RFID ДОМИНАТОР - полностью соответствует схеме подключения:

    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 ДОМИНАТОР с машинным кодом


    Условно-бесплатная версия в виде машинного кода (.hex) для микроконтроллера Arduino (ATmega328P) доступна для проекта RFID ДОМИНАТОР. Первоначально версия позволяет записывать 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 ДОМИНАТОР


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

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


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

    Программа для чтения UID адресов RFID карт для ДОМИНАТОР


    Программа используется для чтения идентификаторов (UID) меток RFID, карт, которые будут использоваться в программе для RFID ДОМИНАТОР - этот исходный код не представляет RFID DOMINATOR, проект не распространяется бесплатно! . Адрес карты записывается в последовательный (UART) монитор - используемая скорость составляет 9600 бод / с (символов в секунду). Выписку следует сохранить и переписать в четком документе .xls (EXCEL), который упростит управление назначенными RFID-картами определенным группам и организациям для окончательного приложения RFID DOMINATOR, машинный код которого привязан к поставляемым UID-картам. Вы должны импортировать библиотеку MFRC522 в свою Arduino IDE, чтобы успешно загрузить исходный код для загрузки карт UID. Загрузите репозиторий проекта RFID ДОМИНАТОР (на который указывает первая ссылка вверху страницы), скопируйте содержимое папки / 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 ДОМИНАТОР:


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

    Programová implementácia - DOMINATION TIMER RFID
    /*|--------------------------------------------------------|*/
    /*|Название: Чтение UID карт RFID                          |*/
    /*|Описание: Считывает через считыватель RFID NXP          |*/
    /*|RC522 адрес прикрепленной RFID-карты и                  |*/
    /*|распечатанный UID на интерфейсе UART.                   |*/
    /*|Записанные карты UID будут использоваться для DOMINATOR |*/
    /*|Автор: Ing. Martin Chlebovec                            |*/
    /*|E-mail: martinius96@gmail.com                           |*/
    /*|Лицензия: MIT                                           |*/
    /*|Редакция: 12 марта 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
    }