Sisällysluettelo:

Arduino RFID -oven lukko: 5 vaihetta (kuvilla)
Arduino RFID -oven lukko: 5 vaihetta (kuvilla)

Video: Arduino RFID -oven lukko: 5 vaihetta (kuvilla)

Video: Arduino RFID -oven lukko: 5 vaihetta (kuvilla)
Video: RFID door lock #shorts 2024, Heinäkuu
Anonim
Arduinon RFID -oven lukko
Arduinon RFID -oven lukko
Arduinon RFID -ovilukko
Arduinon RFID -ovilukko
Arduinon RFID -oven lukko
Arduinon RFID -oven lukko
Arduinon RFID -oven lukko
Arduinon RFID -oven lukko

*** Päivitetty 9.8.2010 *** Halusin tehdä helpon ja turvallisen tavan päästä autotalliini. RFID oli paras tapa avata ovi, vaikka kädet täynnä voin avata oven ja työntää sen auki! Rakensin yksinkertaisen piirin, jossa oli perus ATMega 168 arduino-siru ja ID-20 RFID-lukija elektronisen ovilukon ohjaamiseksi. Piiri koostuu kolmesta erillisestä osasta, RFID -tunnisteiden lukulaitteesta, ohjaimesta, joka vastaanottaa tietoja lukijasta ja ohjaa RGB -LEDin ja sähköisen oven lukon lähtöä. Ovilukko asennetaan ensin oveen ja testataan 9 voltin paristolla oikean asennuksen varmistamiseksi. Useimmissa tapauksissa haluat normaalisti avoimen piirin oven lukkoon tai epäonnistuneen suojan. Tämä tarkoittaa sitä, että ovi pysyy lukittuna, kun virta ei kulje sen läpi. Kun 12vDC johdetaan oven lukon sähkömagneetin läpi, lukossa oleva levy antaa periksi ja sallii oven työntämisen auki. Lukija on sijoitettu oven ulkopuolelle ja se on erillään sisäpuolella olevasta ohjaimesta, jotta kukaan ei voi kiertää suojaa rikkomalla lukija auki ja yrittämällä oikosulkea lukija. Ohjain vastaanottaa sarjatietoja lukijalta ja ohjaa RGB -lediä ja oven lukkoa. Tässä tapauksessa olen asettanut molemmat erillisille leipälaudoille testausta varten. Tässä on videon yleiskatsaus toiminnassa olevasta järjestelmästä Lue, miten voit rakentaa sellaisen itsellesi! ** Päivitys ** Kaikki koodit, kaaviot ja piirilevyrakenteet on testattu ja parannettu. Kaikki ne on julkaistu täällä 9.8.2010 alkaen Päivitetty video viimeisestä asennetusta ja toimivasta järjestelmästä.

Vaihe 1: Tarvittavat osat

Tarvittavat osat
Tarvittavat osat

Tässä on luettelo osista ja linkkejä SparkFun.comiin, josta ostin ne. Tämä on perussarja, joka sinun on rakennettava, ja arduino sekä piiri RFID -tunnisteiden lukemiseksi arduinoon. Oletan, että sinulla on jo leipälauta, virtalähde ja kytkentäjohdot.

Arduinon tavaraa

ATmega168 ja Arduino Bootloader 4,95 dollaria

Crystal 16MHz 1,50 dollaria

Keraaminen kondensaattori 22pF 0,25 $ (x2)

Vastus 10 k ohmia 1/6 watin PTH $ 0.25

Mini -painikekytkin 0,35 dollaria

Kolminkertainen LED -RGB - hajautettu 1,95 dollaria

RFID -tavaraa

Joko jompikumpi näistä, 20: llä on parempi kantama, 12 on pienempi RFID-lukija ID-12 $ 29.95 RFID-lukija ID-20 $ 34.95

RFID -lukija Breakout $ 0.95

Break Away Headers - Suora 2,50 dollaria

RFID -tunniste - 125 kHz 1,95 dollaria

Muut

TIP31A -transistori (radiohiihto/paikallinen elektroniikkaliike 1,50 dollaria)

Ovilukko on ebaysta. Ovi epäonnistui Turvallinen kulunvalvonta Electric Strike v5 NO $ 17.50 (kawamall, lahti)

Vaihe 2: Rakenna Arduino -ohjain

Rakenna Arduino -ohjain
Rakenna Arduino -ohjain
Rakenna Arduino -ohjain
Rakenna Arduino -ohjain
Rakenna Arduino -ohjain
Rakenna Arduino -ohjain

Ensimmäinen askel RFID -ovilukon rakentamiseen perus -Arduinolla on leikata lauta peruskäyttöinen arduino. Useimpien Arduinon esisalattujen ATMega 168 -piirien mukana tulee oletusarvoinen vilkkuohjelma. Liitä LED digitaalilähtöön 13 ja tarkista, että kaikki toimii.

Tämän RFID -lukijan laitteisto -osa olisi liian yksinkertainen, jos käyttäisimme tavallista arduinoa, jossa on sisäänrakennettu USB -ohjelmoija. Koska aion laittaa tämän seinään enkä kosketa sitä uudelleen, en halua käyttää isoa, tilaa vievää 30 dollarin arduino -levyä, kun voin ostaa 5 dollarin ATMega 168: n ja tehdä paljon pienemmän mukautetun piirilevyn.

Koska päätin tehdä perus Arduino-piirin itse, tarvitsen ulkoisen USB-> Serial FDIT -ohjelmoijan. Olen sisällyttänyt Eagle -kaaviot ohjaimesta, jonka virtalähde on rakennettu 7805 -jännitesäätimestä. Testissä käytin leipälevyn virtalähdettä.

Ardegainon käynnistämiseksi tarvitset vain ATMega168: n, jossa on arduino -ohjelmisto, 2x 22pF kondensaattorit, 16 MHz: n kide, 10 k ohmin vastus, painike ja leipälauta. Kytkentä tähän on tunnettu, mutta olen sisällyttänyt piirin koko kaavion.

Arduino käynnistää 4 lähtöä, 1 punaista/vihreää/sinistä LEDiä varten ja 1 laukaisee TIP31A: n lähettämään 12vDC oven lukkoon. Arduino vastaanottaa sarjatietoja Rx-linjalleen ID-20 RFID-lukijalta.

Vaihe 3: Rakenna RFID -lukija

Rakenna RFID -lukija
Rakenna RFID -lukija
Rakenna RFID -lukija
Rakenna RFID -lukija
Rakenna RFID -lukija
Rakenna RFID -lukija

Nyt kun arduino-leipäsi on levytetty ja voit työskennellä, voit koota piirin RFID-lukijaosan, joka sisältää ID-10- tai ID-20- ja RGB-merkkivalot piirin tilan ilmaisemiseksi. Muista, että lukija on ulkopuolella ja erillään ohjaimesta, jotta joku ei voi helposti tunkeutua sisään.

Tämän rakentamiseksi lähetämme 5v/maata ensisijaiselta leipälaudalta toiselle leipälaudalle, jolle rakennamme lukijan. Lähetä myös yli 3 johtoa 3: sta arduino -ulostulonapista ohjataksesi RGB -LEDiä, yksi kullekin värille. Vielä yksi johto, kuvassa oleva Brown, on sarjayhteys ID-20: lle, jotta se voi keskustella arduinon Rx-sarjatulon kanssa. Tämä on hyvin yksinkertainen kytkentäpiiri. LEDit saavat vastuksia ja muutama piste ID-20: ssä on sidottu maahan/5v asettaakseen oikean tilan.

Leipälevyn helpottamiseksi ID-10/ID-20 Sparkfun myy Breakout-levyn, jonka avulla voit kiinnittää pidemmät tapit, jotka on sijoitettu leipälevyn mukaan. Tämä osa ja nastat ja luetellaan osaluettelossa.

Kaavion pitäisi olla kapea eteenpäin ja helppo seurata.

Vaihe 4: Ohjelmoi

Aika ohjelmoida arduino. Tämä voi olla hieman hankalaa käyttämällä tavallista arduinoa. Sinun on ehkä painettava nollauspainiketta useita kertoja ennen latauksen ensimmäistä osaa ja sen aikana. Erittäin tärkeä muistaa, että saat latausvirheen, jos et irrota ID-20-sarjalinjaa tilapäisesti arduinon Rx-linjaan. ATMega168: ssa on vain 1 Rx -tulo, ja se käyttää sitä koodin lataamiseen puhuakseen ohjelmoijalle. Irrota ID-20 tietokoneesta ohjelmoinnin aikana ja kytke se sitten takaisin, kun olet valmis. Käytin FTDI -ohjelmoijaa, jonka avulla voit ohjelmoida arduinon USB: n kautta vain 4 johdolla. Ohjaimen kaaviossa on nastan otsikkoliitäntä, jonka avulla voit kytkeä sen suoraan. Sparkfun myy myös tätä osaa, mutta monilla saattaa olla jo se.

Voit helposti ladata koodini arduinoosi etkä koskaan katso taaksepäin, mutta mikä siinä on hauskaa? Selitän perusajatuksen siitä, miten se toimii.

Ensinnäkin, en halunnut ulkoisia painikkeita/kytkimiä/jne. Enkä halunnut ohjelmoida arduinoa uudelleen aina, kun halusin lisätä uuden kortin. Siksi halusin käyttää vain RFID: tä piirin toiminnan ohjaamiseen sekä oven lukon hallintaan.

Ohjelma sytyttää sinisen LED -valon osoittaakseen, että se on valmis lukemaan uuden kortin. Kun korttia luetaan, se päättää, onko se kelvollinen kortti vai ei, vertaamalla lukemaansa voimassa olevien korttien luetteloon. Jos käyttäjä on oikea, arduino sammuttaa sinisen LED -valon ja sytyttää vihreän LED -valon 5 sekunniksi. Se kytkee myös toisen lähdön korkealle 5 sekunniksi. Tämä lähtö on kytketty TIP31A -transistoriin ja antaa pienen arduinon ohjata paljon suurempaa 12 voltin 300 mA: n oven lukkoa vahingoittumatta. 5 sekunnin kuluttua ovilukko lukittuu uudelleen ja LED-valo muuttuu siniseksi odottamaan toisen kortin lukemista. Jos kortti on virheellinen, merkkivalo muuttuu PUNAISEKSI muutamaksi sekunniksi ja palaa siniseksi odottamaan toista korttia.

On tärkeää, että oven lukko toimii edelleen, vaikka arduino menettää virran yön aikana tai nollataan. Siksi kaikki voimassa olevat korttitunnukset tallennetaan EEPROM -muistiin. ATMega168: ssa on 512 tavua EEPROM -muistia. Jokaisella RFID-kortilla on 5 hex-tavun sarjanumero ja 1 hex-tavun tarkistussumma, joiden avulla voimme varmistaa, ettei ID-20: n ja arduinon välillä ole virheitä.

Kelvolliset kortit tallennetaan EEPROMiin käyttämällä ensimmäistä tavua laskurina. Jos esimerkiksi kolme kelvollista korttia on tallennettu, ensimmäinen tavu EEPROMissa olisi 3. EEPROM.read (0); = 3. Tietäen tämän ja sen, että jokainen tunnus on 5 tavua pitkä, tiedämme, että 1-5 on kortti yksi, 6-10 on kortti 2 ja 11-15 on kortti 3. Voimme tehdä silmukan, joka näyttää EEPROMin läpi 5 tavua kerrallaan ja yrittää löytää kortin, jonka lukija on lukenut.

Mutta miten voimme lisätä uusia kortteja EEPROMiin piirin asennuksen jälkeen? Olen lukenut eräästä RFID -kortista, joka minulla on, ja koodannut sen kovasti RFID -pääkortiksi. Joten vaikka koko EEPROM pyyhitään, pääkortti toimii edelleen. Aina kun korttia luetaan, se tarkistaa ensin, onko se pääkortti, jos ei, sitten se jatkaa edelleen, onko se voimassa oleva kortti vai ei. Jos kortti on pääkortti, arduino siirtyy "ohjelmointitilaan", jossa se vilkkuu RGB ja odottaa toisen kelvollisen tunnisteen lukemista. Seuraava luettu tunniste lisätään EEPROMin seuraavaan vapaaseen kohtaan ja laskuria kasvatetaan 1, jos korttia ei ole jo EEPROM -muistissa. Lukija palaa normaalitilaan ja odottaa uuden kortin lukemista.

Tällä hetkellä en ole ohjelmoinut tapaa poistaa korttia, koska syyt kortin poistamiseen olisivat todennäköisesti se kadonnut tai varastettu. Koska tätä todennäköisesti käytettäisiin 1-10 henkilön kanssa, helpoin tapa olisi ohjelmoida vakavasti Master Erase -kortti, joka pyyhkii kaikki kortit EEPROMista ja lisää ne sitten uudelleen, mikä kestää vain muutaman sekunnin. Olen lisännyt koodin EEPROMin pyyhkimiseen, mutta en ole vielä ottanut tätä ominaisuutta käyttöön..

Koodi on liitetty tekstitiedostoon ja kopio osaluettelosta.

Vaihe 5: Laajenna

Tämä on vain osa hienoista asioista, joita voit tehdä RFID: llä. Voit laajentaa tätä paljon entisestään LCD -ulostulolla, kirjaamalla kuka ja milloin saapuu, verkko/twitter -yhteys jne. Aion tehdä tästä piiristä valmiin PCB -version. En ole koskaan aikaisemmin tehnyt piirilevyä, joten työskentelen edelleen osien suunnittelun ja asettelun parissa. Kun saan ne valmiiksi, julkaisen ne myös. Kehotan ketään ottamaan kirjoittamani koodin ja muokkaamaan sitä tekemään entistä hienompia asioita!

Arduino -kilpailun finalisti

Suositeltava: