Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2022:arosca:door-lock [2022/05/27 15:31]
vlad_vasile.marcu [Hardware Design]
pm:prj2022:arosca:door-lock [2022/05/27 23:57] (current)
vlad_vasile.marcu [Software Design]
Line 38: Line 38:
   *Modul conector DC 5.5 x 2.1mm pentru alimentare   *Modul conector DC 5.5 x 2.1mm pentru alimentare
  
-In plus, yala electrica are nevoie de alimentare de la o priza.+In plus, yala electrica are nevoie de alimentare de la o priza.Pe schema am folosit o baterie pentru a reprezenta asta.
  
 {{:​pm:​prj2022:​arosca:​circuit-schema.png?​600|}} {{:​pm:​prj2022:​arosca:​circuit-schema.png?​600|}}
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 65: 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 76: Line 254:
 </​note>​ </​note>​
  
 +{{:​pm:​prj2022:​arosca:​SistemDoorLock.zip|}} - Arhiva cu codul si librariile necesare pentru RFID si LCD I2C
 ===== Jurnal ===== ===== Jurnal =====
  
pm/prj2022/arosca/door-lock.1653654714.txt.gz · Last modified: 2022/05/27 15:31 by vlad_vasile.marcu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0