Innholdsfortegnelse:

Arduino RFID dørlås: 5 trinn (med bilder)
Arduino RFID dørlås: 5 trinn (med bilder)

Video: Arduino RFID dørlås: 5 trinn (med bilder)

Video: Arduino RFID dørlås: 5 trinn (med bilder)
Video: Automatisk dørlås 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

*** Oppdatert 9.08.2010 *** Jeg ønsket å gjøre en enkel og sikker måte å komme inn i garasjen min. RFID var den beste måten å låse opp døren min, selv med hendene fulle kan jeg låse opp døren og skyve den opp! Jeg bygde en enkel krets med en grunnleggende ATMega 168 arduino-chip og en ID-20 RFID-leser for å kontrollere en elektronisk dørlås. Kretsen består av 3 separate deler, en Reader for å lese RFID -tagger, en kontroller for å godta data fra leseren og kontrollere utgangen til RGB LED og den elektriske dørlåsen. Dørlåsen installeres først i en dør og testes med et 9v batteri for å sikre riktig installasjon. I de fleste tilfeller vil du ha en normalt åpen krets på dørlåsen, eller Fail Secure. Dette betyr at døren forblir låst når ingen strøm passerer gjennom den. Når 12vDC passeres gjennom elektromagneten i dørlåsen, gir en plate i låsen vekk og lar døren skyves åpent fritt. Leseren er plassert på utsiden av døren og er atskilt fra kontrolleren på innsiden, slik at ingen kan omgå sikkerheten ved å åpne leseren og prøve å kortslutte leseren. Kontrolleren mottar serielle data fra leseren og styrer RGB -lysdioden og dørlåsen. I dette tilfellet har jeg lagt begge på separate brødbrett for testing. Her er en videooversikt over systemet i bruk Les videre for å se hvordan du bygger et for deg selv! ** Oppdatering ** Alle kodene, skjemaene og PCB -designene er testet og forbedret. De er alle lagt ut her fra og med 8/9/2010 Oppdatert video av det siste systemet som er installert og fungerer.

Trinn 1: Nødvendige deler

Nødvendige deler
Nødvendige deler

Her er en liste over deler og lenker til SparkFun.com hvor jeg kjøpte dem. Dette er det grunnleggende settet med deler du trenger for å bygge og arduino og en krets for å lese RFID -tagger inn i arduinoen. Jeg antar at du allerede har et brødbrett, strømforsyning og tilkoblingskabler.

Arduino ting

ATmega168 med Arduino Bootloader $ 4,95

Krystall 16MHz $ 1,50

Kondensator Keramisk 22pF $ 0,25 (x2)

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

Mini trykknappbryter $ 0,35

Trippel utgang LED RGB - spredt $ 1,95

RFID -ting

Enten en av disse, 20 har bedre rekkevidde, 12 er mindre RFID Reader ID-12 $ 29.95 RFID Reader ID-20 $ 34.95

RFID Reader Breakout $ 0,95

Break Away Headers - Straight $ 2,50

RFID -tag - 125 kHz $ 1,95

Annen

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

Dørlås er fra ebay. Door Fail Secure access control Electric Strike v5 NO $ 17.50 (kawamall, bay)

Trinn 2: Bygg Arduino -kontrolleren

Bygg Arduino -kontrolleren
Bygg Arduino -kontrolleren
Bygg Arduino -kontrolleren
Bygg Arduino -kontrolleren
Bygg Arduino -kontrolleren
Bygg Arduino -kontrolleren

Det første trinnet for å bygge en RFID dørlås med en grunnleggende Arduino er å brødbrette ut en grunnleggende arduino. De fleste Arduino forhåndsblinkede ATMega 168-brikker leveres med standard blinkprogram forhåndsinstallert. Koble en LED til digital utgang 13 og kontroller at alt fungerer.

Maskinvaredelen av denne RFID -leseren ville være for enkel hvis vi brukte en vanlig arduino med innebygd USB -programmerer. Siden jeg har tenkt å sette dette inn i veggen og ikke røre det igjen, ønsker jeg ikke å bruke et stort omfangsrikt $ 30 arduino -bord når jeg kan kjøpe en $ 5 ATMega 168 og lage en mye mindre tilpasset PCB.

Fordi jeg valgte å lage en grunnleggende Arduino-krets selv, trenger jeg en ekstern USB-> Seriell FDIT-programmerer. Jeg har inkludert Eagle -diagrammer for kontrolleren med en strømforsyning bygget fra en 7805 spenningsregulator. I testen brukte jeg en brødbrettet strømforsyning.

For å få en arduino i gang er alt du egentlig trenger ATMega168 med arduino -programvaren blinket på den, 2x 22pF kondensatorer, 16mhz krystall, 10k ohm motstand, trykknapp og et brødbrett. Tilkoblingen til dette er velkjent, men jeg har inkludert hele skjematikken for kretsen.

Arduino kommer til å utløse 4 utganger, 1 hver for røde/grønne/blå lysdioder, og 1 for å utløse TIP31A til å sende 12vDC til dørlåsen. Arduino mottar serielle data på sin Rx-linje fra ID-20 RFID-leseren.

Trinn 3: Bygg RFID -leseren

Bygg RFID -leseren
Bygg RFID -leseren
Bygg RFID -leseren
Bygg RFID -leseren
Bygg RFID -leseren
Bygg RFID -leseren

Nå som du har arduino-brødet brettet og fungerer, kan du sette sammen RFID-leserdelen av kretsen som vil inneholde ID-10 eller ID-20 og RGB LED for å indikere kretsens status. Husk at leseren vil være utenfor og atskilt fra kontrolleren inne, slik at noen ikke lett kan bryte inn.

For å bygge dette, skal vi sende 5v/bakken over fra det primære brødbrettet til et sekundært brødbrett vi bygger leseren på. Send også over 3 ledninger fra 3 av arduino -utgangspinnene for å kontrollere RGB -LED, en for hver farge. En ledning til, Brown på bildene, vil være en seriell tilkobling for ID-20 for å snakke med arduinoens Rx serielle inngang. Dette er en veldig enkel krets å koble til. Lysdioder får motstander og noen få punkter på ID-20 er knyttet til bakken/5v for å angi riktig status.

For å gjøre det lettere å brødbrette, selger ID-10/ID-20 Sparkfun et Breakout-brett som lar deg feste lengre pinhoder som er plassert i avstand til et brødbrett. Denne delen og pinnehodene og oppført i delelisten.

Skjematikken skal være rett frem og lett å følge.

Trinn 4: Program

På tide å programmere arduinoen din. Dette kan være litt vanskelig ved å bruke en grunnleggende arduino. Du må kanskje trykke på tilbakestillingsknappen flere ganger før og under den første delen av opplastingen. En veldig viktig ting å huske, du vil få en opplastingsfeil hvis du ikke midlertidig kobler fra ID-20-serien til arduino's Rx-linje. ATMega168 har bare 1 Rx -inngang, og den bruker den til å laste opp kode for å snakke med programmereren. Koble fra ID-20 mens du programmerer, og koble den deretter til igjen når du er ferdig. Jeg brukte en FTDI programmerer som lar deg programmere arduinoen via USB med bare 4 ledninger. Kontrollskjemaet viser en pin -header -tilkobling slik at du kan koble til en direkte. Sparkfun selger også denne delen, men mange kan allerede ha den.

Du kan enkelt laste opp koden min til arduinoen din og aldri se deg tilbake, men hva er moroa i det? La meg forklare den grunnleggende ideen om hvordan det fungerer.

Først og fremst ville jeg ikke ha noen eksterne knapper/brytere/etc, og jeg ville ikke omprogrammere arduinoen hver gang jeg ønsket å legge til et nytt kort. Derfor ønsket jeg å bruke bare RFID for å kontrollere kretsens drift, så vel som kontroll over dørlåsen.

Programmet slår på den blå lysdioden for å indikere at den er klar til å lese et nytt kort. Når kortet leses, avgjør det om det er et gyldig kort eller ikke ved å sammenligne det det leser inn med en liste over gyldige kort. Hvis brukeren er gyldig, slår arduino AV den blå lysdioden og den grønne lysdioden slås på i 5 sekunder. Den slår også på en annen utgang høy i 5 sekunder. Denne utgangen er koblet til TIP31A -transistoren og lar den lille arduinoen styre en mye større 12v 300mA dørlås uten å bli skadet. Etter 5 sekunder låses dørlåsen igjen, og lysdioden går tilbake til blått for å vente på at et nytt kort skal leses. Hvis kortet er ugyldig, endres lysdioden til RØD i noen sekunder og tilbake til blå for å vente på et nytt kort.

Det er viktig at dørlåsen fortsatt fungerer selv om arduinoen mister strømmen over natten eller blir tilbakestilt. Derfor er alle gyldige kort -ID -er lagret i EEPROM -minne. ATMega168 har 512 Bytes EEPROM -minne. Hvert RFID-kort har et 5 Hex Byte serienummer og en 1 Hex Byte Check sum som vi kan bruke til å bekrefte at det ikke var noen feil i overføringen mellom ID-20 og arduinoen.

Gyldige kort lagres i EEPROM ved å bruke den første byten som en teller. For eksempel, hvis det er 3 gyldige kort som er lagret, vil den første byten i EEPROM være 3. EEPROM.read (0); = 3. Når vi vet dette, og det faktum at hver ID er 5 Bytes lang, vet vi at 1-5 er kort ett, 6-10 er kort 2 og 11-15 er kort 3. Vi kan lage en løkke som ser gjennom EEPROM 5 byte om gangen og prøver å finne kortet som ble lest inn av leseren.

Men hvordan kan vi legge til nye kort i EEPROM etter at kretsen er installert? Jeg har lest inn et av RFID -kortene jeg har og hardkodet det til å være Master RFID -kortet. Så selv om hele EEPROM er slettet, vil hovedkortet fortsatt fungere. Når et kort leses, sjekker det først om det er hovedkortet, hvis ikke, så fortsetter det å se om det er et gyldig kort eller ikke. Hvis kortet er hovedkortet, har vi arduinoen til å gå inn i en "programmeringsmodus" der den blinker RGB og venter på at en annen gyldig kode skal leses. Den neste taggen som leses, legges til neste ledige sted i EEPROM og telleren økes 1 hvis kortet ikke allerede finnes i EEPROM -minnet. Leseren går deretter tilbake til normal modus og venter på at et nytt kort skal leses.

Foreløpig har jeg ikke programmert en måte å slette et kort på, ettersom årsakene til å slette et kort mest sannsynlig vil være at det ble mistet eller stjålet. Siden dette mest sannsynlig vil bli brukt med 1-10 personer, er det enkleste å gjøre å hardt programmere et Master Erase-kort som vil tørke alle kortene fra EEPROM og deretter legge dem til igjen, noe som bare tar noen sekunder. Jeg har lagt til kode for å tørke EEPROM, men jeg har ikke implementert denne funksjonen ennå..

Koden er vedlagt i en tekstfil sammen med en kopi av delelisten.

Trinn 5: Utvid

Dette er bare noen av de kule tingene du kan gjøre med RFID. Du kan utvide dette mye ytterligere med en LCD -utgang, logging av hvem som kommer inn og når, nettverk/twitter -tilkobling osv. Jeg planlegger å lage en ferdig PCB -versjon av denne kretsen. Jeg har aldri laget en PCB før, så jeg jobber fremdeles med design og utforming av delene. Når jeg har fullført dem, legger jeg dem ut også. Jeg oppfordrer alle til å ta koden jeg har skrevet og endre den for å gjøre enda flere kule ting!

Finalist i Arduino -konkurransen

Anbefalt: