Capture points (DOMINATION) - Arduino + nRF24l01
Airsoft je outdoor hra radiacia sa k extrémnym športom. Hra je veľmi populárna a tak si vyslúžila postupom času aj rôzne štýly hrania, teda herné módy. Väčšina z nich je postavená na populárnych FPS tituloch ako Counter Strike či Call of Duty. Od útočných a obranných módov až po Free-for-all. Jedným veľmi obľúbených módov je aj Capture points, respektíve DOMINATION. V tomto hernom móde ide o minimálne dve lokácie, o ktoré tímy bojujú.
Cieľom hry je obsadiť a udržať oba body jedným tímom. Body sú umiestnené v neutrálnej lokácii, napríklad na úrovni stredu mapy po stranách, alebo každý v sídle druhého tímu. Aby bola hra dostatočne rýchla, stačí ak tím obsadí oba body. Ak je zapísaný na oboch bodoch (nemusí ho udržať po x sekúnd), hra sa končí a tím vyhral. Aby som hru urobil zaujímavejšou, vyhotovil som takéto dva body. Každý bod obsahoval po hardvérovej stránke:
- Arduino Nano/Uno
- buzzer (typu active/passive) pre ohlásenie konca hry
- wifi modul nRF24l01 + PA + LNA
- dvojica tlačidiel - pushbuttonov
- LED diódy s farbami tímov
- *doplnkové relé pre zopnutie silnejších svetiel na 12V/24V/230V
Ako funguje systém po stránke funkčnosti?
Jedno tlačidlo je pre Tím 1 (žltý tím) a druhé pre Tím 2 (červený tím). Tím pri obsadení stlačí svoje tlačidlo, čo zmení farbu bodu podľa ich tímu. Ak jeden tím obsadí oba body, rozuzvučia sa hlásiče na oboch bodoch (hra sa skončí, alebo pokračuje ďalej podľa pravidiel organizátora akcie, napr. do posledného muža pre druhý bod za hru). Hra nie je časovo ohraničená limitom.

Pri využití externého 5v/3.3v zdroja je možné komunikovať až na 1,1 kilometra v nezarušenom prostredí najnižšou prenosou rýchlosťou (250kb/s). V programe pre Arduino sa určuje komunikačný kanál, výkon nRF modulu, prenosová rýchlosť (250kb/s až 2Mbps). Čím je vyššia rýchlosť zvolená, tým náchylnejší je systém na rušenie. V prostredí lesa sme s najnižšou prenosou rýchlosťou a maximálnym vysielacím výkonom dosiahli prenos na 310 metrov.
Princíp je teda veľmi jednoduchý a systém je možné rozšíriť o ďalšie nRF moduly. Jeden modul dokáže komunikovať až s ôsmymi modulmi, systém je teda možné rozšíriť až na 9 bodov, o ktoré sa bojuje. Najvyšší prenosový výkon nie je možné nastaviť pri napájaní z Arduina, nakoľko odber nRF prevyšuje prúdové charakteristiky regulátora. Využíva sa preto napájanie na 5-12V cez adaptér, do ktorého sa modul zasadí a má on-board regulátor na 3.3V.

Pri použití hlásiča (buzzra) je možné generovať frekvenciu signálu, ktorú bude buzzer vydávať, minimum je 31Hz a možnosť je zvoliť až cez 65 5XXHz. Aktívne i pasívne buzzre k Arduinu znejú prakticky rovnako. Povedal by som, že aktívne sú o niečo hlasnejšie. Z vlastnej skúsenosti používam 800 - 4000Hz pre frekvenciu tónnov, čo sú tóny pomerne zreteľné a vhodné pre pípajúci zvuk, nie sú príliš otravné a je ich dobre počuť. Ovládať hlasitosť ako takú nie je u takýchto modulov možné. Pri nastavení novej hry je možné oba zariadenia odpojiť a pripojiť na batériu/adaptér, alebo obe zariadenia reštartovať tlačidlom pre premazanie uložených stavov tímov, aby hlásič ustal.
Projekt WiFi body pre herný režim Airsoft hier DOMINATION je od konca roku 2021 k dispozícii zdarma so zdrojovým kódom. WiFi body majú samostatnú webstránku, kde sú dostupné zdrojové kódy, schémy zapojenia pre mikrokontróler a nRF moduly: https://martinius96.github.io/Airsoft-DOMINATOR-RFID/capture-points.html
Riešenie používa vstavanú knižnicu SPI pre komunikáciu a knižnicu RF24 pre nRF24l01 moduly. Je možné použiť i Radiohead knižnicu, ktorá ale neumožňuje regulovať vysielací výkon a voliť špecifické kanály, využíva tzv. pipes pre komunikačnú cestu, nie navolené číslo kanálu. Priložené zdrojové kódy môžete vyskúšať pre funkcionalitu spísanú vyššie a vyskúšať si takýto štýl hry. Pozor pri zapojení tlačidiel, používa sa zapojenie INPUT_PULLUP, teda tlačidlo je aktívne (stlačené) pri hodnote LOW - zem. Tento systém je vhodný pre športy typu Airsoft, Paintball, Nerf Wars. Vhodný pre tímy, športový areál a pod.
Schéma zapojenia pre WiFi body (zhodné u bodu 1 a bodu 2):
