Použití NFC po 1-Wire sběrnici (DS2401)
Další zajímavý projekt postavený na Arduinu, který bych zde rád představil, integruje čtení NFC karet.
Zdrojové kódy
http://jirin.deso.cz/NFC_to_1-Wire/
Video tutoriál
Potřebný hardware
Pro výrobu toho modulu budete potřebovat Arduino, doporučuji Pro Mini či Nano kvůli velikosti (lze je bez problémů strčit do krabice).


Odkazy na zakoupení:
https://www.aliexpress.com/wholesale?SearchText=arduino+pro+mini+5v+atmega328
https://www.aliexpress.com/wholesale?SearchText=arduino+nano
Další důležitá věc je čtečka NFC karet, tento projekt je postaven na PN532:

Odkaz na Aliexpress: https://www.aliexpress.com/wholesale?SearchText=pn532
Zapojení
Arduino je potřeba s čtečkou propojit pomocí 6ti drátů.
- VCC čtečky jde na 5 V Arduina
- GND čtečky jde na GND Arduina
- SS čtečky => pin D9 Arduina
- MOSI čtečky => pin D10 Arduina
- MISO čtečky => pin D11 Arduina
- SCK čtečky => D12 Arduina
Čtečku je nutné přepnout do SPI módu pomocí malých přepínačů:

Dále jsou používány piny D4–D8, ale záleží na tom, jaké módy se rozhodnete používat (zmíněno níže). Zde je standardní stav, pokud jsou povoleny všechny módy a piny nejsou změněny:
- D8 – 1-Wire výstup (připojit na 1-Wire extension)
- D7 – pulzní výstup
- D6 – načtena neznámá karta
- D5 – načtena validní karta
- D4 – čtečka je v učícím se režimu + notifikace o nově naučené kartě (připojit na notifikační diodu)
Módy, možnosti použití
Je možné využívat 4 různých módů, které lze libovolně kombinovat.
ONE_WIRE_MODE
Tento mód je víceméně primární, kvůli kterému byla aplikace původně vyvinuta. Pokud je povolen, tak se Arduino po načtení karty vydává za DS1990 / DS2401 1-Wire zařízení. Při použití Mifare Classic (4 byty) se vyplní byty 2 a 3 hodnotou 0x00, pro Mifare Ultralight (7 bytů) je nutné přeskočit jeden byte, takže se vynechá první. Simulované 1-Wire zařízení lze zachytit pomocí Loxone 1-W extension, ale třeba také i pomocí UDP 1-W gateway.
PULSE_MODE
Pokud je tento mód aktivován dochází k pulzu na pinu 7. Důvod proč byl uveden byl požadavek na identifikaci specifické čtečky (při použití více čteček).
DB_MODE
Pomocí tohoto módu si můžete do Arduina definovat svoje karty. Jsou využívány piny 5 a 6, kdy se podle toho, jestli je načtena známá či neznámá karta, pošle pulz na jeden z nich. Takto vydefinované karty lze pak použít v následujícím „učícím se“ módu jako tzv. master karty.
LEARNING_MODE
Tento mód je nutné provozovat s předchozím (DB_MODE). Funguje tak, že je možné Arduino učit nové karty, bez toho, aby bylo nutné pokaždé do modulu nahrát nový sketch s aktualizovaným seznamem karet. Postup učení je následující:
- Na čtečku se přiloží master karta (definovaná v DB_MODE)
- Po 10ti vteřinách se rozsvítí notifikační dioda (výstup D4)
- Během 60 sekund je nutné na čtečku přiložit novou kartu
- Dojde k trojbliku diody a v tento okamžik je karta uložena do EEPROM
Vzhledem k limitu velikosti EEPROM je maximální limit 100 karet.
Zapnutí / vypnutí módů
Logiku sketche lze jednoduše ovlivnit pomocí řádků:
#define ONE_WIRE_MODE #define PULSE_MODE #define DB_MODE #define LEARNING_MODE
Pokud chcete použít kupříkladu jen 1-Wire móde upravte tyto řádky na:
#define ONE_WIRE_MODE //#define PULSE_MODE //#define DB_MODE //#define LEARNING_MODE
Použití v Loxone
NFC karty se vydávají za běžné DS1990 / DS2401 1-Wire zařízení a podle toho s nimi i Loxone pracuje. Stačí aktivovat 1-Wire monitor, přiložit kartu a přidat si ji jako nové zařízení.
S pulzními výstupy pak lze pracovat jako s každým jiným digitálním vstupem v Loxonu.
Další vývoj
Do budoucna uvažuji o verzi s rolling codes (do EEPROM a kartu se budou zapisovat náhodná čísla, která musí odpovídat).
Dále se zde určitě objeví i velmi příbuzný projekt, který s systémy řízení přístupů také velmi souvisí – klávesnice, která se také bude vydávat za DS1990 / DS2401. Bude ji tak možné velmi jednoduše integrovat, třeba i v jednom projektu s touto NFC čtečkou.
Autor článku a projektu: Jiří Jaša, http://www.deso.cz

Arduino UNO s W5100









