نظام الأمن للصندوق بإستخدام الاردوينو

في هذا المشروع سنتعلم كيف نستخدم المقاومة الضوئية (LDR (Light Dependent Resistor مع الاردوينو لعمل صندوق امان يقوم بإصدار صوت انذار عند فتحه.

 

خزانة امان باستخدام الاردوينو

 

المكونات المطلوبة

 

arduino uno r3

Arduino Uno

Piezo sounder
Piezo Sounder
LED
Light Dependent Resistor
220 Ω resistor
220 Ohm Resistor
10K Ohm Resistor
Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

 

Buzzer

 هو عبارة عن طنان كهربائي يقوم بتحويل الطاقة الكهربائية إلى صوت مسموع. سنقوم بإستخدامه في هذا المشروع لاصدار صوت انذار عند فتح الصندوق .

عمل-بيانو-بسيط-باستخدام-اردوينو

المقاومة الضوئية LDR :

هي عبارة عن مقاومة تتأثر وتتغير قيمتها بتغير شدة الاضاءة المعرضة لها. فعند الظلام تكون قيمتها كبيرة جدا تصل الى 2 ميجا اوم، وفي الضوء الساطع تكون قيمتها صغيرة تصل إلى 200 اوم.

سنقوم بإستخدامها في المشروع لمعرفة اذا كان الصندوق مقفل ام مفتوح. فإذا كان مفتوح نقوم بتشغيل الانذار ويتوقف عندما يتم اغلاق الصندوق.

توصيل الدارة

قم بتوصيل الدارة كما هو موضح بالصورة التالية :

خزانة امان باستخدام الاردوينو

يقوم البرنامج بمراقبة شدة الاضاءة في الصندوق عن طريق المقاومة الضوئية. طالما كان الصندوق مقفل تكون شدة الاضاءة ضعيفة جدا فلا يعمل الانذار و بمجرد فتح الصندوق خزانة يعمل الانذار .

خزانة امان باستخدام الاردوينو

 

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

#define LED 13
#define BUZZER 3

void setup() {
  pinMode(LED, OUTPUT);
  pinMode(BUZZER, OUTPUT);
}

void loop() {
  int sensorValue = analogRead(A0);
  if (sensorValue > 700) {
    digitalWrite(LED, HIGH);
    digitalWrite(BUZZER, HIGH);
  }
  else{
    digitalWrite(LED, LOW);
    digitalWrite(BUZZER, LOW);
  }
}

شرح الكود :

في البداية، نقوم بتسمية منافذ الأردوينو المستخدمة في المشروع، من أجل تسهيل عملية التعامل معها.

#define LED 13
#define BUZZER 3

وفي الدالة ()setup نقوم بضبط الاعدادات اللازمة فى المشروع مثل ضبط الليد والـ Buzzer كمخرج

void setup() {
  pinMode(LED, OUTPUT);
  pinMode(BUZZER, OUTPUT);
}

في دالة ()loop نقوم بقياس قراءة المقاومة الضوئية و نختبر القيمة المقاسه، فإذا تعدت قيمة معينة دل ذلك على أن الصندوق مفتوح ويتم تشغيل الانذار.

  int sensorValue = analogRead(A0);
  if (sensorValue > 700) {
    digitalWrite(LED, HIGH);
    digitalWrite(BUZZER, HIGH);
  }

غير ذلك يتم ايقاف الإنذار .

else{
    digitalWrite(LED, LOW);
    digitalWrite(BUZZER, LOW);
  }



نظام الدخول الآمن بإستخدام RFID

في السنوات الأخيرة، أصبحت إجراءات التعرف الآلي  (Auto-ID)منتشرة فى العدید من القطاعات مثل الصناعات، الخدمات، ومجال الشراء والتوزيع وأنظمة الحماية. حيث تستخدم هذه التقنية لتأمين معلومات كافية ومستمرة عن المنتجات الصناعية أو هوية الأشخاص.

في هذا المشروع، سيتم التعرف على هذه التكنولوجيا والتي تعتمد على تقنية بدأت بالإنتشار تسمى RFID. فما هذه التقنية، وماهو مبدأ عملها، وكيف يتم استخدامها ؟

security-access-using-rfid-reader

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

الأدوات التي سيتم استخدامها لهذا المشروع :

security-access-using-rfid-reader

MFID-RC522 module

Half-size Breadboard

لوح تجارب حجم متوسط (Half size breadboard )

arduino uno r3

Arduino Uno R3

Jumper Wires Male/Male

 اسلاك توصيل ذكر/ذكر (Jumper Wires Male Male)

تقنية RFID :

هي إختصار لمصطلح radio frequency identification وهو تعبيرعام للتقنيات التي تستخدام ترددات الراديو لأغراض تحديد وتتبع الهوية . حيث أنها تستخدم المجالات الكهرومغناطيسية لتحديد وتتبع العلامات (tags) المرفقة بالأشياء تلقائيا. حيث تحتوي هذه العلامات على معلومات مخزنة إلكترونيا.

وتستخدم RFID tags  في العديد من الصناعات، على سبيل المثال، يتم تعليق RFID tag على السيارات أثناء الإنتاج ليتم استخدامها في تتبع خط الانتاج والتجميع، أو في مجال متابعة الامتعة بالمطار، كما تستخدم في أجهزة الحماية والانذار.

في هذا المشروع سيتم استخدام نظام RFID   لفتح الباب. على سبيل المثال، السماح لأشخاص معينين بالدخول.

يستخدم نظام RFID :

العلامات (Tags) التي يتم تعليقها بالكائنات أو الأشياء . في هذا المثال، لدينا سلسلة المفاتيح والبطاقة الكهرومغناطيسية. كل علامة tag له هوية خاصه به (UID).

security-access-using-rfid-reader

القارئ، جهاز ارسال وإستقبال، فهو يقوم بإرسال إشارات إلى الـ tag  ثم يقوم بقراءة ردها.

security-access-using-rfid-reader

 

المواصفات الأساسية للقارئ و بطاقات الـ tag :

مدخل الجهد :3.3v
التردد : 13.56MHz

تصميم لوح التجارب :

قم بتوصيل الدائرة كما هو موضح بالصورة التالية :

security-access-using-rfid-reader

تم توصيل القارئ بالأردوينو كما يلي :

قارئ RFID الأردوينو
SDA منفذ 10
SCK منفذ 13
MOSI منفذ 11
MISO منفذ 12
IRQ لا يتم توصيله
GND GND
 RST منفذ 9
 3.3v 3.3v (لاتقم بتوصيله إلى 5v)

قراءة البيانات من RFID tag :

قبل كتابة التعليمات البرمجية اللازمة، تحتاج إلى تحميل المكتبة الازمة لهذا المستشعر من هنـا.

ثم قم بفك الضغط عن المجلد المضغوط “rfid-master” وإضافة هذه المكتبة إلى المكتبات الموجودة ببرنامج الاردوينو. بعد القيام بذلك، قم بإعادة تشغيل برنامج الاردوينو الخاص بك.

بعد أن تم توصيل الدائرة، انتقل إلى ملف (File) >  أمثلة (DumpInfo < MFRC522 < (Examples ثم قم بتحميل التعليمات البرمجية.  هذا الكود سوف يكون متاح في واجهة الاردوينو (بعد تثبيت مكتبة RFID).

ثم قم بفتح الشاشة التسلسلية، يجب أن ترى شيئا مثل الشكل أدناه :

security-access-using-rfid-reader

قم بتقريب بطاقة أو سلسلة المفاتيح RFID إلى القارئ. قم بجعلها أقرب حتى يتم عرض كافة المعلومات.

security-access-using-rfid-reader

كما هو موضح بالصورة السابقة، هذه المعلومات التي يمكنك قراءتها من البطاقة، بما في ذلك UID الخاص بالبطاقة والذي تم تمييزه باللون الأصفر. حيث يتم تخزين المعلومات في الذاكرة التي يتم تقسيمها إلى segments  و blocks . لديك 1024 بايت من تخزين البيانات مقسمة إلى 16sectors.

قم بكتابة UID الخاص ببطاقتك لأنك ستحتاج إليه لاحقا.

البرمجة

في هذا المشروع سنقوم بقراءة  بطاقتين مختلفتين، فإذا كانت البطاقة تحمل UID  المسموح له بالدخول سيتم قبولها، وإلا سيتم رفضها.

قم بتحميل الكود التالي إلى الأردوينو :

#include <SPI.h> 
#include <MFRC522.h>

#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.
 
void setup() 
{
  Serial.begin(9600);   // Initiate a serial communication
  SPI.begin();      // Initiate  SPI bus
  mfrc522.PCD_Init();   // Initiate MFRC522
  Serial.println("Approximate your card to the reader...");
  Serial.println();

}
void loop() 
{
  
  if ( ! mfrc522.PICC_IsNewCardPresent()) 
  {
    return;
  }
 
  if ( ! mfrc522.PICC_ReadCardSerial()) 
  {
    return;
  }
  
  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();
  if (content.substring(1) == "1A 3A 3F D5") 
  {
    Serial.println("Authorized access");
    Serial.println();
    delay(3000);
  }
 
 else   {
    Serial.println("Access denied");
    delay(3000);
  }
} 

لمحة عن الكود :

اولا يتم تعريف منافذ الأردوينو اعتمادا على ما تم توصيله بالقارئ، ثم يتم إنشاء كائن MFRC522 :

#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);

في دالة ()setup ، يتم تهيئة شاشة الإتصال التسلسلي، والبروتوكول SPI المستخدم لنقل البيانات وتبادلها مع المتحكمات.

void setup() 
{
  Serial.begin(9600);   
  SPI.begin();      
  mfrc522.PCD_Init();   
  Serial.println("Approximate your card to the reader...");
  Serial.println();

}

في دالة ()loop، نقوم بقراءة قيمة الـ UID تدريجيا بإستخدام For loop، وطباعة القيمة بنظام الست عشر (Hex)، ويتم في كل مرة تحويل هذه القيمة إلى string وتخزينها في متغير concat لإستخدامه لاحقا في عملية المقارنة.

 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));
  }

ثم نقوم بعملية التحقق ما إذا كانت قيمة الـ UDI  التي تم قراءتها تساوي قيمة الـ UID المسموح لها بالدخول أو لا .
يجب تغيير الـ UID في الشرط (if (content.substring(1) == “Your UID” حسب ما تم كتابته سابقا في مرحلة قراءة البيانات.

if (content.substring(1) == "1A 3A 3F D5")
  {
    Serial.println("Authorized access");
    Serial.println();
    delay(3000);
  }
 
 else   {
    Serial.println("Access denied");
    delay(3000);
  }

وأخيرا، تم إنشاء نظام يتحكم بنظام الدخول من البوابة الإلكترونية حسب صلاحيات البطاقة الممنوحة للمستخدم بإستخدام تقنية الـ RFID .