Escape Room je zaujímavý spôsob trávenia času a zábavy. Dokáže potrápiť mozgové závity pri hlavolamoch, číslicových úlohách riešením ktorých hráči postupujú v hre. Rozhodol som sa do Escape Room vložiť aj interaktívny spôsob zadávania číselného kódu v miestnosti. Arduino obsuluhe päticu tlačidiel, prostredníctvom ktorých je možné zasielať/meniť čísla (záleží od konkrétnej implementácie). Tlačidlá sú debouncované cez funkciu časovača millis(); s dobou debouncu (ošetrenia zákmitov tlačidla) 50 ms. Metóda vstupu tlačidiel je v počiatočnej hodnote INPUT_PULLUP, kedy sú interným pullup rezistorom pripojené na 5V. Spínajú sa proti zemi. Využívajú sa spínacie tlačidlá, nie rozpínacie.
LCD displej slúži na reprezentáciu zadaných čísel od používateľa s ich vizualizáciou v reálnom čase. Je možné využiť LCD 20x4/16x2 s I2C prevodníkom. Výpis sa realizuje len na 2 riadky. Displej vypisuje aj adresu na LAN sieti, čím indikuje konektivitu, alebo problém na sieti. Na Arduine je nasunutý Ethernet shield W5100 od Wiznetu, ktorý po HTTP protokole komunikuje po sieti s webserverom, ktorému predáva zadané číslo od používateľa.
Dáta sú predávané POST metódou. Odpoveďou servera je payload s potvrdením/zamietnutím prijatého čísla.
Potvrdenie sa vykoná v prípade uhádnutia správneho kódu. Výsledkom potvrdenia je odomknutie dverí prostredníctvom elektromagnetického relé, ktoré ovláda solenoidový zámok dverí. Je možné využiť aj SSR relé v prípade, že solenoidový zámok dverí je na striedavé napätie. (SSR relé majú problém s rozopnutím obvodu s jednosmerným napätím - viz. triak v často používanom relé OMRON G3MB-202P.) Relé sa spína obrátenou logikou, t.j. active low. Pri signále 5V (log 1) je relé rozopnuté, pri 0V (log 0) zopnuté a solenoidový zámok otvorený. V prípade neuhádnutého čísla sa indikuje na displeji/prídavnou LED diódou chyba pre používateľa so zadaním chybného číselného kódu.
Webové rozhranie pre administrátora obsahuje login systém s možnosťou zmeny údajov a možnosť zmeniť hľadané číslo pre všetky 3 herné módy, ktoré sú podporované. Prvý mód obsahuje zaslanie jedného čísla tlačidlami 1-5. Stlačením tlačidla sa ihneď odošle HTTP POST request na webserver a ten odpovie s výsledkom overenia do payloadu. Existuje iba 5 možných kombinácii, hľadanie je rýchle. Tento herný mód nie je vybavený displejom.
Druhý herný mód využíva zadanie štyroch čísel s možnosťou opakovania, t.j. z rozsahu 0000-9999. Celkom teda existuje 10 000 kombinácii, pričom len jedna je správna. Štyri tlačidla slúžia na nastavenie čísel. Každé tlačidlo obsluhuje svoju pozíciu inkrementovaním čísla od 0-9. Piatej tlačidlo slúži ako Enter a po jeho stlačení sa zadaná štvorkombinácia odošle do webového rozhrania.
Tretím mód je takmer totožný ako druhý, funguje bez opakovania čísel. Celkovo existuje 5040 možných kombinácii s jednou správnou.
Všetky 3 herné módy môžu byť obsluhované z jedného webového rozhrania. Administrátor dokáže navoliť hľadané číslo pre každú hru. Zmena je aplikovaná okamžite (aj počas hry). Webové rozhranie je možné ďalej doplniť o použitie MySQL databázy na jednotlivé pripojenia od Arduina. Použitie pre účely štatistiky, úspešnosti súťažiacich so záznamom zadaných čísel, počtu pokusov, časové obdobie. Webová stránka je ošetrená na vstupy čísel pre každý z herných módov (zohľadňuje opakovanie, neopakovanie, dĺžku číselného kódu). Každý herný mód využíva max. 10 pokusov, ktoré sú počítané client-side. V prípade prekročenia 10 hra skončila, nie je možné zadávať ďalšie znaky.
Ako mikrokontróler je možné použiť aj ESP32, ESP8266 s WiFi konektivitou. Podporujú aj HTTPS šifrované spojenie s webovou lokalitou. Pre ESP32 je možné použiť vlastnú certifikačnú autoritu, HTTPS certifikát. Projekt je reálne nasadený a jedná sa o platené riešenie ku ktorému som schopný dodať softvér. Súčasťou tohto tutoriálu je jeden kód pre Arduino a Ethernet W5100, ktorý v okresanej verzii ponúka prvý herný mód s hľadaním jedného čísla, ktoré je napevno definované v .php súbore webovej stránky na ktorú sa Arduino s Ethernet shieldom pripája. Platená verzia obsahuje aj integrovaný watchdog, ktorý Arduino reštartuje v prípade zaseknutia.
Schéma zapojenia pre všetky 3 herné módy:
Programové implementácie pre Arduino (Uno / Nano / Mega) v kombinácii s Ethernet shieldom Wiznet W5100, prípadne W5500 je dostupná na adrese s popisom projektu:
http://arduino.clanweb.eu/escape-room.php