Szafka w biurku zamykana RFIDem

Szafka w biurku zamykana RFIDem

W dzisiejszym wpisie chciałbym zaprezentować Wam jak za pomocą Arduino (a później także mikroprocesora) zrobić sobie fajny zamek do szafki w biurku – fajny, albowiem nie na tradycyjny klucz lecz karty zbliżeniowe RFID.

Gadżet sprawi, że do otwarcia szafki potrzebna będzie karta, którą można nosić w portfelu oraz wiedza, gdzie taką kartę przytknąć.

Potrzebne elementy

  • Zestaw czytnika RFID
  • Płytka stykowa 400 (może być mniejsza 170 – ale wtedy mikroprocesor będzie wystawał)
  • Ładowarka USB 5V (aby zasilić później układ oparty na mikroprocesorze zamiast Arduino)
  • Serwo 9G (ja użyłem NewPower XL-9)
  • Mocowanie serwa 9G (użyłem ramki 38×36)
  • Snap plastikowy M3 (do połączenia orczyka serwa z prętem, użyłem MP-JET 2121)
  • Kawałek pręta 3mm (jeśli nie masz, możesz zakupić 1 metr)
  • Prosta zasuwka meblowa (przykład)
  • Mikrokontroler, np. ATmega8

Przygotowanie fizyczne

Zasuwka

W zaznaczonym miejscu zasuwki wiercimy dziurę i przyklejamy w tym miejscu pręt, następnie łączymy go ze snapem, przykręcamy orczyk prosty do serwa, po czym łączymy snap z serwem (dołączony do snapa zatrzask nie będzie pasował, ale wystarczy nieco bardziej rozwiercić ostatnią dziurkę orczyka aby wszystko zgrało się idealnie).
Całość sprzętowo wygląda tak:

2013-01-10-812

Przygotowanie programowe

Nadszedł czas na przygotowanie programowe. Zanim przejdziemy do właściwego programu parę słów o działaniu czytnika RFID. Moduł czytnika przekazuje odczytane identyfikatory tokenów (czyli breloczków lub kart) do Arduino lub mikrokontrolera poprzez port Serial, na tej podstawie można je odczytać w kodzie i stosując odpowiednie instrukcje warunkowe wykonać daną akcję – w naszym przypadku zmienić wychylenie serwa.

Na tokenach dostępowych są podane numery identyfikacyjne – nie są to numery jakimi posługują się tokeny w komunikacji z czytnikiem, numery nadrukowane mają za zadanie pełnić jedynie funkcję pomocniczą, np. w ewidencjonowaniu.

Schemat połączeń (UWAGA – W oprogramowaniu do rysowania schematów nie ma idealnego odwzorowania czytnika RFID, musimy zatem ustalić co i jak – trzymając czytnik pionowo, tak aby po lewej stronie było złącze 5 pinowe a po prawej 3 pinowe przyjmijmy, że pinami numer 1 są piny pierwsze od dołu, a na schematach pierwsze od lewej. Interesować nas będzie wyłącznie złącze 5 pinowe, złącze 2 pinowe jest przeznaczone na antenę, sposób jego podłączenia jest dowolny)

rfidd

Następnie wprowadzamy następujący kod:

Biblioteka SoftwareSerial umożliwia nam korzystanie z portu Serial na dowolnych pinach Arduino zamiast na wymuszonych 0 i 1. Następnie deklarujemy, że portem odbiorczym jest pin 4 a nadawczym (niepotrzebnym nam) pin 5. Dalsza część kodu odpowiedzialna jest za odczytanie przesłanego przez czytnik komunikatu, jeśli jest on odpowiedniej długości następuje jego wysłanie na nasz port szeregowy. Uruchamiamy zatem monitor portu szeregowego znajdujący się w Arduino IDE i przytykamy token do czytnika, naszym oczom powinien ukazać się odczytany identyfikator, przyjmijmy, że jest to 00402B4D533F. Znamy teraz identyfikator wybranego przez nas tokena dostępowego, zapisujemy go sobie i przechodzimy do dalszych czynności.

Kalibracja serwa

Musimy teraz ustalić krańcowe wychylenia naszego serwa, czyli takie, przy których zasuwka będzie na tyle wsunięta aby drzwiczki się otwierały oraz takie przy których będzie wysunięta aby nie było to możliwe. Budujemy tymczasowo nowy układ bez czytnika RFID:

servo

Oraz oczywiście niezbędny kod:

W kodzie załączamy bibliotekę niezbędną do obsługi serwa. Funkcja servo_move ma za zadanie wychylić servo na podany kąt. Polecenie servo1.attach przypisuje obsługę serva do podanego pinu, następnie servo jest przesuwane na żądany kąt oraz po 0,5s czasu obsługa serva jest kasowana z podanego pinu. Dlaczego kasuję obsługę serva? Zdarza się tak, że serwo wykona poprawne wychylenie ale do jego końca brakuje kilku milimetrów, wtedy serwo bardzo trzeszczy co nie jest efektem pożądanym, cofnięcie obsługi serwa anuluje wymuszanie utrzymania jego pozycji. Należy teraz eksperymentować z wartością podaną wewnątrz funkcji setup w wywołaniu funkcji servo_move – tak aby odkryć jakie wychylenia są dla nas odpowiednie. W moim przypadku było to 140 dla otwarcia oraz 170 dla zamknięcia.

Budujemy działający układ

Znamy już identyfikator swojego tokena jaki wykorzystamy do autoryzacji oraz wiemy jakie kąty wychylenia serwa umożliwią zablokowanie oraz odblokowanie drzwiczek – czas przejść do właściwego działania. Budujemy układ:

uklad

Oraz stosowny kod:

Kod jest już w większości dla nas zrozumiały. W funkcji setup, podczas inicjalizacji działania kontrolera ustawiamy servo w pozycję zamkniętą czyli kąt 140 stopni. Następnie w pętli sprawdzamy czy istnieje odczyt z modułu RFID, jeśli tak to porównujemy ID odczytanego tokenu, gdy token jest autoryzowany, to w zależności od aktualnego stanu blokady – zmieniamy go na przeciwny.

Usamodzielnienie układu

Jeżeli wszystko działa poprawnie, przyszła pora na usamodzielnienie układu od Arduino. Programujemy mikrokontroler oraz podłączamy go według schematu:

cale

W naszym sposobie obsługiwania RFID zaszły teraz pewne zmiany. Z racji tego, że w mikrokontrolerze serial port znajdujący się na pinach 0/1 nam się do niczego nie przyda, przenosimy obsługę komunikacji z RFID na te właśnie porty – dzięki temu nie będziemy musieli zapychać pamięci dodatkową biblioteką (z którą są z resztą problemy w przypadku ATmegi8) – nasz końcowy kod wygląda zatem tak:

Teraz pozostało już tylko ładnie to poskładać, aby nie przeszkadzało w normalnym użytkowaniu szafki, w moim przypadku wygląda to tak:

2013-01-11-820

A na sam koniec filmik z działania gotowego układu:

Ocena: 4.75/5 (głosów: 61)

Podobne posty

69 komentarzy do “Szafka w biurku zamykana RFIDem

  • fajne :):) to całe arduino coraz bardziej mi się podoba i chyba zaraz sobię je zamówię razem z tym rfid i zrobię wyłączanie kompa na kartę :D

    Odpowiedz
    • Poniekąd jest to możliwe. Wystarczyłoby wykorzystać RFID oraz instrukcje z postu Łukasza o sterowaniu dowolnym urządzeniem przez Arduino. Zetknięcie RFID zamykałoby obwód i umożliwiało uruchomienie. Ja sobie zrobiłem układ zapalania światła nad biurkiem pilotem od radia, będę go jeszcze łączył z tym układem z szafki, aby zapalać tez kartą, a co – jak gadżet to gadżet :)

      Odpowiedz
      • Szkoda energii. Ja kupiłem w biedronie zestawik 3 przelotek (podłączanych do gniazdek) sterowanych pilotem i też mogę sobie sterować zasilaniem (światła, tv, radio itp) nawet z innego pokoju. Całość kosztowała coś kole 30 zł.
        Tu jest o tyle ciekawiej, że pilotem sterujemy slilniczkiem, który wykonuje jakąś pracę. Nie jest to zwykłe: włącz/wyłącz zasilanie.

        Odpowiedz
        • Super sprawa. Gdyby nie to, że wiem, że bawisz się Arduino napisałbym, że obwód z kontaktronem jest prostszy. A potem tylko kawałek magnesu. A ponieważ sam również bawię się arduino ( pochwalę się, że mam dwa ) więc nic o żadnym kontaktronie nie napiszę :). Super post dla tych którym się coś chce a nie wiedzą jak. Pozdrawiam.

          Odpowiedz
            • Nie łatwiej byłoby po prostu przesunąć antenę, a wewnątrz szafki przymocować drugą kartę, która właśnie w momencie zamknięcia drzwiczek zamknie również zamek? ;)

              Odpowiedz
              • Obawiam się, że nadawała by sygnał cały czas co spowodowałoby lekki cyrk (a nawet jakby to oprogramować, by ją ignorowało przy zamknietej – to ciekawe czy nie zakłócało by komunikacji pozostałych kart)

                Odpowiedz
  • Przerost formy nad treścią. Kupujesz na allegro komplet zamka centralnego i masz siłowniki na 4 szuflady/szafki + zasilanie 12V z akumulatora (mały akumulator wystarczy na bardzo długo) lub zasilacza + 2 piloty o dużym zasięgu.
    Wszystko w 5min potrzebne na złożenie zamówienia.

    Odpowiedz
    • Oczywiście, można kupić gotowca. Tylko czy nie wyjdzie drożej? (wydatek na programator/arduino pomińmy).
      Pozatym, zawsze pozostaje satysfakcja ze zrobienia tego samemu, którą wolę od zakupienia gotowca ;)

      Odpowiedz
      • Masz rację. Nie ujmuję autorowi wiedzy. Sam bardzo bym chciał taką posiadać. Tylko ten projekt jest świetnym przykładem wyważania otwartych drzwi. Jeśli chodzi o koszty, to ceny całego kompletu 4 siłowniki + centralka + 2 piloty zaczynają się już od ceny samego czytnika z tego artykułu. Kiedy dodasz do tego koszt serwa, płytki, procka i włożonej pracy to koszt rozwiązania opartego na RFID na jedną szafkę będzie wyższy niż całkiem niezły zestaw do centralnego zamka na 4 szafki.

        Odpowiedz
        • Skoro mowa o pilotach, zawsze można zamiast RFID użyć pilota od radia celem wprowadzania PINu. Nawet bezpieczniej niż zwykły pilot lock/unlock, ba, mało kto pewnie będzie wiedział, że to się tak da otworzyć. Wtedy zamiast ponad 60zł za RFID mamy około 2zł za odbiornik IR :)

          Odpowiedz
      • Dodatkowym słabym punktem i błędem projektowym jest umieszczenie ruchomych części na drzwiczkach a sterowania w szafce. Albo całość powinna być na drzwiczkach w jakiejś obudowie. Zapobiegnie to zablokowaniu mechanizmu przez przedmioty umieszczone w szafce. A najlepiej jak całość znajdowałaby się na ścianie szafki, zapakowane w pudełko z którego wychodziłby jedynie bolec zaczepiający o skobel na drzwiczkach.
        W tej chwili widzę przynajmniej kilka sposobów przypadkowego uszkodzenia i przez to uniemożliwienie otwarcia szafki (lub jej zamknięcia).

        Odpowiedz
  • yyy takie samo urządzonko można by zrobić z kontaktronu + siłownik z zamka centralnego + przekaźnik bistabilny, i do jakiegoś breloka wsadzić magnes i mamy to samo:P

    Odpowiedz
  • a skąd ktoś bedzie wiedział że to działa na magnes ? a poza tym zawsze nosisz magnes w kieszeni? można wziąć samą obudowę tokena i walnąć do śrdka magnes i założe sie że sie nie skapniesz chyba że zobaczysz instalacje od srodka a cena na pewno około 50% niższa niż w artykule.

    Odpowiedz
  • Jak pierwszy raz to zobaczyłem to przypomniał mi się projekt otwierania drzwi z RFID, gdzie była funkcjonalnosc ‘master-key’ów’, czyli karty która nadawała uprawnienia innym kartom.

    Ja sam niedawno skonczyłem do inzynierki projekt otwierania drzwi przez RFID na Arduino + sprawdzanie uprawnien w MySQL i webowy interfejs do tego. Bardzo przyjemna sprawa do zabawy

    Odpowiedz
  • Dzięki za link ale akurat tak się składa, że wszystkie arty o Arduino z tego portalu są mi znane;) Poprostu jestem ciekaw czy gdyby wyjąć Atmege z płytki Ardu to do pracy byłby jej potrzebny kwarc, czy zewnętrzny kwarc jest potrzebny tylko raz do wgrania bootloadera?

    Odpowiedz
    • Po prostu ATmegi mogą korzystać albo z wbudowanego kwarca, albo z dużo dokładniejszego zewnętrznego. ATmega w Arduino jest zaprogramowana tak, żeby korzystała z zewnętrznego. Trzeba by najpierw zmienić jej fusebity, żeby zaczęła korzystać ze swojego wewnętrznego i dpiero wtedy mógłbyś ją wyciągnąć i używać bez kwarca :)

      Odpowiedz
  • Ziefff…. Dziś w nocy z nudów na RFID z JsxzLz (10,8$) + shield LCD5110 z MicrodSD (~11$) + DS1307 (2$) + przekaźnik 2 kanałowy (2,5$) popełniłem eksperyment w postaci systemu dostępu do dwóch diód ;-)

    Wszystko z ebaya.

    Na SD leżą sobie dwa pliki. Allowed.txt – z RFID, które można wpuścić, Register.txt gdzie lądują wszystkie operacje RFID z komentarzem Allowed lub Blocked po kodzie oraz czasem operacji. Jak karata jest w Allowed.txt to przekaźnik odpala mi żarówkę 12V i zapala się zielona dioda, jak karty nie było w Allowed.txt to wywala tylko czerwoną diodę. Oczywiście na LCD odpowiednie komentarze (i odczytany kod). Jak na 2h zabawy chyba nieźle, choć obsługa plików w Arduino jest trochę upierdliwa.

    Odpowiedz
  • Hej Jakub.
    Mógłbyś zrobić poradnik jak zrobić taki zamek lecz na kartę chip (jak do bankomatu, budki tel., itp) z użyciem Atmegi8 lub ATTiny2313?:)
    Bardzo dziękuje i pozdrawiam!

    Odpowiedz
  • Witam
    Potrzebuje pomocy w przerobieniu tego programu aby działał jako ” wysuwacz szuflady”. Zastosowałem układ L293D do sterowania silnikiem dc (bo taki miałem) i chciałbym aby :
    -po przyłożeniu tokena Pin3 = HIGH na 10 s, a potem staje sie LOW
    -Po przyłożeniu tokena drugi raz Pin2 = HIGH na 10 s, a potem staje się LOW
    Chodzi ogólnie by po przyłożeniu tokena silnik odsuwał szufladę (10 s to czas pracy silnika) a po przyłożeniu drugi raz zasuwał.
    Ewentualnie chce zrobić tak żeby szuflada się sama zasunęła po 30 s.

    Siedzę nad tym programem już tydzień i nie mogę dojść do ładu. Proszę, a na nawet błagam o kilka linijek kodu

    Z góry dzięki

    Odpowiedz
  • Witam kto zrobi mi 50 sztuk takiego zamknięcia na kartę lub na kluczyk zapłacę z góry i odbiore cała POlska pozdrawiam i czekam na oferty

    Odpowiedz
  • Hi,
    cool article.
    I like to can easily learn completely new things through your blog. The next step should be to learn how to help make video toon, I found a few in vimeo and are great.
    I can’t say for sure if you can give me any rule

    Odpowiedz

Odpowiedz

anuluj

Masz uwagi?