Browsed by
Tag: NFC

Použití NFC po 1-Wire sběrnici (DS2401)

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í:

  1. Na čtečku se přiloží master karta (definovaná v DB_MODE)
  2. Po 10ti vteřinách se rozsvítí notifikační dioda (výstup D4)
  3. Během 60 sekund je nutné na čtečku přiložit novou kartu
  4. 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