Close

Arduino NFC vrátný

Arduino NFC vrátný

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. 🙂

Arduino NFC vrátný v akci
Arduino NFC vrátný v krabici

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.
Elektronika a víko krabice pro NFC vrátný
Elektronika a víko krabice pro NFC vrátný
Pohled na elektroniku uvnitř krabice
Pohled na elektroniku uvnitř krabice
Detail západky na vratech
Detail západky na vratech

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.
Arduino NFC vrátný - schéma projektu
Arduino NFC vrátný – schéma projektu

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!

Oldřich Horáček

2 Comments on “Arduino NFC vrátný

LuBoss567
28.8.2019 at 6:53

Je to sice slovíčkaření, ale i když je použit NFC modul, jeví se mi to jako čtečka RFID 13.56 MHz, což je zpravidla označováno jako MIFARE podle výrobce nejrozšířenějšího čipu.
Bylo by fajn nastínit, jaké jsou základní skupiny RFID a proč byla zvolena právě tato a ne třeba starší 125 kHz i když je to asi jasná volba. A také logicky vyvstane otázka jak je to s ovládáním pomocí telefonu, když už je použita NFC čtečka?

pedrokv
6.9.2019 at 20:44

Článek vzniknul z tak nějak z čirého nadšení, jak to hezky šlape. Nemá být encyklopedií, spíš ukázkou a pro ty, kteří chtějí to samé a nechtějí nic měnit, tak kompletním návodem.

Proč to a ne ono? Tak šlo to i 100x jinak. Já si s NFC dřív maloučko hrál, když jsem v rámci Geocachingu chystal NFC cache. Nakonec na ni nedošlo, ale měl jsem nějaké NFC samolepky. Ty jsem chtěl využít i zde. Bohužel, nalepení na telefon nefunguje.

Též jsem zkoušel emulovat NFC tag telefonem. Nemám s tím větší zkušenost, než tu, že s telefonem Lenovo Vibe P1 Pro to nejde, protože telefon má pokaždé jiné sériové číslo NFC tagu. Zda je to chyba nebo nějaká security feature nedokážu posoudit.

Dalším důvodem k volbě čtečky/čipů na 13,56MHz bylo to, že jsme se ženou dělali v jedné fabrice, kde byl jako docházkový systém ID karta na stejné frekvenci. Takže když už ji má člověk na krku (kartičku! :-)), stačí ji jen přiložit a vrátný otevře.

Napsat komentář