#9 Moduł RFID MF RC522 - obsługa i przykład użycia z Arduino
Вставка
- Опубліковано 20 лип 2016
- Chciałbyś identyfikować osoby wchodzące do budynku lub stworzyć elektroniczny zamek do drzwi? Sprawdź moduł RFID.
Moduł RFID MF RC522 ►goo.gl/mNwIOA
Konwerter poziomów logicznych ► goo.gl/Oaxwsp
Kompatybilne tagi ►goo.gl/3qtafD
Elementy potrzebne do konstrukcji zamka:
Elektrozamek ►goo.gl/gEwRuC
Tranzystor N-MOSFET ► goo.gl/v6KDZ3
Dioda Schottky ► goo.gl/ru3OzY
Zasilacz 12V ► goo.gl/KvnZhv
Gniazdo DC ► goo.gl/9bjmla
Biblioteka do Arduino ► github.com/miguelbalboa/rfid
Programy użyte w odcinku:
Odczyt kodu: botland.com.pl/pliki/RFID/test...
Zamek: botland.com.pl/pliki/RFID/zame...
Zamek z serwomechanizmem: botland.com.pl/pliki/RFID/zame...
Przydatne schematy:
imgur.com/a/vIrND - Наука та технологія
super sklep i filmik dzieki
1:43 - obsługiwałem już ten moduł i wszystko ładnie działało nawet bez konwertera poziomów logicznych, ale mam pytanie w przypadku jego użycia i w stosunku do Twojego schematu. Wiem, że konwerter jest tylko poczwórny więc siłą rzeczy dla jednej linii zabrakło "kanału" i tu moje pytanie.
Czemu nie użyłeś kolejnego konwertera tylko linię MISO podpiąłeś wprost od czytnika do arduino ?
mam pytanie jeśli posiadam kluczyk do kawy z modułem rfid który przykladam do automatu. to czy po zakupienu odpowiedniego oprogramowania można zmienić saldo na tym kluczyku, ponieważ obecnie system co 30 dni przyznaje daną kwote a czy można tą wartość zmienić na swoim kluczu?
Witam, jak chciał bym podłączyć moduł RFID poprzez expander PCF, to w programie muszę napisać : MFRC522 expander.rfid (10,9); ?
Jak od strony programowej dogadać się z tym modułem? Trzeba go pytać czy po wykryciu karty sam zacznie gadać?
Każdy tag RFID ma swój unikalny klucz dodatkowo. Da się jakoś go odczytać? Czy w przypadku tej częstotliwości tylko UID nam wystarczy i zapewni odpowiednie bezpieczeństwo? Biblioteka w pythonie potrafi autentykować też dany tag, ale nie znam jego klucza...
Witam, przy podłączeniu do Arduino Leonardo na złącze ICSP jak zmienić zadeklarowany pin RST w programie na pinie 9 jak u mnie jest na pinie RST ICSP-5. Wiem, że to działa nawet jak się zostawi. Chodzi mi dokładnie o program od odczytu tagu. Pozdrawiam.
Dobra, zrobiłem wg. instrukcji, wszystko git, ale czujnik łapie tylko raz, po jednym uruchomieniu przestaje działać w ogóle, jakieś sugestie?
Edit: Podłączyłem pod ICSP i działa bez zarzutu a na pinach się zawiesza.
W jaki sposób dodać więcej kart ??
Jakby się chciało takie rozwiązanie wykorzystać w domu to płytkę stykową powinno się zamienić na jakieś złączki czy może ona działać w "prawdziwym systemie" a całość umieścić w jakiejś skrzynce? Tylko jakby się zwiększyło ilość urządzeń to jak się plątanina zrobi to kiepsko.
Zakupiłem Arduino uno ale teraz nie mam jak podłączyć do komputera. Mógł bym dostać link do tego USB?
jak sie nazywa przyklad ? bo nie moge znalezc
Czy podająć bezpośrednio napięcie na elektrozamek ( np z domofonu ) nie uszkodzimy układu?
Lepiej uzyc tranzystora
A co trzaba zmienić w kodzie żeby serwo wracało do początkowej pozycji po ponownym porzyłorzeniu karty a nie po określonym czasie
i udało sie panu to zrobic
Świetnie prowadzony marketing - element z pełną instrukcją obsługi, wykorzystania, użyteczności. Bardzo bym chciał, aby tak pozostało i było jak najwięcej omawianych elementów/części peryferyjnych do Raspberry Pi, Arduino/Atmegi. Do perfekcji filmiku brakowało mi tylko jak już mowa o Arduino, choć kilku sekundowego pokazania czynności, które trzeba wykonać na Atmedze, żeby to działało (bo jak wnioskuję są nieznaczne różnice). Ale to już delikatna sugestia, reszta bardzo spoko, szczególnie obecność linków do wszystkich elementów (zabrakło mi tylko tej przetwornicy 5V -> 3,3V, bądź jej nie zauważyłem)
Pozdrawiam :)
przecież w arduino jest zamontowana atmega. Jak masz wgrany program do arduino uno to możesz wyjąć atmegę polutować na laminacie i korzystać (układ pinów w arduino uno i atmedze 328 botland.com.pl/3205-thickbox_default/arduino-uno-r3.jpg )
Arturze, mnie na przykład ani trochę nie kręci programowanie Arduino. Dla mnie, czyli osoby która najpierw poznała język C/C++ a dopiero potem mikrokontrolery ciekawszym jest zabawa na "gołym" C. Gdybym miał to zrobić na czyjeś zlecenie/zamówienie, pewnie bym użył Twojego sposobu, jeśli jednak chodzi o rozwijanie umiejętności, chciałbym mieć umiejętności dotyczące AVR, a nie posługiwania się tylko gotowymi funkcjami (co jest szybsze, ale jednak trochę uproszczone, przez co nudniejsze).
Po co stosować konwerter ? Jest masa tutoriali bez konwerterów na tych samych częściać(uno i rfid) i działa idealnie.
możesz spalić xd
Zgadza się! Konwerter jest zbędny. Należy tylko podłączyć napięcie 3.3V.
Konwerter jest po to by nie spalić modułu jak podlaczysz pod plytke na 5v
Taki elektrozamek posiada swój akumulator czy jak to tam się zwie ? Edit : czy trzeba osobno podączać ?
Trzeba osobno podłączyć. Taki elektrozamek nie posiada akumulatora.
Czy można zrobić ten układ na Arduino Nano, a jeśli tak to czy trzeba również stosować konwerter poziomów?
mozna zrobci i zalecam stosowac konwerter chociaz nie ma potrzeby ale jest wieksze ryzyko na spalenie czegos
Witam. Przydatny projekt. Czy ten projekt ruszy na :
Arduino Pro Mini 328 - 3.3V/8MHz?
Będzie trzeba jakieś poprawki wprowadzić?
tak. tylko bez konwertera
Zastanawia mnie to, czy można wyrwać czytnik np. z drzwi i złączyć odpowiednie kolory kabli aby przesłać stan do komputerka bez karty.
Hah, nie jest to możliwe. Aczkolwiek gdy zamiast odpowiednich "kolorków" podłączysz wszystkie do Arduino z kodem który emuluje wszystkie tagi od a do z to może by się udało otworzyć zamek, aczkolwiek to raczej czasochłonna operacja :D
na schemacie pod High voltage podłączone jest niskie napięcie 3.3 V a pod Low voltage 5V natomiast na filmie jest już podłączone praeidłowo.
jak robisz shematy?
1:44 Czy na tym diagramie płytka z konwerterem sygnałów logicznych nie jest czasem odwrotnie?
jest :)
Czy czasami konwerter nie jest podpięty odwrotnie na schemacie podłączenia? w nim HV jest podpięty do 3.3V
Tak, na schemacie jest błąd. Dzięki czujny widzu za zauważenie ;) Dodaliśmy stosowną adnotację.
W/g tej adnotacji po zamianie kabelków na Arduino (5V3,3V) na moduł RFID zostanie podane napięcie 5V a na module jest wyraźnie określone 3,3V ! Jak to w końcu ma być? Czy nie można zamieścić prawidłowego schematy podłączeń?
Wiem że film troche stary ale jednak nadal aktulany, adnotacja mało daje przy telefonach pozatym na botlandzie nie ma takiej informacji :) polecał bym dodać coś na stronie i w tytule :)
@@mrbartusek5035 dokladnie mało sobie nie ujarałem nowiuśkiego UNO. Co prawda pierwszy układ zrobiłem ze schematem ale cos mnie tknęło żeby zobaczyć co to za konwerter. Każdemu się zdarza ale sygnalizacja o tym błędzie jest biedna. Każdy świeżak upali
o co dokłądnie chodzi z tym, że na Leonardo mamy skorzystać z ICSP?
Wyprowadzenia magistrali SPI z której korzysta moduł znajdują się w Arduino Leonardo na złączu ICSP. Rozpiskę pinów można znaleźć tutaj - www.arduino.cc/en/uploads/Reference/ICSPHeader.jpg natomiast pod tym adresem: i.imgur.com/U3bgnwQ.png znajdziesz informację gdzie należy podłączyć odpowiednie piny ;)
Czy moduł ten współpracuje z telefonami w trybie NFC ?
Tak
Filmik na plusik, bardzo dobry.
Jak długość maksymalna kabla może być od arduino do modułu RFID?
Maksymalna długość przewodu nie została nigdzie określona, naszym zdaniem jest to maksymalnie kilkanaście cm. W sieci można znaleźć wypowiedzi użytkowników, odnośnie poprawnej pracy z przewodem cat.6 o długości 6-8", czyli ok. 15-20 cm.
forum.arduino.cc/t/mfrc522-maximum-wire-distance/393590
Czy istnieje możliwość aby tag był czytany z odległości np 50 cm? Czy należy dolutować większą antenę?
Spora musiałaby by być ta antena i całkiem nieźle zasilić by ją trzeba
Jak dodać kolejne karty lub brelok. W komplecie jest brelok i karta.
dokupic osobno
Nie jestem pewien, nie pracuje na co dzień z C/C++ ale będzie to chyba const byte UID[] = {{0xXX, 0xXX, 0xXX, 0xXX}, {9xXX, 9xXX, 9xXX, 9xXX}, {1xXX, 1xXX, 1xXX, 1xXX}};
można zapisać ten sam kod na innych brelokach, lub kartach
pan to jest jednak.mądry jak się pan uczył programować arduino
Ale ja się pana pytam
Wszystko chyba zaczęło się od nauki języka C++ jeszcze w technikum. Wystarczy znać składnię i umieć logicznie myśleć a przede wszystkim: pisać, analizować, czynność powtórzyć
ok thx
Znalazłem nareszcie prosty program do otwierania zamka.
A w jak dopisać kolejne tagi?
Już wiesz ? Bo mam taki sam problem
Tworzysz tablicę dwuwymiarową, w której przechowujesz tagi np:
UID nuidPICC[2][4]={
{0xB5, 0x61, 0x2B, 0x77},
{0xA4, 0x60, 0x12, 0x01}
};
Do sprawdzenia czy przyłożona karta należy do zdefiniowanej tablicy piszesz:
for(int i=0; i
Co jeśli będzie przerwa w dostępie prądu albo zamek po prostu się zatnie czy zepsuje?
Odłączenie napięcia powoduje wysunięcie bolca przy pomocy wewnętrznej sprężyny, chowa się on dopiero po podaniu napięcia 12 V.
Czytałem, że awaryjne zasilanie z baterii zda egzamin, moglibyście zrobić o tym filmik? W moim projekcie używam serwa SG9
@@shadow-ox2wg Są lepsze rozwiązania typu UPS, aczkolwiek są przekaźniki "fire safe" które się załączą gdy zasilanie padnie. Wystarczy zrobić prosty układ zasilania który załączy się w danej sytuacji :D
Jak dodać kolejne tagi? Bo po dopisaniu nic się nie zmienia
Proszę przesłać wykorzystany szkic mailowo do naszego działu technicznego. Postaramy się pomóc.
Ile tagów jest w stanie zapamiętać Arduino ?
Zależy to od wykorzystanej płytki oraz sposobu w jaki będzie napisany kod programu. Np. Arduino Uno posiada 32 kB pamięci programu Flash, 1 kB EEPROM a Arduino Mega 256 kB pamięci programu Flash, 4 kB EEPROM (cztery razy tyle). Najpierw trzeba określić ile modułów będzie potrzebnych, a później dobrać płytkę :)
Co to za plansza na której to robisz i jak to wmontować w drzwi?
Płytka stykowa xd
@@uhuhu13 Ok dzk
Można prosić o kod do wgrania na arduino?
Linki do wykorzystanych w filmie kodów dostępne są w opisie filmu. Jeśli jest problem z ich pobraniem proszę go skopiować i otworzyć w nowej karcie :)
Czy da się otwierać zamek telefonem z NFC? Jak zbliżam telefon do modułu RFID to odczytuje on numer tylko za każdym razem inny..
Zainstaluj odpowiedni emulator NFC (są setki na GPlay) sprawdź numer i dodaj go do kodu :D
Osobiście polecam stworzyć własną aplikację która emuluje tag nfc w tle, gdyż nie udało mi się znaleźć żadnego emulatora z tą funkcją.
Możesz też użyć naklejanych tagów NFC, na allegro są do nabycia w cenie początkującej od 6,50 PLN.
@@marumaro5319 Dziękuję za odpowiedź. Czy jest możliwość stworzenia takiej aplikacji w jakiś prosty sposób?
@@karolpala9522 W prosty sposób się tego niestety zrobić nie da, wymaga to dużego nakładu pracy. Poszperaj w Google na ten temat :D
@@marumaro5319 Właśnie szperałem w Google i nic nie znalazłem, ale dziękuję za zainteresowanie i odpowiedź
@Botland moglibyscie spowrotem dodac to kody bo jak przepisuję to ciagle mam blady w arduino IDE
wystarczy skopiować link z opisu filmu i wkleić go do przeglądarki :)
@@botland_pl wlasnie link nie dziala to jest ten problem
@@botland_pl dobra teraz ogarnalem ze to plik jest xD
cześć. Widzę że jesteś specjalistą, więc proszę o radę.
Chciałbym zrobić kopię mojej karty bankomatowej.
Technicznie wygląda to tak że ja i moja żona mamy taką
samą kartę na zakupy. Czy jest to możliwe żeby tak zrobić?
Pozdrawiam.
nie, karty bankowe są zabezpieczone i szyfrowane, takie proste czytniki nie będą w stanie ich odczytać.
@@rimson3274 Ok. to jak to robią przestępcy, że kopiują kartę, a gdy znają PIN to czyszczą konto?
@@sebastiankomsta362 nie mowię, że to możliwe, proste ze karta to karta i każda ma swój kod, ale nie zrobisz tego takim czytnikiem arduino
@@rea639 taaak
mógł by pan dać link do arduino uno które pan ma
Znajdziesz je tutaj: botland.com.pl/arduino-moduly-glowne/1060-arduino-uno-rev3-a000066-8058333490090.html
@@botland_pl dziękuje panu
Jak jest z bezpieczeństwem takiego home-made układu? Jaka jest fizyczna możliwość złamania tego? Innymi słowy, w zastosowaniach profesjonalnych co jeszcze jest w takim układzie otwierającym?
Przypuszczam, że oprócz solidnej obudowy wewnątrz jest jakiś czujnik i połączony z systemem alarmowym i w chwili otwarcia obudowy uruchamia alarm.
+Gawroon7 Bezpieczeństwo tak jak zwykłego zamka do drzwi. Trzeba mieć klucz - ten można skopiować, tak samo jest z kartą.
+Botland Mam do Pana bardzo ważne pytanie. Mianowicie jeden z tagów (karta) upadła mi na podłogę i podczas podnoszenia została lekko zgięta. Czy z tego powodu może nie dawać żadnych sygnałów? (jeśli uruchomię program do sczytywania kodu po przyłożeniu jej nic się nie wyświetla na serial monitorze) Liczę na odpowiedź.
Jeżeli ciągłość anteny wewnątrz karty została przerwana, karta niestety nie będzie działać.
+Botland dziękuje za odpowiedź. Proszę jednak powiedzieć jak sprawdzić czy została przerwana?
Gdy wchodzę w link do zamka z serwomechanizmu wyskakuję, że nie ma takiej strony
jak dodaćwięcej breloków
SPOSÓB DODANIA KOLEJNYCH KART :
/************************************************************************************************************
* Do tabeli stałych "const byte UID[][4]" wpisujemy kody kart w postaci kolejnych łańcuchów {liczba1, liczba2, liczba3, liczba4}.
* Jeden taki łańcuch to jedna karta.
* Łańcuchy (karty) są oddzielone przecinkami
* W pętli "for ( k=0; k
Jak wpisać kolejne tagi?
Dowiedziałeś sie jak ? Bo mam ten sam problem
@@pablodoctor1 niestety nie
@@sernikpozostay3941 uzyj argumentu "or" w kodzie ;D
@@pablodoctor1 ^
Tag RFID idzie przeprogramować na inny ?
Mówimy o zmianie taga w oprogramowaniu czy zmianie ID konkretnego taga?
@@botland_pl O zmianie id w tagu czy jest to wykonalne ?
Czy maksymalny zasięg - (w opisie w sklepie podany 10 cm, a filmie jest mowa o 4 cm) - można programowo ograniczyć, żeby tylko przyłożenie bliżej niż 1 cm otwierało zamek?
Grzegorz Judycki Niestety ten czytnik działa na odległość do 4cm
Niestety jest to wartość niezmienna
Taki moduł miałem kupiony ze dwa lata temu, testowałem I działało bez problemu, tylko że wszystkie moje płytki arduino są 5V, hmm... xD
mam rowniez arduino mini pro 5v, dodałem diode zenera ktora obniza napienie o 0.7v i jest ok
Dzięki pomocy mojego kolegiz firmy ELFRO Łomża oto szkic na którym działa np 5 breloków. można dodawać kolejne-nalezy dopisać UIDY oraz zmienić ilość breloków. To jest kopia mojego szkicu, który działa na 100%
miłej zabawy!! :)
#include
#include
#define czas_trwania 3000
//TF
const byte ileKart = 5; // ile ma pamietac kart ???
const byte UID[ileKart][4] = {
{0xE7, 0xAF, 0x6C, 0x19}, // karta 1
{0x1A, 0xE7, 0x3C, 0x29}, // karta 2
{0x5C, 0x8E, 0x39, 0x18}, // karta 3
{0x1C, 0xA1, 0x4C, 0x17}, // KARTA 4
{0xEC, 0x67, 0x4C, 0x17} //KARTA 5
//itd..powielasz do tyle ile trzeba pamietajac ze musi sie zgadzac z liczba ileKart
};
MFRC522 rfid(10, 9);
MFRC522::MIFARE_Key key;
boolean stan = false;
unsigned long czas;
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
pinMode(2, OUTPUT);
}
//TF
bool checkCard(byte b0, byte b1, byte b2, byte b3)
{
for (byte i = 0; i < ileKart; i++)
{
if (UID[i][0] == b0 && UID[i][1] == b1 && UID[i][2] == b2 && UID[i][3] == b3) return true;
}
return false;
}
void loop() {
if (rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial())
{
if (checkCard(rfid.uid.uidByte[0],
rfid.uid.uidByte[1],
rfid.uid.uidByte[2],
rfid.uid.uidByte[3]))
{
Serial.println("Poprawny");
stan = true;
czas = millis() + czas_trwania;
} else
{
Serial.println("Niepoprawny");
stan = false;
}
rfid.PICC_HaltA();
rfid.PCD_StopCrypto1();
}
if (stan && czas < millis())
stan = false;
digitalWrite(2, stan) ; // PIN2 jako ZAMEK
}
arduino uno tesz poosiada wejście icsp
Czemu tak na “Ty”?
Ķ
nie kłam arduino uno posiada wejście 3.3v
W jaki sposób dodać więcej kart ??
wpisanie dodatkowej lini powoduje wyświetlenie błędu
zamek error: 'UID' was not declared in this scope
if (rfid.uid.uidByte[0] == UID[0] &&
^~~
C:\Users\jante\AppData\Local\Temp\zamek\zamek.ino:22:32: note: suggested alternative: 'UID2'
if (rfid.uid.uidByte[0] == UID[0] &&
^~~
UID2
@@janfedorowicz4000
const byte UID [ ] [4} = {
{100, 101, 102, 103},
{101, 101, 102, 103},
{100, 101, 102, 103}
};
To są tab. dwuwymiarowe.
4 - ile bitów w UID ma być,
pusty nawias, można tam dopisać ile kart jest, lub puste wówczas dopisujemy ile chcemy. Amen.
Oczywiście ->> const byte [ ] [4] = {.... Nie ten nawias u góry.
@@franciszeklendzianwo.1596 to również nie dziala może ktoś pomóc z tym dodaniem drugiej karty
@@norbertjurkowski1380
U mnie ten kod działa, 2 w tablicy to ile kart, odczytaj karty kodem :
#include
#include
#define czas_trwania 5000
const byte UID[2] [4] = {
{0xB5, 0x61, 0x2B, 0x77},
{0xB1, 0x61, 0x2B, 0x77}
};
MFRC522 rfid(10, 9);
MFRC522::MIFARE_Key key;
boolean stan = false;
unsigned long czas;
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
pinMode(2, OUTPUT);
}
void loop() {
if (rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial())
{
if (rfid.uid.uidByte[0] == UID[0] &&
rfid.uid.uidByte[1] == UID[1] &&
rfid.uid.uidByte[2] == UID[2] &&
rfid.uid.uidByte[3] == UID[3])
{
Serial.println("Poprawny");
stan = true;
czas = millis() + czas_trwania;
} else
{
Serial.println("Niepoprawny");
stan = false;
}
rfid.PICC_HaltA();
rfid.PCD_StopCrypto1();
}
if (stan && czas < millis())
stan = false;
digitalWrite(2, stan) ;
}