RFID DOMINATOR 2.0 stopky pre Airsoft / Paintball, najčastejšie pre herný mód DOMINATION, či Capture the Point majú firmvér v podobe strojového kódu v HEX tvare, ktorý je typický pre AVR MCU od Atmelu (dnes už Microchip). Strojový kód zaručuje identickú konfiguráciu a funkcionalitu na každom zariadení, do ktorého sa nahraje. To platí aj pre klonovanie, kedy stopky môžu fungovať nezávisle na sebe na ľubovoľnom počte zariadení, do ktorých je nahratý.
Firmvér neobsahuje dáta uložené napr. v EEPROM pamäti, teda neprenesie to používateľskú konfiguráciu. Firmvér má štandardne overenie, či je na určitom ofsete EEPROM pamäte, ktorá je hardvérová zapísaná informácia, alebo je toto miesto v pamäti nezapísané a vie tam zapísať napr. fail-safe hodnotu, aby tam bolo aspoň niečo, nejaké defaultné nastavenie. V prípade budúcej verzie DOMINATORA to bude napr. predvolené používanie buzzera, jeho prednastavená frekvencia generovaná z PWM a podobne. Následne prostredníctvom exportu konfigurácie a jej nahratie do druhého kontroléra po Serial rozhraní by bolo možné dostiahnuť identickú používateľskú konfiguráciu.
Dnes si preto ukážeme, ako do RFID DOMINATORA pre Airsoft / Paintball nahrať DEMO firmvér, avšak rovnaký postup je možné aplikovať pre produkčnú verziu firmvéru, ktorá je vždy vyhotovená s unikátnymi UID (identifikátormi) RFID kariet tak, aby zariadenie nebolo použiteľné s inými RFID kartami, čím sa zamedzuje nekontrolovanému klonovaniu. V prvom rade musíme pochopiť cieľovú architektúru mikrokontroléra, do ktorého budeme nahrávať a taktiež aj spôsob nahrávanie firmvéru.
RFID DOMINATOR používa Arduino Nano, najčastejšie klon vo verzii V3.0. Je to mikrokontróler vybavený procesorom ATmega328P od Microchipu (ATMEL). Pamäťovo a funkciami plne odpovedá Arduinu Uno, avšak má vyvedených aj viac analógových pinov v porovnaní s Arduinom Uno. Štandardne má mikrokontróler priamo z výroby Bootloader, ak ho nemá, musí sa nahrať samostatne cez Arduino as ISP, alebo USBasp, či USBtinyISP. Totožný postup sme aplikovali v skoršom článku o ATtiny85, kedy sme cez sekundárne Arduino nahrávali iný Bootloader pre podtaktovanie procesora na 1 MHz. V prípade potreby vieme rovnakú vec urobiť aj pre toto Arduino Nano, predpokladajme ale pre ďalší tutoriál, že to nebude potrebné, keďže už od predajcov chodí s Bootloaderom.
Celý koncept RFID DOMINATORA používa open-source hardvér s modulárnym dizajnom, ktorý umožňuje hotswap komponentov bez potreby spájkovania vďaka pinovým lištám. Keďže sa tu radí aj Arduino, nahrávanie firmvéru bude veľmi jednoduché a vhodné aj pre laika. Poďme teda nato krok po kroku:
Stiahneme si archív DEMO firmvéru z webu RFID DOMINATORA, napríklad z jeho stránky: https://your-iot.github.io/DOMINATOR/ Samotný archív obsahuje priečinok XLoader, RFID_DOMINATOR.hex firmvér a tiež README.md súbor. Archív rozbalíme do priečinka, aby sme mali prístup ku všetkým súborom.
Pred samotným nahrávaním firmvéru si pripojte Arduino Nano do počítača. Na strane Arduina Nano najčastejšie nájdeme MiniUSB konektor. Overte, že po pripojení Arduina k počítaču je rozpoznaný jeho ovládač. To poznáte tým, že sa ozve tradičný "Windows zvuk", ako keby ste do počítača pripojili USB kľúč. Zároveň si to môžete potvrdiť aj otvorením Správcu zariadení, kde pod Portami nájdete COM port priradený k Arduinu, v mojom prípade používam klon s CH340 USB-UART prevodníkom od WCH (Nanjing QinHeng Electronics), ktorému Windows pridelil COM port 4.
Ak COM port nevidíte, môže to mať viacero príčin:
- Absencia CH340 ovládača (Windows ho nenainštaluje automaticky), je potrebné stiahnuť a nainštalovať manuálne
- Napájací USB kábel - Váš USB kábel má iba 2 vodiče pre napájanie a nemá dátové vodiče pre prenos dát
Ak už teda máme Arduino Nano na COM porte, môžeme pristúpiť k otvoreniu nástroja XLoader z jeho priečinka. Tento nástroj je používaný pre nahrávanie firmvéru do AVR kontrolérov a to v podstate grafická verzia pre jednoduchšie nahrávanie firmvéru v porovnaní napr. s AVRDUDE, čo je čisto konzolová CLI aplikácia s rovnakým použitím, i keď má násobne viac funkcií. XLoader je lepší na bežné použitie len pre potrebu nahrávanie firmvéru.
XLoader sa štandardne spustí v malom okne a má iba minimum konfigurovateľných parametrov. Nájdeme si COM port, ktorý nám dynamicky XLoader ponúkne a zvolíme ho. Nastavíme cestu k cieľovému .hex súboru firmvéru. Zvolíme si Arduino Nano (pozor, aby ste nezvolili ATmega168, potrebujeme ATmega328).
Zvolíme si Baud rate, čo je rýchlosť nahrávania firmvéru a vyjadruje sa v jednotkách baud / s, t.j. počet znakov za sekundu. V prípade klonov Arduino Nano je to 57600 z dôvodu Old Bootloadera, ktorý majú štandardne napálený z výroby. V prípade originálnych Arduino Nano dosiek je nahrávacia rýchlosť 115200 baud/s. Ak zvolíte zlú rýchlosť nahrávania, nič sa nestane. Upload skončí hláškou failed a firmvér sa nenahraje.
Po nastavení všetkých parametrov klikneme na Upload. V spodnej časti XLoadera uvidíme textový výpis Uploading... a ak nahrávanie firmvéru skončilo úspešne, uvidíme počet zapísaných bajtov. Po nahratí firmvéru sa Arduino automaticky reštartuje a hneď uvidíte výpis na displeji.
Neúspešné nahratie firmvéru (zlý baud rate, zlý COM port, iná chyba):
Úspešné nahratie firmvéru (počet zapísaných bajtov):
Samotný firmvér DEMO verzie funguje následovne:
Na LCD znakový displej sú vypísané inštrukcie. Po spustení programu systém vyzve používateľa na priloženie celom 4-och rôznych RFID tagov. Najčastejšie sa streteneme s MiFare 1K tagmi vo forme kľúčenky, karty, alebo aj náramku, kde sú však ceny medzi kartami a náramkami niekoľko-násobne rozdielne. Po priložení RFID kariet k čítačke RC522 nastavíte jeden z tagov pre každý z tímov, jeden pre rozhodcu a jeden pre erasera. Táto konfigurácia vám následne dovolí otestovať funkcionalitu celého hardvéru pre RFID DOMINATOR aplikáciu. DEMO verzia je limitovaná na maximálne 15 sekúnd čas pre každý z tímov (v implementácii sú 2), ktoré vám displej vypíše na obrazovku. Časy môžete opätovne vyresetovať na nulu Eraser tagom.
Cieľom je overiť, že je hardvér plne kompatibilný pre firmvér plnej verzie RFID DOMINATORA. Taktiež môžete k DOMINATORU, resp. jeho RFID čítačke RC522 prikladať aj iné RFID karty. Systém ich v logike nepoužije, ale vypíše na Serial rozhranie UID daného RFID tagu, ktorý je následne možné zapísať do preddefinovanej šablóny: https://docs.google.com/spreadsheets/d/1EHpdJi8v84eJ-6ExEPT6JuPkxI9Tfbm8v85zGRFvJ1Q/edit?usp=sharing z ktorej je následne možné firmvér na mieru vyexportovať od autora.
Videonávod - Nahratie DEMO firmvéru do RFID DOMINATORA
Funkcionalita DEMO firmvéru s hardvérom je garantovaná pre následujúce zapojenie, ktorému odpovedá aj DPS pre RFID DOMINATOR 2.0 s osadenými komponentami.
- Arduino Nano V3.0
- RFID RC522 (MFRC522) - pinout na DPS sedí len pre Generic, pre Keyestudio nesedí
- LCD 2004A s I2C prevodníkom
- Aktívny / pasívny buzzer 7,62 mm rozteč s 5V logikou, PWM GPIO
- LED diódy (max 20 mA @ 5V)
- Komplet BOM na Digikey (pozor, obsahuje originál Arduino Nano, klon nie je v ponuke):
https://docs.google.com/spreadsheets/d/1W8VZWUbunXa362EOkEo4UkfGkRCt8anQDj8j90m_AIg/edit?usp=sharing