Spisu treści:

Zamek drzwi Arduino RFID: 5 kroków (ze zdjęciami)
Zamek drzwi Arduino RFID: 5 kroków (ze zdjęciami)

Wideo: Zamek drzwi Arduino RFID: 5 kroków (ze zdjęciami)

Wideo: Zamek drzwi Arduino RFID: 5 kroków (ze zdjęciami)
Wideo: #9 Moduł RFID MF RC522 - obsługa i przykład użycia z Arduino 2024, Lipiec
Anonim
Zamek drzwi Arduino RFID
Zamek drzwi Arduino RFID
Zamek drzwi Arduino RFID
Zamek drzwi Arduino RFID
Zamek drzwi Arduino RFID
Zamek drzwi Arduino RFID
Zamek drzwi Arduino RFID
Zamek drzwi Arduino RFID

***Zaktualizowano 8.09.2010*** Chciałem w łatwy i bezpieczny sposób dostać się do mojego garażu. RFID to najlepszy sposób na odblokowanie moich drzwi, nawet z pełnymi rękami mogę otworzyć drzwi i je otworzyć! Zbudowałem prosty układ z podstawowym układem arduino ATMega 168 i czytnikiem RFID ID-20 do sterowania elektronicznym zamkiem drzwi. Obwód składa się z 3 oddzielnych części, Czytnika do odczytu tagów RFID, Kontrolera do przyjmowania danych z czytnika i sterowania wyjściem LED RGB oraz Elektrozamka drzwi. Zamek drzwi jest najpierw instalowany w drzwiach i testowany z baterią 9V, aby zapewnić prawidłową instalację. W większości przypadków potrzebujesz obwodu normalnie otwartego na zamku drzwi lub zabezpieczenia w razie awarii. Oznacza to, że drzwi pozostają zamknięte, gdy nie przepływa przez nie prąd. Po przejściu 12vDC przez elektromagnes w zamku drzwi, płytka w zamku ustępuje i umożliwia swobodne otwieranie drzwi. Czytnik jest umieszczony na zewnątrz drzwi i jest odseparowany od kontrolera od wewnątrz, aby nikt nie mógł obejść zabezpieczeń poprzez wyłamanie czytnika i próbę zwarcia czytnika. Kontroler odbiera dane szeregowe z czytnika i steruje diodą LED RGB oraz zamkiem drzwi. W tym przypadku umieściłem oba na osobnych deskach do testowania. Oto wideo przedstawiające działanie systemu Czytaj dalej, aby zobaczyć, jak zbudować go dla siebie! **Aktualizacja** Cały kod, schematy i projekty PCB zostały przetestowane i dopracowane. Wszystkie są zamieszczone tutaj od 8.09.2010 Zaktualizowany film pokazujący zainstalowany i działający system.

Krok 1: Potrzebne części

Potrzebne części
Potrzebne części

Oto lista części i linki do SparkFun.com, gdzie je kupiłem. Jest to podstawowy zestaw części, które musisz zbudować i arduino oraz obwód do odczytu tagów RFID do arduino. Zakładam, że masz już płytkę stykową, zasilanie i przewody przyłączeniowe.

Arduino Rzeczy

ATmega168 z bootloaderem Arduino 4,95 USD

Kryształ 16 MHz 1,50 USD

Kondensator ceramiczny 22pF 0,25 USD (x2)

Rezystor 10k Ohm 1/6 wat PTH 0,25 $

Mini przełącznik przyciskowy 0,35 USD

Potrójne wyjście LED RGB - rozproszone 1,95 USD

Rzeczy RFID

Każdy z nich, 20 ma lepszy zasięg, 12 jest mniejszy Czytnik RFID ID-12 29,95 USD Czytnik RFID ID-20 34,95 USD

Breakout czytnika RFID 0,95 USD

Oderwij nagłówki – proste 2,50 $

Znacznik RFID - 125 kHz 1,95 USD

Inne

Tranzystor TIP31A (budynek radiowy/lokalny sklep z elektroniką 1,5 USD)

Zamek do drzwi pochodzi z serwisu eBay. Bezpieczna kontrola dostępu do drzwi Electric Strike v5 NIE 17,50 USD (kawamall, zatoka)

Krok 2: Zbuduj kontroler Arduino

Zbuduj kontroler Arduino
Zbuduj kontroler Arduino
Zbuduj kontroler Arduino
Zbuduj kontroler Arduino
Zbuduj kontroler Arduino
Zbuduj kontroler Arduino

Pierwszym krokiem do zbudowania zamka drzwiowego RFID z podstawowym Arduino jest wyłożenie podstawowego działającego arduino. Większość wstępnie flashowanych układów Arduino ATMega 168 ma fabrycznie zainstalowany domyślny program blink. Podłącz diodę LED do wyjścia cyfrowego 13 i sprawdź, czy wszystko działa.

Część sprzętowa tego czytnika RFID byłaby zbyt prosta, gdybyśmy użyli zwykłego arduino z wbudowanym programatorem USB. Ponieważ planuję umieścić to w ścianie i nie dotykać go ponownie, nie chcę używać dużej, nieporęcznej płyty arduino za 30 USD, kiedy mogę kupić ATMega 168 za 5 USD i zrobić znacznie mniejszą niestandardową płytkę drukowaną.

Ponieważ zdecydowałem się na samodzielne wykonanie podstawowego układu Arduino, potrzebuję zewnętrznego programatora USB->Serial FDIT. Dołączyłem schemat sterownika Eagle z zasilaczem zbudowanym z regulatora napięcia 7805. W testach użyłem zasilacza do płytek chlebowych.

Aby uruchomić arduino, wszystko, czego naprawdę potrzebujesz, to ATMega168 z oprogramowaniem arduino, 2 kondensatory 22pF, kryształ 16mhz, rezystor 10k omów, przycisk i płytka stykowa. Podłączenie do tego jest dobrze znane, ale dołączyłem cały schemat obwodu.

Arduino wyzwoli 4 wyjścia, po 1 dla czerwonych/zielonych/niebieskich diod LED i 1 w celu wyzwolenia TIP31A w celu wysłania 12vDC do zamka drzwi. Arduino odbiera dane szeregowe na swojej linii Rx z czytnika RFID ID-20.

Krok 3: Zbuduj czytnik RFID

Zbuduj czytnik RFID
Zbuduj czytnik RFID
Zbuduj czytnik RFID
Zbuduj czytnik RFID
Zbuduj czytnik RFID
Zbuduj czytnik RFID

Teraz, gdy masz już włożony chleb arduino i pracujesz, możesz połączyć część obwodu z czytnikiem RFID, która będzie zawierać diodę LED ID-10 lub ID-20 i RGB, aby wskazać stan obwodu. Pamiętaj, że czytnik będzie znajdował się na zewnątrz i oddzielony od kontrolera wewnątrz, aby ktoś nie mógł łatwo się do niego włamać.

Aby to zbudować, wyślemy 5v/Ground z podstawowej płyty chlebowej do dodatkowej płyty chlebowej, na której budujemy czytnik. Wyślij również 3 przewody z 3 pinów wyjściowych arduino, aby sterować diodą LED RGB, po jednym dla każdego koloru. Jeszcze jeden przewód, Brown na zdjęciach, będzie połączeniem szeregowym dla ID-20, aby komunikować się z wejściem szeregowym Rx arduino. To bardzo prosty obwód do podłączenia. Diody LED otrzymują rezystory, a kilka punktów na ID-20 jest podłączonych do masy/5V, aby ustawić prawidłowy stan.

Aby ułatwić wkładanie płytek, ID-10/ID-20 Sparkfun sprzedaje płytkę Breakout, która umożliwia dołączenie dłuższych nagłówków pinów, które są rozmieszczone tak, aby pasowały do płytki chleba. Ta część i pinheaders i wymienione na liście części.

Schemat powinien być prosty i łatwy do naśladowania.

Krok 4: Program

Czas zaprogramować swoje arduino. Może to być trochę trudne przy użyciu podstawowego arduino, może być konieczne wielokrotne naciśnięcie przycisku resetowania przed i podczas pierwszej części przesyłania. Bardzo ważna rzecz do zapamiętania, otrzymasz błąd przesyłania, jeśli tymczasowo nie odłączysz linii szeregowej ID-20 od linii Rx arduino. ATMega168 ma tylko 1 wejście Rx i używa go do przesyłania kodu, aby porozmawiać z programistą. Odłącz ID-20 podczas programowania, a po zakończeniu podłącz go ponownie. Użyłem programatora FTDI, który pozwala na programowanie arduino przez USB za pomocą tylko 4 przewodów. Schemat kontrolera pokazuje połączenie nagłówka pinów, aby umożliwić bezpośrednie podłączenie. Sparkfun również sprzedaje tę część, ale wielu może już ją mieć.

Możesz łatwo wgrać mój kod do swojego arduino i nigdy nie oglądać się za siebie, ale jaka jest w tym zabawa? Pozwólcie, że wyjaśnię podstawową ideę, jak to działa.

Przede wszystkim nie chciałem żadnych zewnętrznych przycisków/przełączników/itd i nie chciałem przeprogramowywać arduino za każdym razem, gdy chciałem dodać nową kartę. Dlatego chciałem wykorzystać tylko RFID do kontroli działania obwodu, a także kontroli nad zamkiem drzwi.

Program włącza niebieską diodę LED, sygnalizując gotowość do odczytu nowej karty. Kiedy karta jest odczytywana, decyduje, czy jest to ważna karta, czy nie, porównując to, co wczytała z listą ważnych kart. Jeśli użytkownik jest prawidłowy, arduino wyłącza niebieską diodę LED i włącza zieloną diodę LED na 5 sekund. Włącza również inne wyjście w stan wysoki na 5 sekund. To wyjście jest podłączone do tranzystora TIP31A i pozwala maleńkiemu arduino sterować znacznie większym zamkiem drzwiowym 12v 300mA bez uszkodzenia. Po 5 sekundach zamek ponownie się blokuje, a dioda LED zmienia kolor na niebieski, czekając na odczytanie kolejnej karty. Jeśli karta jest nieważna, dioda LED zmienia się na CZERWONY na kilka sekund i z powrotem na Niebieską, aby czekać na kolejną kartę.

Ważne jest, aby zamek drzwi nadal działał, nawet jeśli arduino w nocy straci zasilanie lub zostanie zresetowane. Dlatego wszystkie ważne identyfikatory kart są przechowywane w pamięci EEPROM. ATMega168 posiada 512 bajtów pamięci EEPROM. Każda karta RFID posiada numer seryjny 5 Hex Byte oraz sumę kontrolną 1 Hex Byte, którą możemy wykorzystać do sprawdzenia, czy nie wystąpiły błędy w transmisji między ID-20 a arduino.

Prawidłowe karty są przechowywane w pamięci EEPROM przy użyciu pierwszego bajtu jako licznika. Na przykład, jeśli zapisane są 3 ważne karty, pierwszy Bajt w EEPROM to 3. EEPROM.read(0); = 3. Znając to i fakt, że każdy identyfikator ma długość 5 bajtów wiemy, że 1-5 to karta pierwsza, 6-10 to karta 2, a 11-15 to karta 3. Możemy zrobić pętlę, która przegląda EEPROM 5 bajtów na raz i próbuje znaleźć kartę, która została wczytana przez czytnik.

Ale jak możemy dodać nowe karty do EEPROM po zainstalowaniu układu? Przeczytałem jedną z posiadanych przeze mnie kart RFID i na stałe zakodowałem ją jako kartę Master RFID. Więc nawet jeśli cała pamięć EEPROM zostanie wyczyszczona, karta master nadal będzie działać. Za każdym razem, gdy karta jest odczytywana, najpierw sprawdza, czy jest to karta główna, jeśli nie, a następnie sprawdza, czy jest to ważna karta, czy nie. Jeśli karta jest kartą master, arduino przechodzi w „tryb programowania”, w którym miga RGB i czeka na odczytanie kolejnego ważnego tagu. Kolejny odczytany znacznik jest dodawany do następnego wolnego miejsca w pamięci EEPROM, a licznik jest zwiększany o 1, jeśli karta nie istnieje już w pamięci EEPROM. Czytnik powraca wtedy do normalnego trybu i czeka na odczytanie nowej karty.

Obecnie nie zaprogramowałem sposobu usunięcia karty, ponieważ powodem usunięcia karty najprawdopodobniej byłaby jej zgubienie lub kradzież. Ponieważ najprawdopodobniej będzie to używane z 1-10 osobami, najłatwiej byłoby zaprogramować kartę Master Erase, która usunie wszystkie karty z EEPROM, a następnie ponownie je doda, co zajmuje tylko kilka sekund. Dodałem kod do czyszczenia pamięci EEPROM, ale jeszcze nie zaimplementowałem tej funkcji..

Kod jest dołączony w pliku tekstowym wraz z kopią listy części.

Krok 5: Rozwiń

To tylko niektóre z fajnych rzeczy, które możesz zrobić z RFID. Można to znacznie rozszerzyć o wyjście LCD, rejestrowanie, kto wchodzi i kiedy, połączenie sieciowe/twitter itp. Planuję wykonanie gotowej wersji tego obwodu na płytce drukowanej. Nigdy wcześniej nie robiłem PCB, więc nadal pracuję nad projektem i układem części. Gdy już je ukończę, również je opublikuję. Zachęcam każdego do wzięcia napisanego przeze mnie kodu i zmodyfikowania go, aby robić jeszcze więcej fajnych rzeczy!

Finalista konkursu Arduino

Zalecana: