Arduino+Ethernet Shield+RFID RC522 – dziennik użyć kart

arduino-rfidW dzisiejszym artykule przedstawię sposób, jak zbudować dziennik użyć kart RFID przy pomocy Arduino Uno, Ethernet Shield oraz czytnika RFID RC522. Wykorzystamy również technologie webowe, takie jak PHP i mySQL – opisywane w poprzednich artykułach. Układ pozwala na autoryzację z góry określonych kart dostępowych i tylko te karty są rejestrowane w dzienniku. W przykładzie wykorzystałem diody LED, lecz układ można uzupełnić o serwo-mechanizm lub elektrozamek – wtedy będziemy mogli zabezpieczyć drzwi wejściowe, bramę wejściową lub szafkę. Możliwości jest bardzo dużo – od nas zależy, jak wykorzystamy układ.

Poniżej kilka propozycji

  • drzwi wejściowe autoryzowane kartą RFID
  • szafka przy biurku
  • pomieszczenie chronione (nasz warsztat 🙂 )
  • brama garażowa
  • prosta rejestracja czasu pracy pracowników w firmie

 

Do budowy dziennika niezbędne są następujące elementy:

  • Arduino Uno
  • Ethernet Shield
  • Czytnik RFID RC522 + karty
  • Router, kabel ethernet
  • Diody led, rezystory
  • Płytka prototypowa, kable połączeniowe
  • serwer z obsługą PHP i MySQL

 

IMG_20151123_200347

 

Zasada działania układu:

Po przybliżeniu do czytnika karty RFID sprawdzany jest jej unikalny Uid, następnie jest on porównywalny z numerem który zadeklarowaliśmy na samym początku kodu. Jeżeli numery są takie same, Arduino poprzez http request uruchamia skrypt PHP aktualizujący bazę danych o datę i godzinę użycia karty oraz jej ID. Jeżeli autoryzacja przebiegła pozytywnie, zaświecana jest zielona dioda LED. W przeciwnym wypadku zapala się czerwona dioda. Nic nie stoi na przeszkodzie, aby rejestrować wszystkie użyte karty – nawet te nieautoryzowane (wystarczy zmienić warunek w kodzie). Wszystkie zdarzenia zapisywane są z bazie mySQL a wyświetlane za pomocą prostej strony przygotowanej w PHP i przy pomocy frameworka Bootstrap.

 

Podłączenie MR-RC522

rfid

 

arduino_uno_ethernet_pins

 

Ważne: Ethernet Shield jak również RC522 wykorzystują do komunikacji magistralę SPI. Dlatego ważne jest, aby obydwa moduły podłączyć tak aby „nie gryzły się ze sobą.”

 

Ethernet Shield korzysta z następujących pinów na UNO:

D13, D12, D11 – szyna SPI (D50, D51 i D52 na Arduino Mega)
D10 – slave select dla modułu Ethernet
D4 – slave select dla karty SD
D2 – jeżeli zostanie zlutowany pad na spodniej stronie shielda, wówczas D2 jest połączony z linią INT układu W5100
A0 – detekcja zabezpieczenia zapisu na karcie SD (write protect)
A1 – detekcja obecności karty SD w slocie

 

 

Opis działania prostej strony przygotowanej w PHP

Skrypt dziennik.php pobiera z bazy danych dwie kolumny: timeStamp oraz idkarty. Następnie wyświetla je w formie tabeli. Dane sortowane są od najnowszego użycia. Szablon jest w pełni responsywny, dzięki czemu dostosuje się do wyświetlania na każdym urządzeniu.

Cały skrypt wraz z strukturą bazy danych dostępny jest do pobrania tutaj. Wystarczy utworzyć bazę danych, uzupełnić plik połączeniowy z bazą danych oraz wrzucić pliki na serwer z obsługą PHP.

 

Opis plików:

connectDB.php – połączenie z bazą danych
dziennik.php – odczyt danych z bazy w formie tabeli
rfid.php – skrypt aktualizujący bazę poprzez Arduino
dziennikRFID.sql – struktura bazy mySQL:

 

Widok skryptu:

dziennikrfid

Sketch:

 

Jeżeli będą problemy z instalacją skryptów lub ze zrozumieniem kodu, zapraszam do kontaktu. Bardzo chętnie pomogę i postaram się wyjaśnić niezrozumiałe rzeczy.

Miłego majsterkowania!

8 myśli na temat “Arduino+Ethernet Shield+RFID RC522 – dziennik użyć kart

  1. Fajnie to działa, ale pytanie z innej beczki, jak (linia 39-41) wynik tego wyświetlić jako Uppercase ?

    W tej chwili string jest z małymi literami, a chciał bym aby ładnie był wyświetlony w dużych 🙂

  2. Hello,
    Good job, but how to play a serial with the RC522 and compare it with that of a mysql database for open a door for exemple ?

    Regards
    Alfred

Odpowiedz na „davidAnuluj pisanie odpowiedzi

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *