Dnes se podíváme podrobněji na praktický Arduino projekt NFC vrátný bastlíře Petra Němce, který řeší pohodlné otvírání klasických garážových vrat! Nějaké informace o projektu jsme již zveřejnili na Facebooku Arduino.cz a projekt vás zaujal, tak jsem se rozhodl připravit o projektu zvláštní článek, ať si přijdou na své i bastlíři, co nevyužívají Facebook a vůbec všichni, co si chtějí něco takového zbastlit.
Petr za projekt dostává slevu 30% na zakoupení věciček na našem eshopu HW Kitchen. Tato možnost je tady samozřejmě i pro další bastlíře, ale o tom jsme psali v jiném článku.
A teď už dávám slovo Petrovi!
V rámci totální rekonstrukce domu svépomocí jsme potřebovali automatizovat otevírání starších vrat pro nově přistavěnou garáž. Jsou to dvoukřídlá dřevěná vrata, jen dočasná a původně, i z důvodu zabezpečení, byla koncipovaná jako otvíratelná pouze zevnitř. Jejich dočasnost se prodloužila a jak jsme se nastěhovali a narodil se prcek, bylo potřeba vraty garáže procházet čím dál častěji zejména kvůli kočárku… Obíhat celý barák bylo hodně nepraktické. Nechtěl jsem ale dělat nějaký z venku přístupný zámek. Až najednou přišla myšlenka, nechat systém západek, a pomoci jim servem, Arduinem NANO a NFC modulem pro identifikaci. Na stole jsem to ubastlil už v roce 2018, pak jsem měl jiné priority, až jsem se dokopal to dorazit v červnu 2019. Od té doby to šlape perfektně.
Kód není žádná hitparáda, menu mám ještě přes delay, ale je potřeba jen při mazání/přidávání NFC tagů. V EEPROMce je naprogramovaná celá rodina + 3 rezervní pozice a každé jméno může mít až 3 tagy (klíče). K přidávání a odebírání tagů, tedy pro vstup do menu, je potřeba Master karta, to je jeden určený NFC tag.
Normální provoz vypadá tak, že přiložíte ke čtečce tag, když není rozpoznán (není v EEPROM), LED dioda červeně zabliká. Když je rozpoznán, 20kg servo zatáhne za lanka, lanka za západky, a garáž se otevře. Pak začne odpočet, led zeleně bliká a až dobliká, servo povolí lanka a pružiny na západkách zajistí vrata garáže.
Po zkušenostech jsem na krabici přidal i mini usb konektor, kdyby bylo potřeba přehrát sw, např. opravit chyby. Montoval jsem ho poprvé, takže jsem netušil, že se montuje zespodu a ne ze shora. Nu vot. Garáži je to jedno. :-)
Návod a rady rovnou od Petra
- PCB -ať už univerzální, nebo na míru- si nechte vyrobit v Číně na JLCPCB. PCB v příloze je dělané tak, že je podélně „rozpůlené“ a doleva a doprava jsou propojené prokovené díry. Takže je to takový breadboard.
- V EEPROM je zavedeno 10 jmen uživatelů a každý uživatel může mít až 3 tokeny. V programu Inicializace EEPROM jsou vzorová jména, přepište si svými.
- Do Arduina (Nano V3) je třeba nahrát nejprve soubor inicializující EEPROM. Tenhle program napálí do EEPROMky jména držitelů NFC tokenů a výchozí hodnoty 255 255 255… Jména držitelů si v tom souboru přepište, ale pozor: se zapnutým Insertem-přepisem znaků, aby byla dodržena délka znaků ve jméně, jinak to nebude fungovat!
- Jakýkoliv jeden NFC token použijte jako MASTER KARTU. Zjistěte -například v NFC mobilu- sériové číslo tokenu a to zadejte do hlavního programu. V hlavním programu se zadávají dekadické hodnoty, nikoliv hexadecimální. Převod zvládne i Windows kalkulačka ve vědeckém módu.
- 4tlačítková klávesnice: při pohledu na box (viz foto) z čelní strany je vývod kabelu doleva. Tlačítka mají být označena shora dolů: šipka nahoru, šipka dolů, symbol „enter“ a křížek.
- Použitá čtečka reaguje pouze na tokeny na frekvenci 13,56 Hz. Existují i tokeny a čtečky na frekvenci 125 kHz a tyto tokeny s touto čtečkou pochopitelně nefungují. Existují tokeny i ve formě malých kulatých samolepek (průměr cca 2cm). Chtěl jsem tyto nalepit na zadní stranu telefonu (který dnes máme pořád u sebe), ovšem to nefunguje. Blízkost telefonu je velkou překážkou a čtečka token nalepený na mobilu nepřečte ani na těsnou vzdálenost.
Funkce programu
- Po startu programu servo zavře vrata
- Poté čeká na přiložení NFC tokenu nebo stisku tlačítka pro otevření zevnitř. V programu je nějaká chyba (resp. programoval jsem to už nějaký čas zpátky a s tlačítkem jsem původně nepočítal), takže tlačítko je třeba stisknout déle, aby program zareagoval. Přiložením NFC čipu se vrata otevřou rychleji.
- LED dioda: při čekání na klíč svítí červeně. Při přiložení neznámého tokenu červeně zabliká. Při přiložení známého tokenu po dobu otevírání vrat (pohyb serva) svítí žlutě, poté zeleně. Přibližně za 7 sekund od otevření (už nevím přesně) se vrata znova zavřou. Pár sekund před zavřením začne dioda blikat zeleně, pak servo zavře vrata a dioda opět svítí červeně.
- OLED display: standardně nesvítí nic. Při přiložení známého tokenu se rozsvítí „OTEVÍRÁM“ a pod tím jméno držitele tokenu. Po otevření svítí „OTEVŘENO“. A nakonec „ZAMKNUTI ZA:“ a odpočet času.¨
- MASTER KARTA: po přiložení se rozsvítí nápis „MASTER KARTA“ a po chvíli dojde k zobrazení prvního jména z EEPROM. Klávesami nahoru a dolů jde listovat mezi jmény. Dole na displeji nabízí akci „ENTR=SMAŽ KLÍČE“ (ve slově enter se na displej nevešlo druhé E). Po stisku klávesy ENTER se smažou všechny klíče-tokeny u daného uživatele a program vyzve k postupnému přiložení klíčů 1-3 k danému uživateli. Chcete-li zaregistrovat jen dva klíče, přiložte první, pak druhý a stiskněte klávesu KONEC (křížek). Tím se dostanete zpět na přehled uživatelů a klíčů. Opakovaný stisk klávesy KONEC vyskočí do pohotovostního režimu a displej zhasne. Klávesu KONEC je potřeba někdy podržet o chvíli déle.
- Když něco nevyjde, zespoda je na boxu tlačítko RESET. Program ale u nás běží už měsíc nonstop a bez závad.
- Do sériového portu program vypisuje debug data. V programu je nastavena rychlost 9600 bps.
Projekt je pěknou ukázkou toho, že bastlení s Arduinem může pomoci i se zdánlivě těžko řešitelným požadavkem a že pokud se chce, tak může takový projekt zvládnout i začátečník. V projektu jsou navíc zajímavě řešeny některé funkční detaily bez přílišného důrazu na méně podstatné věci. Za to rozhodně palec nahoru! Nakonec koupit a nainstalovat úplně nová vrata by bylo asi finančně náročnější :).
Všechny data k projektu, jako program pro Arduino, 3D model krabičky pro NFC modul, podklady pro PCB nebo rozpis materiálu, najdete zde.
Bastlení ZDAR!