مشروع قفل الباب بأستخدام RFID و اردوينو


مرحباً ! اليوم سأعلمك كيفية التعامل مع قارئ RFID MFRC522 و توصيله مع ال Arduino.
RFID - هو جهاز أو دائرة تستخدم لقراءة البيانات الموجودة في علامة/بطاقه   TAG دون أي سلك, RFID هو اتصال لاسلكي يستخدم في العديد من التطبيقات مثل إدارة الفنادق وإدارة مواقف السيارات وبطاقة القبول في المدارس. هذه التكنولوجيا تتطور بسرعة وتزدهر في صناعة الالكترونيات,لذلك سوف ندرس الخطوة الأولى من هذه التكنولوجيا الحديثة :


القطع المطلوبه



اسم القطعه بالعربيه
اسم القطعه بالانجليزيه
المصدر
اردوينو اونو
Arduino Uno
https://www.adafruit.com/product/50
كابل بيانات
USB cable
https://www.adafruit.com/product/62
اسلاك توصيل لوح التجارب
Breadboard bundle wires
https://www.adafruit.com/product/153
حساس امواج فوق الصوتيه
Ultra sonic module
https://www.adafruit.com/product/4007
لوح تثبيت للأردوينو و لوح التجارب
Plastic mounting plate for breadboard and Arduino
https://www.adafruit.com/product/275
لوح تجارب متوسط الحجم
Half-size breadboard
https://www.adafruit.com/product/1898

بعد تجميع المكونات ، لنبدأ في بناء الدائرة عن طريق توصيل قارئ RFID
الى بورد الاردوينو


التوصيل

كما شرحت سابقا RFID هي تقنية اتصال لا سلكي بين القارئ و بطاقة البيانات Tag التي تكون بحوزة الشخص للتعريف عن نفسه للنظام الالكتروني , حيث تخوله هذه البطاقه للدخول لداخل مبنى معين او لتفعيل امر ما بالنظام.

إن نقاط التوصيل في قارئ RFID  مع الاردوينو تكون على النحو التالي: 


اسم مدخل/مخرج الحساس
اسم مدخل/مخرج الاردوينو
V3.3
V3.3
RST
9
GND
GND
MISO
12
MOSI
11
SCK
10
SDA
9


توصيل الاردوينو بالطنان ( Buzzer )

إن لجرس( البيزو) سلكين يخرجان من غلافه. يسمى السلك الأحمر باسم الموجب أو الأنود، 
ويسمى السلك الأسود بالسالب أو الكاثود,ويتم توصيله هو على النحو التالي:

اسم مدخل/مخرج الحساس
اسم مدخل/مخرج الاردوينو
-ve (السلك الاسود)
GND
+ve (السلك الاحمر)
3


توصيل محرك السيرفو ( Servo Motor )

إن محرك سيرفو له ثلاثة أسلاك:
السلك الأحمر أو VCC
سلك برتقالي ( سلك الإشارة) او Signal
سلك البني أو GND
ويتم توصيله كالتالي :


اسم مدخل/مخرج الحساس
اسم مدخل/مخرج الاردوينو
Signal (السلك البرتقالي)
5
VCC (السلك الاحمر)
V5
GND (السلك البني)
GND


توصيل وحدات اضاءه ( LED )


توصيل وحدة الإضاءة الأولى : (LED 1)
الساق السالبة أو القصيرة توصل على الطرف السالب في لوح التجارب.
ويتم توصيل الساق الموجبة أو الطويلة بالمدخل الرقمي 7 من الأردوينو.

توصيل وحدة الإضاءة الأولى : (LED 2)
الساق السالبة أو القصيرة توصل على الطرف السالب في لوح التجارب.
ويتم توصيل الساق الموجبة أو الطويلة بالمدخل الرقمي 6 من الأردوينو.


اسم مدخل/مخرج الحساس
اسم مدخل/مخرج الاردوينو
الساق السالبه (القصيره)
GND
الساق المو جبه (الطويله) لضوء رقم 1
7
2لساق المو جبه (الطويله) لضوء رقم
6


الكود البرمجي


   #include

#include

#include 

RFID rfid(10, 9);

const byte rled = 7;

const byte gled = 6;

const byte buzzer = 3;

boolean permission = true;

byte card[5] = {107, 135, 241, 197, 216}; /

Servo servo;

void setup(){

Serial.begin(9600);

SPI.begin();

rfid.init();

pinMode(7, OUTPUT);

pinMode(6, OUTPUT);

pinMode(3, OUTPUT);

servo.attach(5); }

void loop() {

servo.write(0);

permission = true;

if (rfid.isCard()) {

Serial.println("CARD READ");

if (rfid.readCardSerial()) {

Serial.println(" ");

Serial.println("CARD NUMBERS");

Serial.println("");

Serial.print(rfid.serNum[0]);

Serial.print(" , ");

Serial.print(rfid.serNum[1]);

Serial.print(" , ");

Serial.print(rfid.serNum[2]);

Serial.print(" , ");

Serial.print(rfid.serNum[3]);

Serial.print(" , ");

Serial.print(rfid.serNum[4]);

Serial.println(" "); }

for (int i = 0; i < 5; i++) {

if (rfid.serNum[i] != card[i])

permission = false; } }

if (permission == true) // {

Serial.println("gj");

digitalWrite(rled, LOW);

digitalWrite(buzzer, HIGH);

delay(50);

digitalWrite(buzzer, LOW);

delay(50);

digitalWrite(buzzer, HIGH);

delay(50);

digitalWrite(buzzer, LOW);

digitalWrite(gled, HIGH);

servo.write(90);

delay(2000); }

else {

Serial.println("fgh");

digitalWrite(buzzer, HIGH);

delay(300);

digitalWrite(buzzer, LOW);

digitalWrite(buzzer, HIGH);

delay(50);

digitalWrite(buzzer, LOW);

digitalWrite(buzzer, HIGH);

delay(50);

digitalWrite(buzzer, LOW);

digitalWrite(rled, HIGH);

delay(500);

digitalWrite(gled, LOW);

servo.write(0);

delay(2000); }

rfid.halt(); }

else{

digitalWrite(gled, LOW);

digitalWrite(rled, LOW);

}
    

قم برفع الكود البرمجي لبورد الاردوينو وراقب النتائج !
في حال انك لا تعرف كيف ترفع كود لبورد الاردوينو إطلع على هذا الموضوع
no_sidebar