Talaan ng mga Nilalaman:

Arduino RFID Door Lock: 5 Hakbang (na may Mga Larawan)
Arduino RFID Door Lock: 5 Hakbang (na may Mga Larawan)

Video: Arduino RFID Door Lock: 5 Hakbang (na may Mga Larawan)

Video: Arduino RFID Door Lock: 5 Hakbang (na may Mga Larawan)
Video: Web Programming - Computer Science for Business Leaders 2016 2024, Nobyembre
Anonim
Arduino RFID Lock ng Pintuan
Arduino RFID Lock ng Pintuan
Arduino RFID Lock ng Pintuan
Arduino RFID Lock ng Pintuan
Arduino RFID Lock ng Door
Arduino RFID Lock ng Door
Arduino RFID Lock ng Pintuan
Arduino RFID Lock ng Pintuan

*** Nai-update 8/9/2010 *** Nais kong gumawa ng isang madali at ligtas na paraan upang makapasok sa aking garahe. Ang RFID ay ang pinakamahusay na paraan upang ma-unlock ang aking pinto, kahit na puno ang aking mga kamay maaari kong ma-unlock ang pinto at itulak ito bukas! Nagtayo ako ng isang simpleng circuit na may pangunahing ATMega 168 arduino chip at isang ID-20 RFID reader upang makontrol ang isang electronic lock ng pinto. Ang circuit ay binubuo ng 3 magkakahiwalay na bahagi, isang Reader upang mabasa ang mga tag ng RFID, isang Controller upang tanggapin ang data mula sa mambabasa at kontrolin ang output ng RGB LED at ang Electric door lock. Ang lock ng pinto ay unang na-install sa isang pintuan at sinubukan gamit ang isang 9v na baterya upang matiyak ang wastong pag-install. Sa karamihan ng mga kaso gusto mo ng isang Karaniwang Bukas na circuit sa lock ng pinto, o Fail Secure. Nangangahulugan ito na ang pinto ay mananatiling naka-lock kung walang kasalukuyang dumadaan dito. Kapag ang 12vDC ay naipasa sa electromagnet sa lock ng pinto, ang isang plato sa lock ay nagbibigay daan at pinapayagan ang pintuan na malayang buksan nang bukas. Ang mambabasa ay inilalagay sa labas ng pintuan at hiwalay mula sa taga-kontrol sa loob upang walang makalikot sa seguridad sa pamamagitan ng pagbukas sa Reader at pagsubok sa maikling circuit ng mambabasa. Tumatanggap ang controller ng serial data mula sa Reader at kinokontrol ang RGB led at ang Door lock. Sa kasong ito inilagay ko ang pareho sa magkakahiwalay na mga board ng tinapay para sa pagsubok. Narito ang isang pangkalahatang-ideya ng video ng system sa pagkilos Basahin ang upang makita kung paano bumuo ng isa para sa iyong sarili! ** Update ** Lahat ng mga code, skema, at disenyo ng PCB ay nasubukan at pinong. Lahat sila ay nai-post dito hanggang 8/9/2010 Nai-update na video ng panghuling sistema na naka-install at gumagana.

Hakbang 1: Kailangan ng Mga Bahagi

Mga Bahaging Kailangan
Mga Bahaging Kailangan

Narito ang isang listahan ng mga bahagi at link sa SparkFun.com kung saan ko ito binili. Ito ang pangunahing hanay ng mga bahagi na kailangan mo upang bumuo at arduino at isang circuit upang mabasa ang mga RFID tag sa arduino. Ipinapalagay kong mayroon ka nang isang breadboard, supply ng kuryente at mga wire ng hookup.

Arduino Stuff

ATmega168 kasama ang Arduino Bootloader na $ 4.95

Crystal 16MHz $ 1.50

Capacitor Ceramic 22pF $ 0.25 (x2)

Resistor 10k Ohm 1 / 6th Watt PTH $ 0.25

Lumipat ng Mini Push Button na $ 0.35

Triple Output LED RGB - Diffuse $ 1.95

Bagay na RFID

Alinman sa isa sa mga ito, 20 ay may mas mahusay na saklaw, 12 ay mas maliitRFID Reader ID-12 $ 29.95RFID Reader ID-20 $ 34.95

RFID Reader Breakout na $ 0.95

Break Away Headers - Straight $ 2.50

RFID Tag - 125kHz $ 1.95

Iba pa

TIP31A transistor (radio shack / local electronics store $ 1.50)

Ang Lock Lock ay mula sa ebay. Door Fail Secure access control Electric Strike v5 NO $ 17.50 (kawamall, bay)

Hakbang 2: Buuin ang Arduino Controller

Buuin ang Arduino Controller
Buuin ang Arduino Controller
Buuin ang Arduino Controller
Buuin ang Arduino Controller
Buuin ang Arduino Controller
Buuin ang Arduino Controller

Ang unang hakbang sa pagbuo ng isang RFID lock ng pinto na may pangunahing Arduino ay ang board board ng isang pangunahing gumaganang arduino. Karamihan sa mga Arduino pre-flashing na ATMega 168 chips ay mayroong naka-install na default na blink program. Ikonekta ang isang LED sa digital output 13 at i-verify na gumagana ang lahat.

Ang bahagi ng hardware ng RFID reader na ito ay magiging sobrang simple kung gumamit kami ng isang regular na arduino na may built in na USB programmer. Dahil balak kong ilagay ito sa pader at hindi ito hawakan muli ayokong gumamit ng isang malaking bulky $ 30 arduino board kapag makakabili ako ng isang $ 5 ATMega 168 at gumawa ng isang mas maliit na pasadyang PCB.

Dahil pinili ko na gumawa ng isang pangunahing Arduino circuit sa aking sarili kailangan ko ng isang panlabas na USB-> Serial FDIT programmer. Isinama ko ang mga eskematiko ng Eagle ng controller na may isang supply ng kuryente na binuo mula sa isang 7805 voltage regulator. Sa pagsubok ginamit ko ang isang power supply ng tinapay na board.

Upang makakuha ng isang arduino up at pagpapatakbo ng lahat ng talagang kailangan mo ay ang ATMega168 na may arduino software na naka-flash dito, 2x 22pF capacitors, 16mhz crystal, 10k ohm resistor, push button at isang breadboard. Ang hookup para dito ay kilalang kilala ngunit isinama ko ang buong eskematiko para sa circuit.

Ang arduino ay magpapalitaw ng 4 na output, bawat isa para sa Red / Green / Blue LEDs, at 1 upang ma-trigger ang TIP31A upang ipadala ang 12vDC sa lock ng pinto. Ang arduino ay tumatanggap ng serial data sa linya ng Rx nito mula sa ID-20 RFID reader.

Hakbang 3: Buuin ang Reader ng RFID

Buuin ang RFID Reader
Buuin ang RFID Reader
Buuin ang RFID Reader
Buuin ang RFID Reader
Buuin ang RFID Reader
Buuin ang RFID Reader

Ngayon na nakasakay na ang iyong arduino tinapay at nagtatrabaho maaari mong pagsamahin ang bahagi ng RFID reader ng circuit na naglalaman ng ID-10 o ID-20 at RGB LED upang ipahiwatig ang katayuan ng circuit. Tandaan na ang mambabasa ay nasa labas at hiwalay mula sa taga-kontrol sa loob upang ang isang tao ay hindi madaling masira.

Upang maitayo ito, magpapadala kami ng 5v / Ground mula sa pangunahing board ng tinapay sa isang pangalawang board ng tinapay na pinagtutuunan namin ng Reader. Magpadala rin ng higit sa 3 mga wire mula sa 3 ng mga pin ng output ng arduino upang makontrol ang RGB LED, isa para sa bawat kulay. Ang isa pang wire, Brown sa mga larawan, ay magiging isang serial connection para sa ID-20 na makausap ang serial input ng arduino na Rx. Ito ay isang napaka-simpleng circuit upang kumonekta. Ang nakakakuha ng resistors ng LED at ang ilang mga puntos sa ID-20 ay nakatali sa ground / 5v upang maitakda ang tamang katayuan.

Upang mas madali itong mag-breadboard, ang ID-10 / ID-20 Sparkfun ay nagbebenta ng isang Breakout board na nagbibigay-daan sa iyo upang maglakip ng mas mahahabang mga header ng pin na may puwang upang magkasya sa isang board ng tinapay. Ang bahaging ito at ang mga pinheader at nakalista sa listahan ng mga bahagi.

Ang eskematiko ay dapat na makitid pasulong at madaling sundin.

Hakbang 4: Programa

Oras upang mai-program ang iyong arduino. Maaari itong maging medyo nakakalito gamit ang isang pangunahing arduino, maaaring kailanganin mong pindutin ang pindutan ng pag-reset nang maraming beses bago at sa unang bahagi ng pag-upload. Isang napakahalagang bagay na dapat tandaan, makakakuha ka ng isang error sa pag-upload kung hindi mo pansamantalang ididiskonekta ang linya ng serial na ID-20 sa linya ng Rdu ng arduino. Ang ATMega168 ay mayroon lamang 1 Rx input at ginagamit ito upang mag-upload ng code upang makausap ang programmer. Idiskonekta ang ID-20 habang nagprograma pagkatapos ay i-plug ito muli kapag tapos ka na. Gumamit ako ng isang programmer ng FTDI na nagpapahintulot sa iyo na i-program ang arduino sa pamamagitan ng USB na may 4 na wires lamang. Ipinapakita ng eskematiko ng Controller ang isang koneksyon ng header ng pin upang payagan kang mag-plug ng isa nang direkta. Ibinebenta din ng Sparkfun ang bahaging ito ngunit maraming maaaring mayroon nito.

Madali mong mai-upload ang aking code sa iyong arduino at hindi na lumingon ngunit ano ang kasiyahan nito? Hayaan akong ipaliwanag ang pangunahing ideya kung paano ito gumagana.

Una sa lahat, hindi ko nais ang anumang panlabas na mga pindutan / switch / etc at hindi ko nais na reprogram ang arduino tuwing nais kong magdagdag ng isang bagong card. Samakatuwid nais kong gumamit lamang ng RFID upang makontrol ang pagpapatakbo ng circuit pati na rin ang kontrol sa lock ng pinto.

Binuksan ng programa ang Blue LED upang ipahiwatig na handa na itong basahin ang isang bagong card. Kapag nabasa ang kard nagpasya ito kung ito ay isang wastong card o hindi sa pamamagitan ng paghahambing ng binasa nito sa isang listahan ng mga wastong card. Kung ang gumagamit ay may bisa, i-OFF ng arduino ang Blue LED at i-on ang Green LED sa loob ng 5 segundo. Buksan din nito ang isa pang output na mataas sa loob ng 5 segundo. Ang output na ito ay konektado sa transistor ng TIP31A at pinapayagan ang maliit na arduino na makontrol ang isang mas malaking 12v 300mA na lock ng pinto nang hindi nasira. Pagkalipas ng 5 segundo ang lock ng pinto ay muling nag-lock at ang LED ay bumalik sa asul upang maghintay para sa isa pang card na mabasa. Kung ang card ay hindi wasto pagkatapos ang LED ay nagbabago sa RED ng ilang segundo at bumalik sa Blue upang maghintay para sa isa pang card.

Mahalaga na ang lock ng pinto ay gagana pa rin kahit na ang arduino ay nawalan ng lakas sa magdamag o na-reset. Samakatuwid ang lahat ng mga wastong card ID's ay nakaimbak sa memorya ng EEPROM. Ang ATMega168 ay may 512 Bytes ng memorya ng EEPROM. Ang bawat RFID card ay mayroong 5 Hex Byte serial number at isang 1 Hex Byte Check sum na magagamit namin upang ma-verify na walang mga error sa paghahatid sa pagitan ng ID-20 at ng arduino.

Ang mga wastong card ay nakaimbak sa EEPROM sa pamamagitan ng paggamit ng unang Byte bilang isang counter. Halimbawa, kung mayroong 3 wastong mga kard na nakaimbak ng unang Byte sa EEPROM ay magiging 3. EEPROM.read (0); = 3. Alam ito, at ang katunayan na ang bawat ID ay 5 Bytes ang haba alam namin na ang 1-5 ay isang card, 6-10 ang card 2 at 11-15 ang card 3. Maaari kaming gumawa ng isang loop na tumitingin sa EEPROM 5 bytes nang paisa-isa at sinusubukang hanapin ang kard na binasa ng mambabasa.

Ngunit paano kami makakapagdagdag ng mga bagong card sa EEPROM pagkatapos na mai-install ang circuit ?? Nabasa ko sa isa sa mga RFID card na mayroon ako at mahirap na naka-code ito upang maging Master RFID card. Kaya't kahit na ang buong EEPROM ay na-wipe ang master card ay gagana pa rin. Kailan man nabasa ang isang kard, susuri muna ito upang makita kung ito ang Master card, kung hindi, pagkatapos ay patuloy itong nakikita kung ito ay isang wastong card o hindi. Kung ang card ay ang master card mayroon kaming arduino na pumunta sa isang "mode ng programa" kung saan ito nag-flash ng RGB at naghihintay para sa isa pang wastong tag na mabasa. Ang susunod na nabasa na tag ay idinagdag sa susunod na libreng lugar sa EEPROM at ang counter ay nadagdagan ng 1 kung ang card ay wala na sa memorya ng EEPROM. Ang bumabasa pagkatapos ay bumalik sa normal na mode at naghihintay para sa isang bagong card na mabasa.

Kasalukuyan hindi ako nag-program ng isang paraan upang tanggalin ang isang card dahil ang mga dahilan para sa pagtanggal ng isang card ay malamang na nawala o ninakaw ito. Tulad ng malamang na ito ay magamit sa 1-10 mga tao ang pinakamadaling bagay na gagawin ay ang mahirap na programa ng isang Master Erase card na tatanggalin ang lahat ng mga card mula sa EEPROM pagkatapos ay idagdag ang lahat, na tatagal lamang ng ilang segundo. Nagdagdag ako ng code upang punasan ang EEPROM ngunit hindi ko pa naipatupad ang tampok na ito..

Ang code ay nakalakip sa isang text file kasama ang isang kopya ng listahan ng mga bahagi.

Hakbang 5: Palawakin

Ito ay ilan lamang sa mga cool na bagay na magagawa mo sa RFID. Maaari mong palawakin ito nang mas malayo sa isang output ng LCD, pag-log ng kung sino ang pumapasok at kailan, koneksyon sa network / twitter atbp. Plano ko sa paggawa ng isang tapos na bersyon ng PCB ng circuit na ito. Hindi pa ako nakakagawa ng PCB dati kaya't nagtatrabaho pa rin ako sa disenyo at layout ng mga bahagi. Kapag nakumpleto ko na sila ay i-post ko rin sila. Hinihimok ko ang sinuman na kunin ang code na aking nasulat at baguhin ito upang makagawa ng mas maraming mga cool na bagay!

Finalist sa Arduino Contest

Inirerekumendang: