Indholdsfortegnelse:

Arduino RFID dørlås: 5 trin (med billeder)
Arduino RFID dørlås: 5 trin (med billeder)

Video: Arduino RFID dørlås: 5 trin (med billeder)

Video: Arduino RFID dørlås: 5 trin (med billeder)
Video: Демонстрация автономного электронного замка Smartair от Lock-tec 2024, Juli
Anonim
Arduino RFID dørlås
Arduino RFID dørlås
Arduino RFID dørlås
Arduino RFID dørlås
Arduino RFID dørlås
Arduino RFID dørlås
Arduino RFID dørlås
Arduino RFID dørlås

*** Opdateret 8/9/2010 *** Jeg ville lave en nem og sikker måde at komme ind i min garage. RFID var den bedste måde at låse min dør op, selv med mine hænder fulde kan jeg låse døren op og skubbe den op! Jeg byggede et simpelt kredsløb med en grundlæggende ATMega 168 arduino-chip og en ID-20 RFID-læser til at styre en elektronisk dørlås. Kredsløbet består af 3 separate dele, en læser til læsning af RFID -tags, en controller til at acceptere data fra læseren og styre output fra RGB LED og den elektriske dørlås. Dørlåsen installeres først i en dør og testes med et 9v batteri for at sikre korrekt installation. I de fleste tilfælde vil du have et normalt åbent kredsløb på dørlåsen eller Fail Secure. Det betyder, at døren forbliver låst, når der ikke passerer strøm gennem den. Når 12vDC føres gennem elektromagneten i dørlåsen, giver en plade i låsen efter og gør det muligt at skubbe døren frit. Læseren er placeret på ydersiden af døren og er adskilt fra controlleren på indersiden, så ingen kan omgå sikkerheden ved at bryde læseren op og forsøge at kortslutte læseren. Controlleren modtager serielle data fra læseren og styrer RGB -lysdioden og dørlåsen. I dette tilfælde har jeg lagt begge på separate brødbrætter til test. Her er en videooversigt over systemet i aktion Læs videre for at se, hvordan du bygger et til dig selv! ** Opdatering ** Alle koder, skemaer og printkort er blevet testet og forfinet. De er alle lagt ud her fra den 8/9/2010 Opdateret video af det endelige system installeret og fungerer.

Trin 1: Nødvendige dele

Nødvendige dele
Nødvendige dele

Her er en liste over dele og links til SparkFun.com, hvor jeg købte dem. Dette er det grundlæggende sæt dele, du skal bygge og arduino og et kredsløb til at læse RFID -tags ind i arduinoen. Jeg går ud fra, at du allerede har et brødbræt, strømforsyning og tilslutningskabler.

Arduino ting

ATmega168 med Arduino Bootloader $ 4,95

Krystal 16MHz $ 1,50

Kondensator Keramik 22pF $ 0,25 (x2)

Modstand 10k Ohm 1/6 Watt PTH $ 0,25

Mini trykknapkontakt $ 0,35

Triple Output LED RGB - Spredt $ 1,95

RFID -ting

Enten en af disse, 20 har bedre rækkevidde, 12 er mindre RFID Reader ID-12 $ 29,95 RFID Reader ID-20 $ 34,95

RFID Reader Breakout $ 0,95

Break Away Headers - Lige $ 2,50

RFID -tag - 125kHz $ 1,95

Andet

TIP31A transistor (radiohytte/lokal elektronikbutik $ 1,50)

Dørlås er fra ebay. Dørfejl Sikker adgangskontrol Electric Strike v5 NO $ 17.50 (kawamall, bay)

Trin 2: Byg Arduino -controlleren

Byg Arduino -controlleren
Byg Arduino -controlleren
Byg Arduino -controlleren
Byg Arduino -controlleren
Byg Arduino -controlleren
Byg Arduino -controlleren

Det første trin til at bygge en RFID dørlås med en grundlæggende Arduino er at brødbræt en grundlæggende arbejdende arduino. De fleste Arduino-forblinkede ATMega 168-chips leveres med standardblinkprogrammet forudinstalleret. Tilslut en LED til digital udgang 13 og kontroller, at alt fungerer.

Hardware -delen af denne RFID -læser ville være for enkel, hvis vi brugte en almindelig arduino med indbygget USB -programmerer. Da jeg planlægger at sætte dette i væggen og ikke røre det igen, vil jeg ikke bruge et stort omfangsrigt $ 30 arduino -bord, når jeg kan købe en $ 5 ATMega 168 og lave et meget mindre brugerdefineret printkort.

Fordi jeg selv valgte at lave et grundlæggende Arduino-kredsløb, har jeg brug for en ekstern USB-> Seriel FDIT-programmerer. Jeg har inkluderet Eagle -skemaer af controlleren med en strømforsyning bygget fra en 7805 spændingsregulator. Ved test brugte jeg en brødbrætstrømforsyning.

For at få en arduino i gang er alt, hvad du virkelig har brug for, ATMega168 med arduino -softwaren blinket på den, 2x 22pF kondensatorer, 16mhz krystal, 10k ohm modstand, trykknap og et brødbræt. Tilslutningen til dette er velkendt, men jeg har inkluderet hele skematikken for kredsløbet.

Arduino'en vil udløse 4 udgange, 1 hver for røde/grønne/blå lysdioder, og 1 for at udløse TIP31A til at sende 12vDC til dørlåsen. Arduinoen modtager serielle data på sin Rx-linje fra ID-20 RFID-læseren.

Trin 3: Byg RFID -læseren

Byg RFID -læseren
Byg RFID -læseren
Byg RFID -læseren
Byg RFID -læseren
Byg RFID -læseren
Byg RFID -læseren

Nu hvor du har dit arduino-brød brættet og arbejder, kan du sammensætte RFID-læserdelen af kredsløbet, der indeholder ID-10 eller ID-20 og RGB LED for at angive kredsløbets status. Husk, at læseren vil være udenfor og adskilt fra controlleren indeni, så nogen ikke let kan bryde ind.

For at bygge dette sender vi 5v/Ground over fra det primære brødbræt til et sekundært brødbræt, vi bygger læseren på. Send også over 3 ledninger fra 3 af arduino -udgangsstifterne for at styre RGB -LED'en, en for hver farve. Endnu en ledning, Brown på billederne, vil være en seriel forbindelse, hvor ID-20 kan tale med arduinoens Rx serielle indgang. Dette er et meget enkelt kredsløb at tilslutte. LED'er får modstande og et par punkter på ID-20 er bundet til jorden/5v for at indstille den korrekte status.

For at gøre det lettere at brødbrede ID-10/ID-20 Sparkfun sælger et Breakout-bræt, der giver dig mulighed for at vedhæfte længere pinhoveder, der er i afstand til at passe til et brødbræt. Denne del og pinheaders og angivet på delelisten.

Skematikken skal være stram fremad og let at følge.

Trin 4: Program

Tid til at programmere din arduino. Dette kan være lidt vanskeligt ved hjælp af en grundlæggende arduino, du skal muligvis trykke på reset -knappen flere gange før og under den første del af upload. En meget vigtig ting at huske, du får en uploadfejl, hvis du ikke midlertidigt afbryder ID-20 serielinjen til arduinoens Rx-linje. ATMega168 har kun 1 Rx input, og den bruger den til at uploade kode for at tale med programmøren. Afbryd ID-20, mens du programmerer, og sæt den derefter i igen, når du er færdig. Jeg brugte en FTDI programmerer, som giver dig mulighed for at programmere arduinoen via USB med kun 4 ledninger. Controller -skematikken viser en pin header -forbindelse, så du kan tilslutte en direkte. Sparkfun sælger også denne del, men mange har den måske allerede.

Du kan nemt uploade min kode til din arduino og aldrig se dig tilbage, men hvad er det sjove i det? Lad mig forklare den grundlæggende idé om, hvordan det fungerer.

Først og fremmest ville jeg ikke have nogen eksterne knapper/switche/etc, og jeg ville ikke omprogrammere arduinoen hver gang jeg ville tilføje et nyt kort. Derfor ville jeg kun bruge RFID til at styre kredsløbets drift samt styre dørlåsen.

Programmet tænder den blå LED for at indikere, at det er klar til at læse et nyt kort. Når kortet læses, afgør det, om det er et gyldigt kort eller ej, ved at sammenligne det, der er læst ind, med en liste over gyldige kort. Hvis brugeren er gyldig, slukker arduino'en for den blå LED og tænder for den grønne LED i 5 sekunder. Det tænder også en anden output høj i 5 sekunder. Denne udgang er forbundet til TIP31A -transistoren og giver den lille arduino mulighed for at styre en meget større 12v 300mA dørlås uden at blive beskadiget. Efter 5 sekunder låses dørlåsen igen, og LED'en bliver tilbage til blå for at vente på, at et andet kort skal læses. Hvis kortet er ugyldigt, skifter lysdioden til RØD i et par sekunder og tilbage til blå for at vente på et andet kort.

Det er vigtigt, at dørlåsen stadig fungerer, selvom arduinoen mister strøm natten over eller nulstilles. Derfor er alle gyldige kort -ID'er gemt i EEPROM -hukommelse. ATMega168 har 512 Bytes EEPROM -hukommelse. Hvert RFID-kort har et 5 Hex Byte serienummer og en 1 Hex Byte Check sum, som vi kan bruge til at kontrollere, at der ikke var fejl i transmissionen mellem ID-20 og arduinoen.

Gyldige kort gemmes i EEPROM ved at bruge den første byte som en tæller. For eksempel, hvis der er 3 gyldige kort gemt, ville den første Byte i EEPROM være 3. EEPROM.read (0); = 3. Når vi kender dette, og det faktum, at hvert ID er 5 Bytes langt, ved vi, at 1-5 er kort et, 6-10 er kort 2 og 11-15 er kort 3. Vi kan lave en loop, der kigger gennem EEPROM 5 bytes ad gangen og forsøger at finde det kort, der blev læst ind af læseren.

Men hvordan kan vi tilføje nye kort til EEPROM, når kredsløbet er installeret? Jeg har læst et af de RFID -kort, jeg har, og hårdt kodet det til at være Master RFID -kortet. Så selvom hele EEPROM er slettet, fungerer masterkortet stadig. Når et kort læses, kontrollerer det først, om det er Master -kortet, hvis ikke, så fortsætter det med at se, om det er et gyldigt kort eller ej. Hvis kortet er master -kortet, får vi arduinoen til at gå i en "programmeringstilstand", hvor det blinker RGB og venter på, at endnu et gyldigt mærke skal læses. Det næste tag, der læses, tilføjes til det næste ledige sted i EEPROM, og tælleren øges 1, hvis kortet ikke allerede findes i EEPROM -hukommelsen. Læseren vender derefter tilbage til normal tilstand og venter på, at et nyt kort skal læses.

I øjeblikket har jeg ikke programmeret en måde at slette et kort, da årsagerne til at slette et kort sandsynligvis ville være, at det var tabt eller stjålet. Da dette sandsynligvis ville blive brugt med 1-10 personer, ville den letteste ting at gøre være at hårdt programmere et Master Erase-kort, der vil slette alle kort fra EEPROM og derefter tilføje dem alle igen, hvilket kun tager et par sekunder. Jeg har tilføjet kode for at slette EEPROM, men jeg har ikke implementeret denne funktion endnu..

Koden er vedhæftet en tekstfil sammen med en kopi af delelisten.

Trin 5: Udvid

Dette er kun nogle af de seje ting, du kan gøre med RFID. Du kan udvide dette meget yderligere med et LCD -output, logning af hvem der kommer ind og hvornår, netværk/twitterforbindelse osv. Jeg planlægger at lave en færdig PCB -version af dette kredsløb. Jeg har aldrig lavet et printkort før, så jeg arbejder stadig på design og layout af delene. Når jeg har gennemført dem, vil jeg også poste dem. Jeg opfordrer alle til at tage den kode, jeg har skrevet, og ændre den for at gøre endnu flere seje ting!

Finalist i Arduino -konkurrencen

Anbefalede: