This shows you the differences between two versions of the page.
|
pm:prj2022:arosca:door-lock [2022/05/27 17:00] vlad_vasile.marcu [Software Design] |
pm:prj2022:arosca:door-lock [2022/05/27 23:57] (current) vlad_vasile.marcu [Software Design] |
||
|---|---|---|---|
| Line 60: | Line 60: | ||
| </note> | </note> | ||
| + | Pentru partea de RFID, am folosit libraria: https://github.com/miguelbalboa/rfid, iar pentru | ||
| + | LCD-ul I2C libraria: https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library. | ||
| + | Putem activa lock-ul in doua moduri. Fie putem apasa pe buton, fie cu ajutorul cartelelor | ||
| + | RFID. Cautam continuu semnale RFID si in cazul in care gasim semnalul setat de mine ca | ||
| + | fiind cel corect deschidem lock-ul.In cazul in care semnalul este gresit vom afisa un | ||
| + | mesaj sugestiv pe LCD si buzzer-ul va scoate un sunet specific unei erori.Pentru a | ||
| + | porni propriu-zis lock-ul am folosit un relay module, iar pentru alimentarea sa in | ||
| + | conector DC 5.5 x 2.1mm pentru a-l baga in priza. | ||
| + | <code java> | ||
| + | |||
| + | |||
| + | #include <Wire.h> | ||
| + | #include <SPI.h> | ||
| + | #include <MFRC522.h> | ||
| + | #include <LiquidCrystal_I2C.h> | ||
| + | LiquidCrystal_I2C lcd(0x3F, 16, 2); | ||
| + | |||
| + | #define SS_PIN 10 | ||
| + | #define RST_PIN 9 | ||
| + | #define LED_G 4 //led-ul verde | ||
| + | #define LED_R 5 //led-ul rosu | ||
| + | #define BUZZER 2 //buzzer-ul | ||
| + | #define lock 3 //pinul de la relay module | ||
| + | MFRC522 mfrc522(SS_PIN, RST_PIN); | ||
| + | int btn = 6; | ||
| + | |||
| + | void setup() | ||
| + | { | ||
| + | Serial.begin(9600); // Pornim comunicarea cu serialul | ||
| + | SPI.begin(); | ||
| + | mfrc522.PCD_Init(); // Initiem modulul MRFC522 pentru RFID | ||
| + | pinMode(LED_G, OUTPUT); | ||
| + | pinMode(LED_R, OUTPUT); | ||
| + | pinMode(BUZZER, OUTPUT); | ||
| + | noTone(BUZZER); | ||
| + | pinMode(btn,INPUT); | ||
| + | pinMode(lock,OUTPUT); | ||
| + | Serial.println("Place your card on reader..."); | ||
| + | Serial.println(); | ||
| + | lcd.begin(); | ||
| + | lcd.backlight(); | ||
| + | lcd.clear(); | ||
| + | lcd.setCursor(0,0); // Punem cursorul la inceputul ecranului | ||
| + | lcd.print(" Scan Your RFID "); | ||
| + | lcd.setCursor(0,1); | ||
| + | lcd.print(" Door Locked "); | ||
| + | |||
| + | } | ||
| + | void loop() | ||
| + | { | ||
| + | //Aici deschidem lock-ul la apasarea butonului | ||
| + | if(digitalRead(btn) == HIGH){ | ||
| + | | ||
| + | Serial.println("Access Granted"); | ||
| + | Serial.println(); | ||
| + | delay(500); | ||
| + | digitalWrite(LED_G, HIGH); | ||
| + | lcd.setCursor(0,1); | ||
| + | lcd.print(" Door Un-Locked "); | ||
| + | tone(BUZZER, 2000); | ||
| + | delay(100); | ||
| + | noTone(BUZZER); | ||
| + | delay(50); | ||
| + | tone(BUZZER, 2000); | ||
| + | delay(100); | ||
| + | noTone(BUZZER); | ||
| + | digitalWrite(lock,HIGH); | ||
| + | delay(3000); | ||
| + | digitalWrite(lock,LOW); | ||
| + | delay(100); | ||
| + | digitalWrite(LED_G, LOW); | ||
| + | lcd.setCursor(0,1); | ||
| + | lcd.print(" Door Locked "); | ||
| + | tone(BUZZER, 2000); | ||
| + | delay(100); | ||
| + | noTone(BUZZER); | ||
| + | delay(50); | ||
| + | } | ||
| + | |||
| + | //Cautam mereu semnale RFID | ||
| + | |||
| + | if ( ! mfrc522.PICC_IsNewCardPresent()) | ||
| + | { | ||
| + | return; | ||
| + | } | ||
| + | | ||
| + | if ( ! mfrc522.PICC_ReadCardSerial()) | ||
| + | { | ||
| + | return; | ||
| + | } | ||
| + | //Afisam tag-ul cartelei RFID pe seriala | ||
| + | Serial.print("UID tag :"); | ||
| + | String content= ""; | ||
| + | byte letter; | ||
| + | for (byte i = 0; i < mfrc522.uid.size; i++) | ||
| + | { | ||
| + | Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "); | ||
| + | Serial.print(mfrc522.uid.uidByte[i], HEX); | ||
| + | content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ")); | ||
| + | content.concat(String(mfrc522.uid.uidByte[i], HEX)); | ||
| + | } | ||
| + | Serial.println(); | ||
| + | Serial.print("Message : "); | ||
| + | content.toUpperCase(); | ||
| + | |||
| + | |||
| + | //Daca semnalul RFID este corect, deschidem lock-ul | ||
| + | if (content.substring(1) == "3C 82 07 49") | ||
| + | { | ||
| + | Serial.println("Access Granted"); | ||
| + | Serial.println(); | ||
| + | delay(500); | ||
| + | digitalWrite(LED_G, HIGH); | ||
| + | lcd.setCursor(0,1); // column, row | ||
| + | lcd.print(" Door Un-Locked "); | ||
| + | tone(BUZZER, 2000); | ||
| + | delay(100); | ||
| + | noTone(BUZZER); | ||
| + | delay(50); | ||
| + | tone(BUZZER, 2000); | ||
| + | delay(100); | ||
| + | noTone(BUZZER); | ||
| + | digitalWrite(lock,HIGH); | ||
| + | delay(3000); | ||
| + | digitalWrite(lock,LOW); | ||
| + | delay(100); | ||
| + | digitalWrite(LED_G, LOW); | ||
| + | lcd.setCursor(0,1); | ||
| + | lcd.print(" Door Locked "); | ||
| + | tone(BUZZER, 2000); | ||
| + | delay(100); | ||
| + | noTone(BUZZER); | ||
| + | delay(50); | ||
| + | } | ||
| + | |||
| + | else | ||
| + | { | ||
| + | lcd.setCursor(0,1); | ||
| + | lcd.print("Invalid RFID Tag"); | ||
| + | Serial.println(" Access denied"); | ||
| + | digitalWrite(LED_R, HIGH); | ||
| + | tone(BUZZER, 1500); | ||
| + | delay(500); | ||
| + | digitalWrite(LED_R, LOW); | ||
| + | noTone(BUZZER); | ||
| + | delay(100); | ||
| + | digitalWrite(LED_R, HIGH); | ||
| + | tone(BUZZER, 1500); | ||
| + | delay(500); | ||
| + | digitalWrite(LED_R, LOW); | ||
| + | noTone(BUZZER); | ||
| + | delay(100); | ||
| + | digitalWrite(LED_R, HIGH); | ||
| + | tone(BUZZER, 1500); | ||
| + | delay(500); | ||
| + | digitalWrite(LED_R, LOW); | ||
| + | noTone(BUZZER); | ||
| + | lcd.setCursor(0,1); | ||
| + | lcd.print(" Door Locked "); | ||
| + | } | ||
| + | } | ||
| + | </code> | ||
| ===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
| Line 66: | Line 228: | ||
| Care au fost rezultatele obţinute în urma realizării proiectului vostru. | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | ||
| </note> | </note> | ||
| + | Cazul de inceput: | ||
| - | ===== Concluzii ===== | + | {{:pm:prj2022:arosca:poza1.jpeg?800|}} |
| + | Cazul in care cartela RFID este gresita (cea mov): | ||
| + | |||
| + | {{:pm:prj2022:arosca:poza2.jpeg?800|}} | ||
| + | |||
| + | Cazul in care cartela RFID este corecta (cea albastra): | ||
| + | |||
| + | {{:pm:prj2022:arosca:poza3.jpeg?800|}} | ||
| + | ===== Concluzii ===== | ||
| + | Mi se pare un proiect util deoarece simuleaza un fel de interfon. Prima | ||
| + | data voiam sa alimentez yala cu o baterie dar nu am gasit una de 12V, asa | ||
| + | ca am preferat sa adaug un modul conector DC 5.5 x 2.1mm pentru a o alimenta | ||
| + | direct de la priza. Am avut o problema cu modulul conector cand era legat aproape de modulul | ||
| + | RFID, asa ca i-am schimbat pozitia si nu am mai avut probleme dupa. Ma gandesc | ||
| + | ca se crease un fel de bruiaj. | ||
| ===== Download ===== | ===== Download ===== | ||
| Line 77: | Line 254: | ||
| </note> | </note> | ||
| + | {{:pm:prj2022:arosca:SistemDoorLock.zip|}} - Arhiva cu codul si librariile necesare pentru RFID si LCD I2C | ||
| ===== Jurnal ===== | ===== Jurnal ===== | ||