Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 46

‫الباب األول‬

‫المقدمة‬

‫‪1‬‬
‫‪1.1‬المقدمة‬
‫قب ل أك ثر من نص ف ع ام ‪ ‬ض رب إعص ار كاترين ا ‪ ‬الم ّدمر جن وب ش رق الوالي ات المتح دة‬
‫األمريكية ‪ ‬خاصة والية لويزيانا والميسيسيبي و منطق ة االبام ا‪ ‬وق د قت ل اآلالف من األش خاص‬
‫اثر موجات الفيضان الهائلة التي غمرت المنطقة ألكثر من أسبوع‪ .  ‬مثل هذه الكوارث الطبيعية‬
‫تحدث دوما بالعالم ولكن يختلف تعامل الدول بنتائجه ا‪ ,‬ونظ را لك ون ‪ ‬الوالي ات المتح دة مرك ز‬
‫العلم ‪ ‬والقوة في العالم ‪,‬استغلت كل ما هو متوفر من تقني ات حديث ة لعملي ات اإلنق اذ‪ .‬ومن اب رز‬
‫األمثلة على ذلك تهيئة ‪ ‬فرق اإلنق اذ األمريكي ة على‪  ‬اس تخدام رق ائق إلكتروني ة ت زرع ب الجثث‬
‫لإلسراع بالتعرف عليها وجمع المعلومات‪ ،‬وأن الهيئ ة المس ئولة عن اإلنق اذ س تتعامل م ع ‪ ‬ه ذه‬
‫الرقائق وأجهزة قراءتها لتس اهم في أي عملي ات إنق اذ مس تقبلية‪ .‬ه ذه الرق ائق تعتم د على تقني ة‬
‫بدأت باالنتشار حديثا تسمى ‪ .RFID‬فما هي هذه التقنية وما هو مبدأ عملها واستخداماتها؟ ‪ ،‬هذا‬
‫ما سنحاول هنا ‪ ‬مناقشته وتوضيحه‬

‫هذه الرقائق المبني ة على تقني ة “نظم التع رف على الموج ات الالس لكية )‪Radio Frequency‬‬
‫‪ (Identification‬بدأ تطويرها قبل عش ر س نوات وته دف الس تبدال نظم الترم يز (‪)Barcode‬‬
‫المستخدمة في ترقيم وتصنيف البضائع وهي ترميز مطبوع على البضاعة أو على بطاقة مس تقلة‬
‫وتتم قراءتها بواسطة جهاز خاص‪ .‬تقنية ‪ RFID‬تتم يز بأنه ا تس تطيع أن تخ زن معلوم ات أك ثر‬
‫بواسطة هذه الرقائق اإللكترونية المثبتة على البضائع إضافة ‪ ‬إلى أن قراءتها تتم السلكيا‪.‬‬

‫الشكل(‪ )1.1‬مخطط الصندوقي للمشروع‪.‬‬

‫‪2‬‬
‫‪ 2.1‬مراحل تنفيذ المشروع ‪:‬‬
‫المرحلة األولي ‪ :‬التحليل ويتم ذلك بجمع المعلومات المتعلقة بالمشروع وذلك بواسطة‪-:‬‬ ‫‪‬‬
‫الكتب واألبحاث‪.‬‬ ‫‪-1‬‬
‫شبكة المعلومات العالمية‪.‬‬ ‫‪-2‬‬
‫دراسات ومشاريع سابقة‪.‬‬ ‫‪-3‬‬
‫المرحلة الثانية‪ :‬التنفيذ العملي للمشروع‪.‬‬ ‫‪‬‬
‫المرحلة الثالثة‪ :‬االختبار‪.‬‬ ‫‪‬‬
‫المرحلة الرابعة‪ :‬التوثيق‪.‬‬ ‫‪‬‬

‫‪ 3.1‬أهداف المشروع‬

‫التعرف على تقنية ‪RFID‬‬ ‫‪.1‬‬


‫التعرف عمى أنواع هذه التقنية‬ ‫‪.2‬‬
‫فوائد استخداماتها في البوابات االلكترونية‬ ‫‪.3‬‬
‫مجاالت استخدام هذه التقنية‬ ‫‪.4‬‬

‫‪ 4.1‬تنظيم المشروع‬

‫وينقسم هذه المشروع إلي خمسة فصول ‪:‬‬

‫الباب األول (المقدمة)‬

‫الباب الثاني (تقنية ‪)RFID‬‬

‫الباب الثالث (االردينو )‬

‫الباب الرابع (الجانب العملي )‬

‫الباب الخامس ( النتائج واالستنتاجات و التوصيات )‬

‫‪3‬‬
‫الباب الثاني‬

‫تقنية (‪)RFID‬‬

‫‪4‬‬
‫‪ 1.2‬ماهية تقنية (‪)RFID‬‬

‫تقني ة التع رف الرادي وي ‪ Radio Frequency Identification ‬أو م ا يع رف اختص اراً‬


‫بـ‪ RFID ‬هي تقنية للتعرف الالسلكي حيث يتم تثبيت بطاق ة إلكتروني ة تس مى ‪ RFID tag‬على‬
‫الكائن المراد التعرف عليه عن بعد‪ .‬وتحمل هذه البطاقة شريحة إلكترونية مزودة بذاكرة ومراسل‬
‫السلكي مبسط بحيث يتم تخزين معلومات محددة عن الجسم المراد التع رف علي ه في ذاك رة ه ذه‬
‫البطاق ة‪ .‬وعن دما تك ون بطاق ة التع رف ض من نط اق البث الالس لكي لق ارئ البطاق ات ‪RFID‬‬
‫‪ ،reader‬فإن بطاقة التعرف تق وم بإرس ال المعلوم ات المخزن ة فيه ا الس لكيا ً للق ارئ مم ا يمكن‬
‫القارئ من التعرف على هذا الكائن والحصول على معلومات عنه‪ .‬فعلى سبيل المثال يمكن تزويد‬
‫الطالب ببطاقات تعرف يتم تخزين رقم الطالب فيها وتكون ملصقة ببطاقة الطالب‪ ،‬وبالت الي فإن ه‬
‫يمكن أن يتم تحض ير الطالب في المحاض رات بش كل آلي من خالل وض ع قارئ ات التع رف في‬
‫الفصول الدراسية‪.‬‬

‫الشكل(‪RFID MODULE)1.2‬‬

‫بدأ استخدام تقنية التعرف الراديوي ‪  RFID‬أثناء الحرب العالمية الثانية من قبل المملك ة المتح دة‬
‫وذلك لتمييز الطائرات اإلنجليزية العائدة عن الطائرات األخرى‪ .‬تم بعد ذلك اس تخدام ه ذه التقني ة‬
‫في تطبيقات مدنية من قبل قطاعات البيع بالتجزئة والقطاعات الصناعية وقطاعات أخرى أدركت‬
‫فوائد عمليات المتابعة والتعرف اآللي‪.‬‬

‫‪5‬‬
‫‪ 2.2‬لمحة تاريخية عن تقنية (‪)RFID‬‬

‫يرجع تاريخ استخدام هذه التقنية إلى العالم ( ليون يترمن ) الذي قام باختراع أداة تجس س لص الح‬
‫االتحاد السوفيتي السابق عام ( ‪ ) 1946‬حيث يقوم بإرسال موجات الراديو المدمجة م ع األم واج‬
‫الصوتية الذي يقوم بالتقاط حجاب حاجز الموجات الضوئية ويتذبذب بفعله ا مم ا ي ؤدي إلى تغ ير‬
‫حالة قارئ الذبذبات والذي بدوره ينظم ذبذبة اإلرسال المنعكس ة ب الرغم من إن ه ذه األداة ك انت‬
‫جهاز تنصت سري سلبي وليس بطاقة تعري ف مم ا جعله ا بالمقدم ة الخ تراع بطاق ات التعري ف‬
‫بموجات الراديو ( ‪ ، )RFID‬وهناك مصادر أخ رى تش ير ب أن ه ذه التقني ة موج ودة من ذ ع ام (‬
‫‪ )1920‬لكن ال توضح أين كانت تستخدم وتشير بعض المصادر بأن بريطانيا كانت قد اس تخدمت‬
‫هذه التقنية في طائراتها عام (‪ )1939‬للتعرف على الصديق والع دو‪ ،‬وفي ع ام (‪ ) 1973‬س جلت‬
‫أول براءة اختراع في الواليات المتحدة من قب ل الع الم (م اريو ك اردولو) لتقني ة (‪ ) RFID‬وه و‬
‫جهاز استقبال وإرس ال إذاعي س لبي يحت وي على ذاك رة الجه از األول و يعم ل بواس طة إش ارة‬
‫استجواب يحتوى على جهاز إرسال واستقبال بذاكره سعتها (‪ 16‬بت) الهدف منه حساب الخسائر‬
‫وقد عرضه على سلطة ميناء نيويورك ‪ ،‬و أول من طبق هذه التقنية ه و ك ل من الع الم ( س تيفن‪،‬‬
‫روبر ت و الفري د ) في مخت بر ( ‪) alados los‬العلمي ع ام ‪1973‬م وفي ع ام )‪) 1974‬غطت‬
‫استعماالت موجات الراديو باستخدام الصوت والض وء كوس ط ناق ل في وس ائل النق ل واإلعم ال‬
‫المصرفية واألمن والطب‪.‬‬

‫‪ 3.2‬مكونات تقنية (‪)RFID‬‬

‫شريحة دقيقة (‪) chip micro‬تحتوي على المعلومات المادة التي توضع فيه‬ ‫‪.1‬‬
‫هوائي وهذا يقوم بنقل المعلومات إلى جهاز قارئ باستخدام موجات الراديو الترددية‬ ‫‪.2‬‬
‫‪-‬حافظة تحفظ كل من الشريحة والهوائي ويمكن لصق الرقائق على سطح المادة‬ ‫‪.3‬‬

‫‪6‬‬
‫‪RFID‬‬ ‫الشكل(‪ )2.2‬التركيب الداخلي ل‬

‫مبدأ عمل تقنية (‪)RFID‬‬

‫تتك ون تكنولوجي ا "‪ "RFID‬من ثالث ة أج زاء رئيس ية وهي‪ :‬البطاق ة ال تي تحت وي على جه از‬
‫اإلرسال والمعلومات‪ ،‬وجهاز القراءة و اإلرس ال‪ ،‬وب رامج الحاس وب‪   ‬وقواع د البيان ات‪ .‬تتمث ل‬
‫رقائق "‪ "RFID‬في بطاقات يمكن تثبيتها على األشياء‪ ،‬وتحتوي هذه الرقائق الصغيرة ج داً على‬
‫هوائي الستقبال الموجات وهو على شكل س لك رفي ع ملف وف داخ ل البطاق ة‪ .‬يق وم ه ذا اله وائي‬
‫باستقبال الموجات المغناطيسية الصادرة عن جهاز القراءة ويش غل ال دارة اإللكتروني ة الموج ودة‬
‫داخل البطاقة والتي بدورها تبدأ عملية البث الالسلكي نحو الق ارئ وتص ل المعلوم ات عن د نقله ا‬
‫إلى جهاز الحاسوب أو الشبكة في النهاية‪ .‬تكون ع ادة الرق ائق اإللكتروني ة الخاص ة به ذه التقني ه‬
‫على شكل بطاق ات‪  ‬يمكن لص قها أو تثبيته ا على األش ياء‪ .‬وه ذه الرق ائق الص غيرة ج دا (وال تي‬
‫تقارب حجم حبة األرز) تحتوي على هوائي الستقبال الموجات والذي يكون على شكل سلك رفيع‬
‫ملفوف في داخل البطاقة‪ ,‬يقوم الهوائي باستقبال الموجات المغناطيسية الصادرة من جهاز القراءة‬
‫ويشغل الدائرة اإللكترونية بالبطاقة التي بدورها تبدأ عملية البث الالسلكي للقارئ وتتم عملية نق ل‬
‫المعلومات بهذه الطريقة لتص ل الى جه از الحاس وب أو الش بكة ب أخر المط اف‪ .‬البطاق ة بخالف‬
‫الرقم المرمز ‪  Bar Code‬ال تحتوي فقط على رقم يرسل للقارئ ولكنها تش مل ‪ ‬ذاك رة ص غيرة‬
‫(عادة من ن وع ‪ )EEPROM‬تتس ع‪  ‬للمعلوم ات األك ثر تفص يال و تص ل ق درتها التخزيني ة إلى‬
‫‪ 256‬بايت‪ .‬من المالحظ أن هذه البطاقات ال تحتوي على مصدر للطاقة خاص بها (كالبطاري ات)‬
‫وذلك ليكون من السهل وضعها على البضائع‪ .‬ولكن كيف تعمل الدائرة اإللكترونية؟‬

‫تعمل هذه التقني ة على مب دأ دوائ ر ال رنين (‪ )resonance circuit‬وال تي تق وم باس تخدام طاق ة‬
‫الموجات الكهرومغناطيس ية الص ادرة من جه از الق راءة ‪.‬تتك ون ال دائرة بش كل مبس ط من مل ف‬
‫ومكثّف (‪ )Coil & capacitor‬تصل لمرحلة الرنين عند تواف ق ت ردد الموج ات الص ادرة من‬
‫‪7‬‬
‫القارئ وتردد ال دائرة‪ ,‬فتس تخدم ه ذه الطاق ة إلرس ال المعلوم ات للق ارئ‪ .‬الق ارئ يق وم بتحوي ل‬
‫اإلش ارات الالس لكية الواص لة من البطاق ة إلى بيان ات رقمي ة قابل ة للتعام ل بالحاس وب حيث تتم‬
‫معالجتها بالبرامج‪ .‬وكما تم ذكره س ابقا ً ف إن بطاق ات ‪ RFID‬تحت وي على ذاك رة ع ادة من ن وع‬
‫‪ ))EEPROM‬بخالف ال ترقيم العم ودي "‪ "Barcode‬ال ذي يحت وي فق ط على رقم يرس ل‬
‫للقارئ‪.‬كما أن هذه الرقاقة ال تحتوي على مصدر طاقة خاص بها (بطاري ة مثالً) وه و م ا يس هل‬
‫وضعها على البضائع‪ .‬إذ تقوم باس تخدام طاق ة الموج ات الكهرومغناطيس ية الص ادرة عن جه از‬
‫القراءة‪ .‬ثم يقوم القارئ بدوره بتحويل اإلشارات الالسلكية الواردة من البطاق ة إلى بيان ات رقمي ة‬
‫قابلة للتعامل بالحاسوب حيث تتم معالجتها بالبرامج‪.‬‬

‫‪5.2‬أنواع رقاقات (‪)RFID‬‬

‫وتصنف إلى ثالثة أنواع رئيسية اعتمادا علي مصدر الطاقة و هي ‪:‬‬

‫الرقاقات النشطة‬ ‫‪‬‬


‫تعتمد هذه الرقاقات على بطارية‪ ،‬مما يمكنه ا من التواص ل على بع د ح والي ‪ 100‬م تر‪.‬‬
‫كما أن بعضها مستقل تماما ً عن حقل القارئ إذ أنها متكاملة مع وحدة إرسال خاص ة مم ا‬
‫يجعلها قادرة على التواصل لمسافة عدة كيلومترات باعتماد مبدأ الرادارات‪.‬‬

‫الرقاقات الخاملة‬ ‫‪‬‬


‫ال تعتم د ه ذه الرقاق ات على بطاري ة‪ ،‬وه و م ا يح د من ق درة اإلرس ال الخاص ة به ذه‬
‫الرقاقات إلى عدة أمتار فقط (باستخدام الترددات العالية جداً ‪MHz (930-860‬‬

‫الرقاقات شبه الخاملة‬ ‫‪‬‬


‫مشابهة للرقاقات النشطة باعتمادها على مصدر طاقة خاص بها (ولكن ه ذه الطاق ة غ ير‬
‫مستعملة لتراسل المعلومات)‪ ،‬إذ أن البطارية مثبتة داخل الشريحة ونتيج ة ل ذلك يقتص ر‬
‫الهوائي على إرسال واستقبال المعلومات مما ينعكس إيجابيا على السرعة‪.‬‬

‫‪ 6.2‬مجاالت استخدام‪ M‬رقاقات "‪: "RFID‬‬


‫مجال متابعة المجرورات والحاويات بالموانئ‪.‬‬ ‫‪‬‬
‫مجال النقل العمومي (فرنسا‪ ،‬بلجيكا‪ ،‬كندا‪.)... ،‬‬ ‫‪‬‬

‫‪8‬‬
‫مجال متابعة األمتعة بالمطارات‪.‬‬ ‫‪‬‬
‫المكتبات ‪ :‬لتحديد أماكن الكتب وتم بالفعل تطبيقها في الكثير من المكتبات‪.‬‬ ‫‪‬‬
‫بطاقات الهوية ‪ :‬لمعرفة مكان تواجد صاحب الهوية المعنية‪.‬‬ ‫‪‬‬
‫لوحات السيارات ‪ :‬لتحديد أماكن تواجدها وتحركاتها‪.‬‬ ‫‪‬‬
‫التسوق ‪ :‬عند الخروج من المتجر‪ ،‬يتم على مس توى البواب ة اإللكتروني ة ق راءة البض ائع‬ ‫‪‬‬
‫واحتساب السعر ثم االستخالص من الحساب البنكي بصفة آلية‪.‬‬
‫التعرف على الحج اج ‪ :‬يمكن اعتب ار الرقاق ة بمثاب ة رخص ة حج ويمكن لق ارئ الرقاق ة‬ ‫‪‬‬
‫التأك د من الرخص ة بش كل آلي (تطبيق ات أمني ة‪ ،‬تطبيق ات إحص ائية‪ ،‬تطبيق ات طبي ة‪،‬‬
‫تطبيقات مالية‪.‬‬
‫السيارات ‪ :‬مثال قامت شركة تويوت ا بوض ع ه ذه الش رائح في الس يارات‪ ،‬لتتع رف على‬ ‫‪‬‬
‫السائق وتعمل تلقائيا ً بمجرد أن يقترب من السيارة‪.‬‬
‫مراقب ة البض ائع وبيعه ا ‪ :‬يتم تث بيت البطاق ات ب المنتج في داخ ل المص نع خالل عملي ة‬ ‫‪‬‬
‫التص نيع أو التعبئ ة‪ ،‬وعن د خ روج المنتج من المص نع تتم عملي ة الق راءة أثن اء مغ ادرة‬
‫الشاحنة وتقرأ مرة أخرى عندما تصل للب ائع وتس جل أنه ا خ رجت من المص نع ودخلت‬
‫للمتجر باإلضافة إلى زمن الشحن وعدد القطع‪ .‬وحتى عندما يش تري الزب ون يتم تس جيل‬
‫خروج القطعة من المتجر وكل ذلك يتم بصفة آلية حيث يثبت القارئ عند أب واب المتج ر‬
‫والمصنع‪.‬‬
‫ج وازات الس فر ‪ :‬ب دأت مح اوالت ع دة في دول الع الم تغي ير فك رة ج وازات الس فر‬ ‫‪‬‬
‫وتأشيرات الدخول التقليدية لتزيد من الرقاب ة واألم ان والتحق ق من األش خاص‪ ،‬إذ يمكن‬
‫اس تخدام تقني ة "‪ "RFID‬وتثبيته ا ب الجواز أو التأش يرة وتخ زين معلوم ات المس افر‬
‫وصورته وعند المراقبة تتم قراءة المعلومات وإظهار الصورة أمام المراقب‪.‬‬
‫‪ 7.2‬معايير ومقاييس (‪)RFID‬‬

‫‪The‬‬ ‫‪International‬‬ ‫‪Organization‬‬ ‫وض عت الهيئ ة العالمي ة للمق اييس (‪for‬‬


‫‪ )ISO( )Standardization‬أسس ومقاييس تقنية ‪  RFID‬وه ذه قائم ة ببعض المق اييس ال تي‬
‫أقرتها الهيئة والتي تستعمل إلدارة المعلومات على البطاقات واألنظمة الالسلكية لألجهزة‪:‬‬

‫‪   ISO 11784‬كيفية توزيع المعلومات على البطاقة‪.‬‬ ‫‪‬‬

‫‪ ISO 11785‬طريقة التواصل عبر األثير‪.‬‬ ‫‪‬‬

‫‪9‬‬
.‫ طريقة التواصل عبر األثير وتنظيم عملية الدفع بالبطاقات الذكية‬ISO 14443 

‫ لفحص البطاق ات والق ارئ والتحق ق من توافقه ا م ع‬ISO 18046 ‫ و‬ISO 18047 

.‫المعايير‬
.‫ طريقة التواصل عبر األثير وتقسم لعدة معايير باالعتماد على‬ISO 18000 

:‫مثل‬ ‫الترددات‬

 18000—1: Generic parameters for air interfaces for globally


accepted frequencies
 18000—2: Air interface below 135 kHz
 18000—3: Air interface for 13.56 MHz
 18000—4: Air interface for 2.45 GHz
 18000—5: Air interface for 5.8 GHz
 18000—6: Air interface for 860 MHz to 930 MHz
 18000—7: Air interface at 433.92 MHz

10
‫الباب الثالث‬

‫لوحة االردينو‬
‫)‪RFID Module (RC522 RFID Module 13.56MHz‬‬

‫‪ 1.3‬مقدمة‪:‬‬

‫‪11‬‬
‫هي لوح ة الكتروني ة ومفتوح ة المص در ‪ Open Hard Ware‬لتط وير الكث ير من األفك ار‬
‫والمشاريع المتعلقة بالتحكم اآللي بصورة سهلة وبسيطة عن طريق استخدام لغ ة برمج ة مفتوح ة‬
‫المص در ويتم برمج ة المتحكم ة الموج ودة على اللوح ة باس تخدام برن امج خ اص يس مى ‪،،‬‬
‫‪,, Arduino C‬‬

‫الشكل (‪ )1.3‬لوحة أرودينو مفتوحة المصدر‪.‬‬

‫معنى أن أردينو مفتوح المصدر يعني بأن ه يمكن ك االطالع والتع ديل على التص ميمات الهندس ية‬
‫والش فرات المص درية ‪ source Codes‬لك ل من اللوح ات أردين و المختلف ة ‪Arduino LDE‬‬
‫‪ Arduino Boards‬بما يتناسب معك ويمكنك أيضا تطوير لغة برمجة ‪ C Arduino‬بحري ة‬
‫تامة واالطالع على الشفرات المصدرية الخاصة بها كما ان ه ده المم يزات والبرمجي ات مجاني ة‬
‫تماما على غرار بعض البيئات التطويرية مثل ‪ micro C‬والتي تتطلب شراء رخصة مكلفة ‪.‬‬

‫‪ -‬يم يز لوح ات األردين و عن ب اقي اللوح ات التطويري ة للمتحكم ات الدقيق ة األخ رى ه و م دى‬
‫السهولة التعامل معها وبساطة اللغة البرمجية والتي عمل فريق من إيطاليا على تطويرها مند عام‬
‫‪ 2005‬حتى اآلن ‪ ،‬ولقد تم اشتقاق لغة أردينو البرمجية من لغة ‪ processing‬ولغة ‪ C‬والتي تع د‬
‫أساس لغات البرمجة الحديثة ‪.‬‬

‫‪ -‬لقد تم تطويره ليناسب جميع المستويات ابتداء من الهواة وانته اء بالمش اريع المتط ورة وال دليل‬
‫أنه هناك مميزات جبارة تجعل أردينو على قمة المتحكمات الدقيقة وهي إمكانية دمجه في مشاريع‬
‫يتم برمجتها بلغات هندسية متطورة مثل ‪ MATLAB‬ولغة ‪ Java‬حيث تجد مكتبات برمجية في‬
‫إحدى اللغتين ‪ MATLAB/Java‬خاصة بالتعامل مع أردينو ‪.‬‬

‫‪ 2.3‬أنواع اللوحات أردنيو ‪Arduino Boards‬‬

‫‪12‬‬
‫الشكل (‪ )2.3‬أنواع لوحات األردينو‪.‬‬

‫تخلف اللوحات عن بعضها البعض من ناحية عدد الخ ارج والم داخل وال تي تح دد ع دد األجه زة‬
‫ال تي يمكن التحكم به ا وع دد الحساس ات ‪ Sensors‬ال تي يمكن دمجه ا م ع اللوح ة وك ذلك ن وع‬
‫المتحكمة الدقيقة وسرعة المعالج الموجود بداخلها ومكانية تبدلها ‪.‬‬

‫تعد األردينو من أك ثر اللوح ات اإللكتروني ة المخصص ة للتعليم انتش اراً وش يوعا ً نظ راً للس هولة‬
‫البالغة التي توفرها س واء من الناحي ة البرمجي ة أو من ناحي ة المع دات ‪ ،‬وح تى من ناحي ة ت وفر‬
‫الدوائر الكهربائية والبرامج والمكتبات المتعددة في شتى المواضيع ‪ ،‬ك ان ك ل ترك يزي في وقت‬
‫سابق منصب على ش رح األردين و ع بر دمجه ا بقط ع مختلف ة ‪ ،‬وك انت اغلب األمثل ة باس تخدام‬
‫األردينو اونو ‪ Uno‬أو اللوحات ال تي تس تخدم المتحكم األص غر ‪ At mega 328‬فه و األك ثر‬
‫انتشاراً واألخص سعراً ‪.‬‬

‫الشكل (‪ )1.2.3‬لوحة أوردينو اونو‬

‫لكن أطلقت األردين و في ع ام ‪ 2013‬لوح ة تطويري ة مخصص ة ألغ راض التعليم ك انت مختلف ة‬
‫تماما ً عن ما عاهدناه سابقا ً من إصدارات األردينو ‪ ،‬إذ كانت هذه أول م رة تطل ق األردين و لوح ة‬
‫تطويرية بمعالج ‪ ARM Cortex‬الذي ينقل المستخدمين لألردينو لمستوى جديد إمكانياته نظ راً‬
‫‪13‬‬
‫لإلمكانيات الكبيرة التي يتمتع بها المعالج الجديد ‪ . DUE‬سوف نخت ار دائ رة ‪Arduino DUE‬‬
‫لتقوم بعمل المشروع ‪.‬‬

‫‪3.3‬نظره عامه على دائرة ‪: Arduino Uno‬‬

‫دائرة االردينو اونو هي دائ رة الكتروني ة ص غيره تس تخدم فى برمج ه متحكم ة من ش ركه اتم ل‬
‫‪ ATmega 328‬وتوفر هذه الدائرة منافذ لتوصيل المكونات االلكتروني ة الى المتحكم ة مباش رة‬
‫عن طريق ‪( 14‬مدخل ‪ /‬مخرج) من الن وع ال رقمي ‪ Digital in out‬من ه ذه ال ‪ 14‬يوج د ‪6‬‬
‫يمكن استخدامها كمخارج ‪ PWM‬أو م ا يع رف بالتع ديل ال رقمي المعتم د على ع رض النبض ة‬
‫‪ Pulse –Width) (modulation‬وسوف نتح دث عن ه ذه الخاص ية فى فص ل كام ل يس مى‬
‫ال دخل والخ رج التم اثلي ‪ .Analog Inputs / Outputs‬أيض ا تح وي ال دائرة على مه تز‬
‫كريستال ‪ crystal‬بتردد ‪ MHz16‬باإلضافة الى مدخل ‪ USB‬من أجل التواصل م ع الحاس ب ‪،‬‬
‫وهناك مدخل التواصل مع الحاسب ‪ ،‬وهناك مدخل للطاقة منفصل ‪ ،‬باإلضافة إلى ‪ LCSP‬والذي‬
‫يعتبر طريقه إضافة لبرمجة المتحكمة وهي ال تزال موصلة بالبورد (بخالف ال ‪ )USB‬ويمكن ك‬
‫آن تعتبر بورده اردوينو هذه بورده تط وير وبرمج ه مص غره ومتهيئ ة لالس تخدام المباش ر فهي‬
‫تقريبا تحوي كل ما تحتاج لكي تعمل عليها سواء عن طريق منفذ ال ‪ USB‬أو عن طريق مصدر‬
‫خارجي للطاقة مثل البطارية ‪.‬‬

‫‪4.3‬المعالج الدقيق والذاكرة ‪Microprocessor‬‬

‫المتحكم ات الدقيق ة أش بهه بوح دة حاس ب ألي ص غيره الحجم وتح وي المتحكم ة الدقيق ة ‪328‬‬
‫‪ ATmega‬على معالج بسرعة ‪ 16‬ميجا هرتز و ذاكرة كليه تساوى ‪. kilobyte 32‬‬

‫الشكل (‪ )4.3‬المعالج الدقيق في لوحة األردينو ‪.Arduino uno‬‬

‫‪14‬‬
‫‪ : Boot loader‬السوفت وير المسئول عن كيفيه فهم الدائرة للغة ‪.Arduino C‬‬

‫‪ : SRAM‬تعتبر الذاكرة المستخدمة فى تسجيل المتغيرات بصوره مؤقتة ‪.‬‬

‫‪ : Flash Disk‬مساحه تخزينه تستخدم فى تخزين البرنامج الذي سنكتبه لتشغيل المتحكمة ‪ ،‬فى‬
‫الوهلة األولى قد يبدو هذا الرقم صغير جدا لكنه في الحقيقة ك افي لكتاب ه الكث ير من األوام ر كم ا‬
‫سنرى في األمثلة القادمة ‪.‬‬

‫‪ : EEPROM‬ال ذاكرة المس ئولة عن تس جيل بعض المتغ يرات بص وره دائم ة داخ ل المتحكم ة‬
‫وتظل محتفظة بقيمتها حتى بعد فصل الكهرب اء ويمكنن ا ان نعتبره ا مث ل الس واقة ‪Hard Disk‬‬
‫في الكمبيوتر الشخصي ‪.‬‬

‫‪5.3‬إمداد الدائرة بالطاقة ‪: Power up‬‬

‫يمكنك إم داد ال دائرة بالطاق ة إم ا من خالل منف ذ الــ‪ USB‬فق ط أو عن طري ق اس تخدام مص در‬
‫خارجي للكهرباء كمحول ‪ DC/AC‬ليمد الدائرة بالجهد الالزم للعمل أو حتى عن طري ق بطاري ة‬
‫‪ 9‬فولت او ‪ 4‬بطاريات ‪ 1.5‬فولت حتى يتم توصيل طرفي البطارية إلي المدخل األرضي ‪GND‬‬
‫والـ ‪ Vin‬في الدائرة ‪.‬‬

‫الشكل (‪ )5.3‬إمداد الدائرة بالطاقة ‪.Power up‬‬

‫تستطيع الدائرة العمل على جه د ي تراوح بين ‪ 20- 6‬ف ولت لكن يجب االنتب اه حيث ان ه إذا قمن ا‬
‫بتأمين جهد اقل من ‪ 7‬فولت فان المخرج المتحكم ‪ Pin 5v‬ق د ال يس تطيع ت أمين جه د يبل غ الـ ‪5‬‬
‫فولت المطلوب وقد يؤدي إلي عدم استقرار الدائرة ‪ ،‬إم ا إذا قمن ا بتزوي د ال دائرة بجه د اعلي من‬
‫‪ 12‬فولت انه قد يؤثر على عنصر تنظيم الجهد ‪ voltage regulator‬ويؤدي إلي ارتف اع درج ة‬

‫‪15‬‬
‫حرارته مما يؤدي إلي تلف البودرة ‪ ،‬لذا فان مجال الجه د ال ذي يفض ل اس تخدامه ه و من ‪ 7‬إلي‬
‫‪ 12‬فولت ‪.‬‬

‫‪ 6.3‬مخارج ومداخل الطاقة الكهربائية للمتحكمة ‪Power Inputs /Outputs :‬‬

‫‪ : Vin‬جه د ال داخل عن دما نس تخدم مص در جه د خ ارجي ‪ ،‬يمكنن ا ت أملن الجه د من خالل ه ذا‬
‫المدخل ‪ ،‬إذا كنا نقوم بتأمين الطاقة للدائرة من خالل المح ول يمكنن ا الوص ول ل ه من خالل ه ذا‬
‫المدخل أيضا ‪.‬‬

‫‪ : V5‬جهد منظم يستخدم لتأمين الطاقة للعناصر المستخدمة على الدائرة وسوف نستخدمه لتوف ير‬
‫الطاقة للقطاع االلكتروني التي سنضيفها ‪ ،‬وق د ي أتي ه ذا الجه د من خالل ‪ Vin‬ع بر منظم جه د‬
‫داخلي أو تأمينه من خالل منفذ الـ ‪ USB‬أو إلي مصدر جهد منظم بقيمة ‪ 5‬فولت ‪.‬‬

‫‪ :V3.3‬مصدر للجهد بقيمة ‪ 3.3‬فولت مؤمن من قبل منظم الجه د ال داخلي ل دائرة وأقص ي قيم ة‬
‫لسحب التيار من خالل هذا الخط هو ‪ 50‬ميلي أمبير ‪.‬‬

‫‪ : GND‬الخط األرضي ‪.‬‬

‫الشكل (‪ )6.3‬مخارج ومداخل الطاقة الكهربائية للمتحكمة ‪.Power Inputs /Outputs :‬‬

‫‪ 7.3‬لوحة األرقام (‪.)KEYPAD‬‬

‫‪16‬‬
‫تعتبر لوحة األرقام من أهم وسائل اإلدخ‪MM‬ال المس‪MM‬تخدمة بك‪MM‬ثرة في مش‪MM‬اريع المتحكم‪MM‬ات الدقيق‪MM‬ة‬
‫والتي ستجدها حولك في العديد من األجهزة االلكترونية مثل اله‪MM‬اتف الم‪MM‬نزلي و لوح‪MM‬ة المف‪MM‬اتيح‬
‫ولوحة التحكم في المصاعد ‪ .‬وتختلف أشكال لوحة األرقام تبعا لحجمها وعدد األرقام المتاح‪MM‬ة ‪,‬‬
‫في اللوحات ستجد رم‪MM‬وز أض‪MM‬افية مث‪MM‬ل عالم‪MM‬ة النجم‪MM‬ة (*) وعالم‪MM‬ة الش‪MM‬باك (‪ )#‬أو ح‪MM‬تى بعض‬
‫األحرف االنجليزية مثل ‪ A,D,C‬وتعتبر لوحة األرقام بحجم (‪ )3x4‬أو (‪ )4x4‬هي أشهر لوحات‬
‫كتابة‪ .‬كما تتوفر بعض اللوحات المرنة و القابلة للطي بسهولة والتي تصنع من ن‪MM‬وع خ‪MM‬اص من‬
‫بالستك المرن وتتميز بالنحافة‪.‬‬

‫الشكل (‪)7.3‬لوحة األرقام المرنة‬

‫‪RFID Module (RC522 RFID Module 13.56MHz) 7.3‬‬

‫تتكون هذه التقنية ببساطة من ثالثة أجزاء رئيسية هي ‪:‬‬


‫البطاقة التي تحتوي على جهاز اإلرسال والمعلومات ‪.‬‬ ‫‪‬‬
‫جهاز القراءة واإلرسال ‪.‬‬ ‫‪‬‬
‫برامج الحاسوب وقواعد البيانات‪.‬‬ ‫‪‬‬

‫‪17‬‬
‫الشكل (‪ )8.3‬رقاقة ‪RFID‬‬

‫‪18‬‬
‫الباب الرابع‬

‫) دراسة حالة (‬

‫‪ 1.4‬تصميم نظام ذكي للبوابات يتميز بالمواصفات التالية‪:‬‬


‫تستخدم تقني ال ‪ RFID‬للتعرف على األشخاص المسموح لهم بالدخول‪.‬‬ ‫‪‬‬
‫يحسب عدد ساعات العمل لكل شخص عند الخروج‪.‬‬ ‫‪‬‬
‫يمكن وصله مع أنظمة الحماية‪ ,‬ليفتح البوابة مباشرة في حاالت الطوارئ‪.‬‬ ‫‪‬‬
‫يمكن تغير وضع الجهاز ليفتح البوابة تلقائيا عن اقتراب شخص منه‪.‬‬ ‫‪‬‬

‫‪ 2.4‬متطلبات المشروع‬

‫‪19‬‬
‫متحكم اردوينو )يفضل نوع ميجا ( ‪.‬‬ ‫‪‬‬

‫لوحة األرقام (‪.)KEYPAD‬‬ ‫‪‬‬

‫‪ .‬قارئ بطاقات ‪)RFID 13.56MHz( .‬‬ ‫‪‬‬

‫‪20‬‬
‫سيرفو موتور(يمثل بوابة)‪.‬‬ ‫‪‬‬

‫‪21‬‬
‫مقاومات‪.‬‬ ‫‪‬‬

‫(‪.)LEDs‬‬ ‫‪‬‬

‫طنان كهربائي (‪.)buzzer‬‬ ‫‪‬‬

‫و أسالك توصيل‪.‬‬ ‫لوح‪MM‬ة تج‪MM‬ارب‬ ‫‪‬‬

‫للمشروع‬ ‫‪ 3.4‬تجهيز الوصالت‬


‫‪RFID‬‬ ‫‪ -1‬توصيل رقاقة‬

‫استخدمنا في هذا المشروع قارئ من نوع ‪ RFID – RC522‬ويعتمد هذا الموديول علي‬
‫بروتوكول ‪ SPI‬لتواصل مع لوحة االردينو‪.‬‬
‫لذلك نصل هذا الموديول مع المداخل الخاصة بال ‪ SPI‬في االردينو كالتالي‪:‬‬

‫‪22‬‬
‫الشكل (‪)1-4‬‬

‫‪ -2‬توصيل محرك سيرفو‬

‫الشكل(‪ )6.4‬يوضح طريقة توصيل محرك سيرفو مع لوحة االردين و وباس تخدام الك ود الخ اص‬
‫بالسيرفو و تحميل ه في لوح ة االردين و يب دءا المح رك ب دوران‪ .‬في ه ذا المش روع تم تخص يص‬
‫المنفذ رقم (‪ )1‬الموجود في لوح ة االردين و وعن طري ق الك ود المحم ل في االردين و يتم دوران‬
‫السيرفو كما ينبغي‪.‬‬

‫الشكل (‪)2-4‬‬
‫‪ -3‬توصيل لوحة األرقام‬
‫نقم بتوصيل مخارج االردين و كم ا في الش كل (‪ )3-4‬ب دئا من المخ رج ‪ 2‬ح تى المخ رج ‪8‬‬
‫بلوحة األرقام مع مالحظة أن يكون الرمز (‪ )#‬هو الرمز المتواجد أمام الرقم ‪ 2‬في لوح ة‬
‫االردينو‬

‫‪23‬‬
‫الشكل (‪)3-4‬‬

‫‪ 4.4‬بيئة‪ M‬تطوير اردوينو ‪Arduino‬‬

‫تعتبر بيئة التطوير ‪ Arduino IDE‬األداة المستخدمة في كتابه االكواد البرمجية بلغه‬
‫‪ Arduino C‬وتحويلها بعد ذلك إلى صيغه تنفيذيه يمكن وضعها على المتحكمة الدقيقة الموجودة‬
‫على البورد ‪.‬‬
‫تتم يز بيئ ة تط وير اردين و بالبس اطة والس هولة في التعام ل فهي تك اد تخل و من اى تعقي دات في‬
‫المظه ر الع ام وتحت وى فق ط على م ا يحتاج ه الم برمج ليب دأ تط وير ب رامج بلغ ه اردوين و س ى‬
‫‪ Arduino C‬كما أنها تستخدم فى نفس الوقت لرفع البرنامج مباشره إلى المتحكمة الدقيقة وبذلك‬
‫لن تحتاج الى برنامج أخر مخصص لرفع الصيغة التنفيذي ة للب ورده ‪ )(Setup:.‬وظيف ة تش غيل‬
‫مرة واحدة في بداية البرنامج ال ذي يمكن تهيئ ة اإلع دادات‪ )(Loop: .‬وظيفته ا تس مى التك رار‬
‫حتى يتم إيقاف تشغيل المتحكم‪.‬‬

‫‪24‬‬
‫الشكل(‪ )8.4‬اختيار لوحة أردينو من ‪IDE‬‬

‫ثم نده ب الى ش ريط‬ ‫تمت كتابة كود المشروع في المساحة المتوفرة في صفحة األردينو ‪IDE‬‬
‫المهام السريع ونضغط على أيقونة اختب ار الك ود ‪ ,‬بع د التأك د من ص حة الك ود نق وم ب النقر ع ل‬
‫أيقونة التحميل‬

‫‪ 5.4 ‬المشروع النهائي‬
‫الشكل (‪ )12.4‬يبين تجميع عناصر المشروع بالكامل ‪ ,‬بعد اختبار كل قطعة على حده ‪.‬‬

‫‪25‬‬
26
27
‫الباب الخامس‬
‫الخالصة‬

‫‪28‬‬
‫الخالصة‬

‫يهدف هذا المشروع إلى استخدام تقنية‪ RFID‬وربطها بلوحة اردوينو أونو (‪.)R3‬‬ ‫‪‬‬
‫لقد قمنا بتنفيذ هذا المشروع بنجاح وقد تم الحصول على النتائج حسب المطلوب‪. .‬‬ ‫‪‬‬
‫استخدام االردوينو في المشروع يوفر المرونة وفقا للمتطلبات‪.‬‬ ‫‪‬‬
‫يمكن استخدام فكرة المشروع في عدة أنظم ة ق د ت رغب في اس تخدامها مث ل في س يارة‪،‬‬ ‫‪‬‬
‫دراجة أو أي شيء آخر‪.‬‬

‫‪29‬‬
‫الملحق‬

‫‪30‬‬
‫الكود المحمل بلوحة االردينو‬ 

#include <Keypad.h> // This sketch uses the Keypad.h library

#include <SPI.h> // This sketch uses the SPI.h library

#include <MFRC522.h> // This sketch uses the MFRC522.h library

#define SS_PIN 10 // Define SS_PIN of the RC522 RFID Reader to digital


pin 10 of the Arduino

#define RST_PIN 9 // Define RST_PIN of the RC522 RFID Reader to


digital pin 9 of the Arduino

MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.

int RedLed = A3; // Red LED output is analog pin A3

int GreenLed = A4; // Green LED output is analog pin A4

int Buzzer = A5; // Buzzer output is analog pin A5

unsigned long Timer; // Variable for the Timer

const byte ROWS = 4; // Four rows

const byte COLS = 3; // Three columns

char Keys[ROWS][COLS] = { // Define the symbols on the buttons of the


keypads

{'1','2','3',},

{'4','5','6',},

{'7','8','9',},

{'*','0','#',}

};

31
byte rowPins[ROWS] = {5, 4, 3, 2}; // Connect to the row pinouts of the keypad

byte colPins[COLS] = {8, 7, 6}; // Connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(Keys), rowPins, colPins, ROWS, COLS); //


Initialize an instance of class NewKeypad

int RightCard; // Variable for a known Mifare Card

int RightPinCode; // Variable for valid key input in combination with a


known Mifare Card

int WrongPinCode; // Variable for a invalid key input in combination with


a known Mifare Card

int PinCodeCounter; // Variable Counter for counting the number of


pincode inputs on the keypad

int Code1Correct; // Variable for the first correct digit (Code) input on the
keypad

int Code2Correct; // Variable for the second correct digit (Code) input on
the keypad

int Code3Correct; // Variable for the third correct digit (Code) input on the
keypad

int Code4Correct; // Variable for the fourth correct digit (Code) input on
the keypad

int Code5Correct; // Variable for the fifth correct digit (Code) input on the
keypad

int Code6Correct; // Variable for the sixth correct digit (Code) input on the
keypad

int Reset; // Reset for the loop

int MifareCard1; // We need this specific variable to determine the


valid PinCode in combination with the UID nummer of the Mifare Card

const int Code1MifareCard1 = '6'; // Determine here the first digit of your 6
digit PIN

32
const int Code2MifareCard1 = '6'; // Determine here the second digit of your
6 digit PIN

const int Code3MifareCard1 = '6'; // Determine here the third digit of your 6
digit PIN

const int Code4MifareCard1 = '2'; // Determine here the fourth digit of your 6
digit PIN

const int Code5MifareCard1 = '2'; // Determine here the fifth digit of your 6
digit PIN

const int Code6MifareCard1 = '2'; // Determine here the sixth digit of your 6
digit PIN

int MifareCard2; // We need this specific variable to determine the


valid PinCode in combination with the UID nummer of the Mifare Card

const int Code1MifareCard2 = '1'; // Determine here the first digit of your 6
digit PIN

const int Code2MifareCard2 = '1'; // Determine here the second digit of your
6 digit PIN

const int Code3MifareCard2 = '1'; // Determine here the third digit of your 6
digit PIN

const int Code4MifareCard2 = '3'; // Determine here the fourth digit of your 6
digit PIN

const int Code5MifareCard2 = '3'; // Determine here the fifth digit of your 6
digit PIN

const int Code6MifareCard2 = '3'; // Determine here the sixth digit of your 6
digit PIN

void setup()

33
{

Serial.begin(9600); // Initialize serial communications with


the PC

SPI.begin(); // Initialize the SPI bus

mfrc522.PCD_Init(); // Initialize the MFRC522

pinMode (RedLed, OUTPUT); // Define RedLed as OUTPUT

pinMode (GreenLed, OUTPUT); // Define GreenLed as OUTPUT

pinMode (Buzzer, OUTPUT); // Define Buzzer as OUTPUT

void loop() {

//----------------------------------------------Code for the reset function of the


loop--------------------------------------------------------------------------------------------------
------

if (Reset == 1) // If Reset has value 1 (HIGH) all variables


will be reset to 0 and the RC522 RFID reader will be waiting for a new Mifare Card.

RightCard = 0;

MifareCard1 = 0;

MifareCard2 = 0;

RightPinCode = 0;

WrongPinCode = 0;

Code1Correct = 0;

Code2Correct = 0;

Code3Correct = 0;
34
Code4Correct = 0;

Code5Correct = 0;

Code6Correct = 0;

PinCodeCounter = 0;

delay (50);

Reset = 0;

//----------------------------------------------Code for the control for a valid pincode within


the timelimit of 7 seconds after presenting/offering a valid Mifare Card
---------------------------

if (millis()- Timer > 7000 && RightCard == 1) // If the Timer will be larger as
7 seconds and a valid Mifare Card is offered, reset value will be high.

{ // This means that you have after presenting a


valid card, 7 seconds to enter a valid code or the loop resets.

Reset = 1;

Serial.println("CardAccesOff");

//----------------------------------------------Reading the presented/offered Mifare Card at


the MFRC522
-----------------------------------------------------------------------------------------

35
if (mfrc522.PICC_IsNewCardPresent() &&

mfrc522.PICC_ReadCardSerial())

//----------------------------------------------Code for detect the first Mifare Card in the


Database. This is a UID number with 4 pairs of digits. Example: 69 7C 01
9C------------------------------------

if

(mfrc522.uid.uidByte[0] == 0x91 && // Fill in the first digits of the


UID number of your Mifare card

mfrc522.uid.uidByte[1] == 0x7C && // Fill in the seconds digits of the


UID number of your Mifare card

mfrc522.uid.uidByte[2] == 0x01 && // Fill in the third digits of the


UID number of your Mifare card

mfrc522.uid.uidByte[3] == 0x9C) // Fill in the fourth digits of the UID


number of your Mifare card

RightCard = 1; // The offered Mifare Card is known in the


database, set variable "RightCard" to 1

MifareCard1 = 1; // This Mifare Card is known as Mifare


Card 2 in the Database, so set variable MifareCard2 to value 1.

digitalWrite (Buzzer, HIGH); // Make a beep for the accepted


Mifare Card

delay (150); //

digitalWrite (Buzzer, LOW); //

PinCodeCounter = 0; // Reset the PinCodeCounter to 0

36
Timer = millis(); // Reset the Timer. The 7 seconds limit is
running now for a valid PinCode

Serial.println("CardAccesOn"); // Print the text "CardAccesOn" to the


serial monitor

delay (200); // Wait 200 milliseconds

//-----------------------------------------------Code for detect the second Mifare Card in the


Database. This is a UID number with 4 pairs of digits. Example: EB 70 C0
BC----------------------------------------------

if

(mfrc522.uid.uidByte[0] == 0x91 && // Fill in the first digits of the


UID number of your Mifare card

mfrc522.uid.uidByte[1] == 0x70 && // Fill in the seconds digits of the


UID number of your Mifare card

mfrc522.uid.uidByte[2] == 0xC0 && // Fill in the third digits of the


UID number of your Mifare card

mfrc522.uid.uidByte[3] == 0xBC) // Fill in the fourth digits of the


UID number of your Mifare card

RightCard = 1; // If the offered Mifare Card is known in


the database, set variable "RightCard" to 1

MifareCard2 = 1;

digitalWrite (Buzzer, HIGH); // Make a beep for the accepted


Mifare Card

delay (150); //

digitalWrite (Buzzer, LOW); //

PinCodeCounter = 0; // Reset the PinCodeCounter to 0

37
Timer = millis(); // Reset the Timer. The 7 seconds limit is
running now for a valid PinCode

Serial.println("CardAccesOn"); // Print the text "CardAccesOn" to


the serial monitor

delay (200); // Wait 200 milliseconds

//-----------------------------------------------Code for accepting a valid MifareCard +


valid
PinCode---------------------------------------------------------------------------------------------
----

if (Code6Correct == 1 && RightCard == 1) // If the PinCode is the


correct and you did enter this within 7 seconds

RightPinCode = 1; // Variable RightPinCode will be set to 1

digitalWrite (GreenLed, HIGH); // Make a nice beep for the correct


Pincode and set the Green LED high for 1 second

delay (150); //

digitalWrite (Buzzer, HIGH); //

delay (150); //

digitalWrite (Buzzer, LOW); //

delay (50); //

digitalWrite (Buzzer, HIGH); //

delay (150); //

digitalWrite (Buzzer, LOW); //

38
delay (500); //

digitalWrite (GreenLed, LOW); //

Serial.println("Correct PinCode"); // Print the text "Correct PinCode"


to the serial monitor

Reset = 1; // Reset the loop

//-----------------------------------------------Code for refusing a valid MifareCard +


invalid
PinCode---------------------------------------------------------------------------------------------
---

f ((Code6Correct == 0) && (PinCodeCounter >= 6) && (RightCard == 1)) // If


you offered a valid Mifare Card and the Pincode is not correct and you already
entered 6 digitkeys

WrongPinCode = 1; // Variable WrongPinCode


will be set to 1

Serial.println("WrongCode"); // Print the text


"WrongKey" to the serial monitor

Reset = 1; // Reset the loop

//-----------------------------------------------Code for refusing a Wrong/Invalid PinCode


or the Timer (7seconds)
expired----------------------------------------------------------------------------

39
if ((WrongPinCode == 1) || (millis()- Timer > 7000 && RightCard == 1)) // If you
offered a valid Mifare Card and you entered a wrong PinCode or the timer (7
seconds) expires

digitalWrite (Buzzer, HIGH); // Make a long beep and


set the Red LED HIGH for the wrong code or timer expiry

digitalWrite (RedLed, HIGH); //

delay(1500); //

digitalWrite (Buzzer, LOW); //

digitalWrite (RedLed, LOW); //

Serial.println("WrongCode or Timer expired"); // Print the text


"WrongCode or Timer expired" to the serial monitor

Reset = 1; // Reset the loop

//-----------------------------------------------Code for counting the inputs on the


keypad-----------------------------------------------------------------------------------------------
-----------

char KeyDigit = keypad.getKey(); // Get the DigitKey from


the keypad

if ((RightCard == 1) && // If you offered a valid


Mifare Card and any DigitKey on the keypad is pressed

((KeyDigit == '1') ||

(KeyDigit == '2') ||

40
(KeyDigit == '3') ||

(KeyDigit == '4') ||

(KeyDigit == '5') ||

(KeyDigit == '6') ||

(KeyDigit == '7') ||

(KeyDigit == '8') ||

(KeyDigit == '9') ||

(KeyDigit == '0') ||

(KeyDigit == '*') ||

(KeyDigit == '#')))

PinCodeCounter++; // PinCodeCounter value +1


for every press on any Digitkey on the keypad

digitalWrite (Buzzer, HIGH); // Make a short beep for


a DigitKey press on the keypad

delay (50); //

digitalWrite (Buzzer, LOW); //

//-----------------------------------------------Code for determine the correct PinCode for


MifareCard1----------------------------------------------------------------------------------------
------------------

if ((KeyDigit == Code1MifareCard1) && (RightCard == 1) && (Code1Correct == 0)


&& (MifareCard1 == 1)) // If you offered the valid MifareCard1, first PinCode
and you did not entered it before (Otherwise we conflict with same KeyDigits)

Code1Correct = 1; //
Variable Code1Correct is set to 1

41
return; // Return to
begin loop

if ((KeyDigit == Code2MifareCard1) && (Code1Correct == 1) && (Code2Correct


== 0) && (MifareCard1 == 1)) // If you offered the valid MifareCard1, second
PinCode and you did not entered it before (Otherwise we conflict with same
KeyDigits)

Code2Correct = 1; //
Variable Code2Correct is set to 1

return; // Return to
begin loop

if ((KeyDigit == Code3MifareCard1) && (Code2Correct == 1) && (Code3Correct


== 0) && (MifareCard1 == 1)) // If you offered the valid MifareCard1, third
PinCode and you did not entered it before (Otherwise we conflict with same
KeyDigits)

Code3Correct = 1; //
Variable Code3Correct is set to 1

return; // Return to
begin loop

if ((KeyDigit == Code4MifareCard1) && (Code3Correct == 1) && (Code4Correct


== 0) && (MifareCard1 == 1)) // If you offered the valid MifareCard1, fourth
PinCode and you did not entered it before (Otherwise we conflict with same
KeyDigits)

Code4Correct = 1; //
Variable Code4Correct is set to 1

42
return; // Return to
begin loop

if ((KeyDigit == Code5MifareCard1) && (Code4Correct == 1) && (Code5Correct


== 0) && (MifareCard1 == 1)) // If you offered the valid MifareCard1, fifth
PinCode and you did not entered it before (Otherwise we conflict with same
KeyDigits)

Code5Correct = 1; //
Variable Code5Correct is set to 1

return; // Return to
begin loop

if ((KeyDigit == Code6MifareCard1) && (Code5Correct == 1) && (Code6Correct


== 0) && (MifareCard1 == 1)) // If you offered the valid MifareCard1, sixth
PinCode and you did not entered it before (Otherwise we conflict with same
KeyDigits)

Code6Correct = 1; //
Variable Code6Correct is set to 1

return; // Return to
begin loop

//-----------------------------------------------Code for determine the correct PinCode for


MifareCard2----------------------------------------------------------------------------------------
------------------

if ((KeyDigit == Code1MifareCard2) && (RightCard == 1) && (Code1Correct == 0)


&& (MifareCard2 == 1)) // If you offered a the valid MifareCard2, first
PinCode and you did not entered it before (Otherwise we conflict with same
KeyDigits)

Code1Correct = 1; //
Variable Code1Correct is set to 1
43
return; // Return to
begin loop

if ((KeyDigit == Code2MifareCard2) && (Code1Correct == 1) && (Code2Correct


== 0) && (MifareCard2 == 1)) // If you offered a the valid MifareCard2,
second PinCode and you did not entered it before (Otherwise we conflict with same
KeyDigits)

Code2Correct = 1; //
Variable Code2Correct is set to 1

return; // Return to
begin loop

if ((KeyDigit == Code3MifareCard2) && (Code2Correct == 1) && (Code3Correct


== 0) && (MifareCard2 == 1)) // If you offered a the valid MifareCard2, third
PinCode and you did not entered it before (Otherwise we conflict with same
KeyDigits)

Code3Correct = 1; //
Variable Code3Correct is set to 1

return; // Return to
begin loop

if ((KeyDigit == Code4MifareCard2) && (Code3Correct == 1) && (Code4Correct


== 0) && (MifareCard2 == 1)) // If you offered a the valid MifareCard2, fourth
PinCode and you did not entered it before (Otherwise we conflict with same
KeyDigits)

Code4Correct = 1; //
Variable Code4Correct is set to 1

44
return; // Return to
begin loop

if ((KeyDigit == Code5MifareCard2) && (Code4Correct == 1) && (Code5Correct


== 0) && (MifareCard2 == 1)) // If you offered a the valid MifareCard2, fifth
PinCode and you did not entered it before (Otherwise we conflict with same
KeyDigits)

Code5Correct = 1; //
Variable Code5Correct is set to 1

return; // Return to
begin loop

if ((KeyDigit == Code6MifareCard2) && (Code5Correct == 1) && (Code6Correct


== 0) && (MifareCard2 == 1)) // If you offered a the valid MifareCard2, sixth
PinCode and you did not entered it before (Otherwise we conflict with same
KeyDigits)

Code6Correct = 1; //
Variable Code6Correct is set to 1

return; // Return to
begin loop

‫المراجع‬

45
1] http://en.wikipedia.org/wiki/Arduino.
[2] http://arduino.cc/en/Main/arduinoBoardUno.
/http://www.arduino.cc ]3[
/http://www.arduinoproducts .cc ] 4[
/http://www.atmel.com/atmega328 ]5[
[6] http://en.wikipedia.org/wiki/File:16MHZ_Crystal.jpg

46

You might also like