Репозиторий проекта - условно-бесплатная прошивка для RFID DOMINATOR: Airsoft Domination Timer firmware
Если вас интересует полная прошивка для RFID Domination Timer, свяжитесь с автором проекта на английском языке по адресу:

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 Semiconductors)
  • Firmware version: 0x92 = Version 2.0 - (оригинальный чип NXP Semiconductors)
  • Сущности пользователей в проекте 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 - Ластик
    Ластик

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

    Секундомер доминирования (ДОМИНАТОР) - устройство, предназначенное для 2 команд, которые играют друг против друга. Секундомер подходит для игры в страйкбол / пейнтбол в режиме DOMINATION, соответственно. Захватить холм. Они состоят из микроконтроллера ATmega328P (AVR), который может быть частью комплекта разработчика Arduino (Uno / Nano / Pro Mini) или использоваться отдельно. Символьный ЖК-дисплей (размер 16x2 или 20x4) используется для визуализации времени, который подключен к микроконтроллеру и взаимодействует с ним. Время указано в двух строках друг под другом и динамически обновляется, если в точке присутствует активная команда (точка, занятая командой). Секундомер снабжен световыми индикаторами в виде отдельных команд, которые сигнализируют об активной команде в точке, и детектором (пьезопреобразователем), который сообщает об изменении в точке после прикрепления RFID-карты. В игре реализованы команды - RED команда и команда GRE которые играют друг против друга и пытаются занять точку, а затем удержать ее как можно дольше. В начале игры на дисплее отображается время 00 часов, 00 минут, 00 секунд для RED команда , Команда GRE . Каждый член команды оснащен чипом RFID, который встроен в браслет (или карту / брелок). Чип RFID передает свой уникальный идентификатор - UID (уникальный идентификатор), который считывается считывателем RFID и проверяется в логике системы, к которой принадлежит объект (команда). Отдельные браслеты могут иметь цветовую кодировку (красный, зеленый по команде и функции объекта), что позволяет быстрее распространять их среди игроков, а также архивировать и сохранять по цвету. Команда RED будет занимать точку, когда член команды RED прикрепит свою карту к считывателю RFID. Это действие запускает зуммер, который сообщает об изменении точки коротким звуковым сигналом. Затем на этой станции загорится светодиод RED команды, и на дисплее начнется добавление времени для этой команды до тех пор, пока не будет вставлена карточка члена команды , Рефери или Ластик . Если точка занята проигрывателем GRE и карта подключена к считывателю RFID, зуммер сообщит об этом изменении коротким звуковым сигналом, загорится светодиод GRE (RED светодиод гаснет), текущее время RED останавливается , и подсчитывается время GRE.


    Если Рефери прикрепит свою RFID-карту, отсчет времени остановится на текущем значении. Точка становится нейтральной, светодиод активной команды гаснет. Остановка длится до тех пор, пока член команды команды RED или команды GRE не представит свою карточку. Таким образом, этот тип карты подходит для временной остановки текущей игры, контроля вмешательства игрока или получения травм. В то же время карту можно использовать в конце игрового раунда для оценки раунда, возрождения команд перед продолжением. Если ластик прикрепит карту, оба раза будут остановлены и сброшены на начальное значение 00 часов, 00 минут, 00 секунд, которое будет отображаться. Карта ластика используется для перезапуска игры, для инициализации новой игры без необходимости цикла включения. Считыватель RFID немедленно реагирует на вставку карты RFID, включая всю логику проекта Dominator. Проект подходит для мероприятий по страйкболу (MilSim, LARP), спортивных сооружений или команд по страйкболу, которые могут построить устройство Dominator на собственном оборудовании. Прошивка универсальная, в основе которой лежит схема подключения, также возможно использование имеющейся конструкции печатной платы для производства печатных плат. Преимущество проекта RFID Секундомер доминирования заключается в том, что лицензия на использование разрешает пользователю клонировать и создавать X-точки с той же конфигурацией с помощью машинного кода. Машинный код (.hex) - это скомпилированный формат прошивки для проекта RFID Dominator для поставляемых карт UID RFID, которые встраиваются в код перед компиляцией. Таким образом, можно разместить в игре любое количество независимо работающих точек RFID Секундомер доминирования, которые реагируют на идентичные RFID-карты в соответствии с единой конфигурацией. Система RFID Dominator настроена, ее можно сразу вводить в игру. Прошивка загружается в течение 10 секунд через XLoader .


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


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

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



    Совместимая периферия для RFID Секундомер доминирования:


    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-х команд.

    RFID Секундомер доминирования (ДОМИНАТОР)
    Максимальный диапазон времени, который может быть указан в системе: 99 часов 59 минут и 59 секунд.
    Потребление: около 110 мАч при питании 5 В. Удобно получать питание через внешний аккумулятор, зарядное устройство от телефона с выходом USB.

    Чтобы указать проект RFID Секундомер доминирования:

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


    Доступные библиотеки для микроконтроллеров (Arduino)


    Архив библиотеки (.zip) развернуть до C:/Users/[User]/Documents/Arduino/libraries
    Название библиотеки Библиотечная функция Скачать
    MFRC522

    Библиотека для микроконтроллеров AVR (ATmega) Arduino Uno / Nano / Mega. Он позволяет связываться с RFID-считывателем NXP RC522 по шине SPI.

    Скачать
    LiquidCrystal_I2C

    Библиотека для микроконтроллеров AVR (ATmega) Arduino Uno/Nano/Mega. Он позволяет обмениваться данными с символьным ЖК-дисплеем по шине I2C.

    Скачать

    Пример сохраненных карт 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
    Шаблон также доступен в офлайн-версии в формате .xlsx: Template.xlsx
    /*|--------------------------------------------------------|*/
    /*|Название: Чтение 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(rfid.RxGain_max);
      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
    }