Секундомер доминирования (ДОМИНАТОР) - устройство, предназначенное для 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 .
Считыватель 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 DOMINATOR с точки зрения своей универсальности подходит для реализации в действиях Airsoft, а с возможностью клонирования прошивки можно разместить на игровом поле X очков DOMINATOR с идентичной прошивкой, в которую игроки могут играть с те же RFID-карты. Cекундомер доминирования также подходит для команд, спортивных и игровых площадок, которые могут использовать это устройство для расширения услуг и режимов игры, предлагаемых для разного количества игроков. Если RFID-карты, браслеты или брелоки имеют цветовую маркировку, это очень легко и повсеместно распространяется среди игроков в зависимости от их команды. Их архивирование также простое. Использовать карты, браслеты или брелки легко, и они подходят для всех возрастов в играх для страйкбола. Сам RFID-чип защищен пластиковым корпусом, не боится грязи, грязи, воды, мороза, полностью не требует обслуживания. В нем нет батареи, чип активирует считыватель RFID, который заряжает его передаваемым электромагнитным полем и позволяет ему отправлять UID - идентификатор, если он находится в пределах досягаемости считывателя RFID. DOMINATOR подходит для режимов игры с одинаковым количеством игроков в обеих командах, например ДОМИНАЦИЯ, Точка захвата (точки для нескольких клонированных точек Секундомер доминированияa). Использование в основном для спортивного страйкбола, пейнтбола, Nerf Wars.
Печатные платы могут быть изготовлены в Словакии на 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.
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) |
Условно-бесплатная версия в виде машинного кода (.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 - проще в использовании.
Название прошивки (в папке rfid_dominator) | Предназначен для | Скачать |
RFID_Dominator_0x27.hex | Тестовая прошивка проекта RFID Секундомер доминирования позволяет измерять время по 15 секунд для каждой команды. Предназначен для символьного ЖК-дисплея 16x2 или 20x4 с преобразователем I2C, который обменивается данными на 0x27 | Скачать прошивку |
RFID_Dominator_0x3F.hex | Тестовая прошивка проекта RFID Секундомер доминирования позволяет измерять время по 15 секунд для каждой команды. Предназначен для символьного ЖК-дисплея 16x2 или 20x4 с преобразователем I2C, который обменивается данными на 0x3F | Скачать прошивку |
Программа используется для чтения идентификаторов (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.
Название библиотеки | Библиотечная функция | Скачать |
---|---|---|
MFRC522 |
Библиотека для микроконтроллеров AVR (ATmega) Arduino Uno / Nano / Mega. Он позволяет связываться с RFID-считывателем NXP RC522 по шине SPI. |
Скачать |
LiquidCrystal_I2C |
Библиотека для микроконтроллеров AVR (ATmega) Arduino Uno/Nano/Mega. Он позволяет обмениваться данными с символьным ЖК-дисплеем по шине I2C. |
Скачать |
Данные UID для RED, GRE, Referee и Eraser встроены в поля, которые можно легко масштабировать, чтобы увеличить количество игроков, назначенных определенной группе. Стандартная программа RFID Секундомер доминирования для 10x UID для команд RED и GRE и 2x UID для Referee и Eraser занимает 26% флэш-памяти (28 кБ + 4 кБ загрузчика) и 28% оперативной памяти (2 кБ). Секундомер доминирования оптимизирован, статические строки хранятся во флэш-памяти как данные только для чтения. Статические строковые (константные) переменные, хранящиеся в PROGMEM. Используется макрос F для статических отчетов на мониторе UART или используется для функции lcd.print (), которая реализует отчет на дисплее.
/*|--------------------------------------------------------|*/ /*|Название: Чтение 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); }
Библиотека 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 }