نحن جميعًا على دراية كاملة بآلات التصويت الإلكترونية ، حيث يتم تسجيل صوتك إلكترونيًا ولا تحتاج إلى استخدام ورقة الاقتراع للتصويت في الانتخابات. يعتبر الأمن اليوم مصدر قلق كبير ويجب أيضًا التأكد من عدم تمكن أي شخص من التصويت مرتين ، لذلك يمكن حل هذه المشكلة عن طريق تقديم التصويت المستند إلى بصمات الأصابع ، حيث يمكن تفويض الشخص بناءً على بصماته. سيؤدي هذا أيضًا إلى إيقاف التصويت المزيف. لذلك نحن اليوم نقوم ببناء آلة التصويت البيومترية القائمة على FingerPrint باستخدام Arduino.
تحقق أيضًا من مشاريع آلة التصويت الإلكترونية السابقة باستخدام وحدات تحكم دقيقة مختلفة:
- آلة التصويت الإلكترونية باستخدام Raspberry Pi
- آلة التصويت القائمة على RFID
- مشروع آلة التصويت الإلكترونية القائمة على متحكم AVR
- آلة التصويت الإلكترونية باستخدام Arduino
المكونات المطلوبة:
- اردوينو اونو
- وحدة استشعار بصمة الإصبع
- أزرار الدفع
- المصابيح -2
- 1 كيلو المقاوم -3
- 2.2 كيلو المقاوم
- قوة
- توصيل الأسلاك
- صفارة
- 16x2 LCD
- مجلس الخبز
وحدة مستشعر بصمة الإصبع في آلة التصويت:
وحدة مستشعر بصمة الإصبع أو ماسح بصمة الإصبع هي وحدة تلتقط صورة بصمة الإصبع ثم تحولها إلى قالب مكافئ وتحفظها في ذاكرتها على المعرف المحدد (الموقع) بواسطة Arduino. هنا يتم تنفيذ كل العملية بواسطة Arduino مثل التقاط صورة لبصمات الأصابع وتحويلها إلى قوالب وتخزين الموقع وما إلى ذلك.
في دائرة آلة التصويت ببصمة الإصبع ، استخدمنا وحدة مستشعر بصمة الإصبع لمصادقة الناخب الحقيقي من خلال أخذ مدخلات إصبعه في النظام. نحن هنا نستخدم 5 أزرار ضغط للمطابقة والتسجيل / للخلف وحذف / موافق ولأعلى ولأسفل. مفتاح التسجيل و Del لهما ميزات مزدوجة هنا. يُستخدم مفتاح التسجيل لتسجيل بصمة إصبع جديدة في النظام ووظيفة الرجوع أيضًا. يعني أنه عندما يريد المستخدم تسجيل إصبع جديد ، فإنه يحتاج إلى الضغط على مفتاح التسجيل ، ثم تطلب شاشة LCD المعرف أو الموقع حيث يريد المستخدم تخزين إخراج بصمة الإصبع. الآن إذا كان المستخدم لا يريد المضي قدمًا في هذا الوقت ، فيمكنه / يمكنها الضغط على مفتاح التسجيل مرة أخرى للعودة (يتصرف مفتاح التسجيل هذه المرة كمفتاح رجوع). يعني أن مفتاح التسجيل لديه وظيفة التسجيل والعودة. مفتاح DEL / OK لديه أيضًا نفس الوظيفة المزدوجة مثل عندما يسجل المستخدم إصبعًا جديدًا ، ثم يحتاج إلى تحديد معرف الإصبع أو الموقع باستخدام مفتاحين آخرين هما UP AND DOWN ، يحتاج المستخدم الآن إلى الضغط على مفتاح DEL / OK (هذه المرة يتصرف هذا المفتاح مثل OK) المضي قدما مع المعرف أو الموقع المحدد. يتم استخدام مفتاح المطابقة عندما يريد الناخب التصويت ، ثم يحتاج إلى المصادقة أولاً للناخب الحقيقي عن طريق إبقاء الإصبع على مستشعر بصمة الإصبع ، إذا اجتاز / اجتازت هذه المصادقة ، فيمكنه / لها التصويت.
لمعرفة المزيد حول تسجيل بصمات الأصابع وأشياء أخرى ، تحقق من البرنامج التعليمي السابق الخاص بنا حول ربط مستشعر بصمة الإصبع مع Arduino ، وتحقق أيضًا من الفيديو التوضيحي الخاص بنا في نهاية هذا البرنامج التعليمي.
شرح العمل:
العمل على نظام الاقتراع البيومتري للانتخاب معقدة بعض الشيء بالنسبة للمبتدئين. بادئ ذي بدء ، يحتاج المستخدم إلى تسجيل الإصبع أو الناخبين (في هذا الرمز ، الحد الأقصى للناخب هو 25) بمساعدة أزرار الضغط / المفاتيح. للقيام بهذا المستخدم ، يحتاج إلى الضغط على مفتاح ENROLL ثم تطلب شاشة LCD إدخال الموقع / المعرف حيث سيكون الإصبع متجرًا. لذا يحتاج المستخدم الآن إلى إدخال المعرف (الموقع) باستخدام مفاتيح UP / DOWN. بعد تحديد الموقع / المعرف ، يحتاج المستخدم إلى الضغط على مفتاح موافق (مفتاح DEL). ستطلب شاشة LCD الآن وضع الإصبع فوق وحدة بصمة الإصبع. يحتاج المستخدم الآن إلى وضع إصبعه على وحدة البصمة. بعد ذلك ، ستطلب شاشة LCD إزالة الإصبع من وحدة البصمة وتطلب مرة أخرى وضع الإصبع. يحتاج المستخدم الآن إلى وضع إصبعه مرة أخرى فوق وحدة البصمة. الآن تأخذ وحدة البصمة صورة وتحولها إلى قوالب وتخزنها بواسطة المعرف المحدد في ذاكرة وحدة بصمات الأصابع.الآن سيتم تسجيل الناخب ويمكنه / لها التصويت. بنفس الطريقة يمكن تسجيل جميع الناخبين في النظام.
الآن إذا أراد المستخدم إزالة أو حذف أي من المعرفات المخزنة ، فعليه / عليها الضغط على مفتاح DEL ، بعد الضغط على مفتاح DEL ، سيطلب LCD تحديد الموقع يعني تحديد المعرف المراد حذفه. يحتاج المستخدم الآن إلى تحديد المعرف والضغط على مفتاح OK (نفس مفتاح DEL). ستعلمك شاشة LCD الآن أنه تم حذف الإصبع بنجاح.
عملية التصويت:
الآن عندما يريد المستخدم التصويت ، فإنه يحتاج إلى الضغط على مفتاح المطابقة ثم يصدر صوت صفير وسيتوهج مؤشر LED أيضًا وسيطلب LCD وضع إصبعه على وحدة بصمة الإصبع. الآن سوف يمنحك Arduino ثلاث محاولات لوضع إصبعك. بعد وضع وحدة بصمة الإصبع على وحدة بصمة الإصبع ، تلتقط وحدة البصمة صورة الإصبع وتجد أن معرفاتها موجودة في النظام. إذا تم الكشف عن معرف الإصبع ، فسوف تعرض شاشة LCD الناخب المرخص له. هذا يعني أن المستخدم مخول للتصويت. ثم ينتقل النظام إلى المرحلة التالية للتصويت. الآن سوف يتوهج مؤشر LED الأخضر ، مما يعني أنه يمكن الآن للناخب التصويت لمرشحيه بالضغط على مفتاح مرتبط (من لوحة الخبز RED في هذه المظاهرة). الآن إذا أراد نفس الناخب التصويت مرة أخرى ، فسيعرض النظام أنه "صوت بالفعل" . يعني أن نفس الناخب لا يمكنه التصويت مرة أخرى وسوف يصدر صوت صفير لمدة 5 ثوانٍ. إذا أراد أي مستخدم غير مسجل التصويت ، فلن تكتشف وحدة بصمة الإصبع معرفه في النظام وستظهر شاشة LCD رسالة " No Fingerprint Found" .
تمثل CAN1 و CAN2 و CAN3 هنا المرشح 1 والمرشح 2 والمرشح 3 الذين تقدموا في الانتخابات.
شرح الدائرة:
تعد دائرة مشروع آلة التصويت القائمة على FingerPrint بسيطة للغاية والتي تحتوي على Arduino للتحكم في عملية المشروع بالكامل ، وزر ضغط للتسجيل وحذف واختيار المعرفات والغرض من التصويت ، وجرس للتنبيه ، ومصابيح LED للإشارة وشاشة LCD مقاس 16 × 2 للتعليمات الناخب وبيان النتيجة ايضا. يشير مؤشر LED الأصفر إلى أن وحدة البصمة جاهزة لالتقاط صورة للإصبع ويشير مؤشر LED الأخضر إلى أن النظام جاهز لإجراء تصويت أو لرؤية النتائج.
زر الضغط متصل مباشرة بالدبوس A0 (ENROLL) و A1 (DEL) و A2 (UP) و A3 (DOWN) و A4 (Match) و D5 (Can1) و D4 (Can2) و D3 (Can3) و D2 (نتيجة) من Arduino فيما يتعلق بالأرض. الصمام الأصفر متصل بـ Digital pin D7 من Arduino فيما يتعلق بالأرض من خلال المقاوم 1k ويتم توصيل Green LED بـ D6 من Arduino بنفس الطريقة. تم توصيل Rx و Tx لوحدة بصمة الإصبع مباشرة في Serial pin Tx و Rx من Arduino. يستخدم مصدر 5 فولت لتشغيل وحدة بصمات الأصابع المأخوذة من لوحة Arduino. يتم توصيل صفارة أيضًا في A5. تم تكوين شاشة LCD مقاس 16 × 2 في وضع 4 بت ويتم توصيل RS و EN و D4 و D5 و D6 و D7 مباشرةً في Digital pin D13 و D12 و D11 و D10 و D9 و D8 من Arduino.
شرح البرنامج:
في أحد البرامج ، استخدمنا Adafruit Fingerprint Sensor Library لربط وحدة بصمات الأصابع بلوحة Arduino. يمكنك التحقق من الكود الكامل أدناه. نحن هنا نوضح الوظائف الرئيسية لبرنامج Arduino.
في وظيفة الإعداد ، قدمنا توجيهات لدبابيس محددة وبدأنا تشغيل وحدة LCD و Fingerprint.
بعد ذلك ، في وظيفة الحلقة الفارغة () ، انتظرنا مفتاح الفحص واضغط على مفتاح المطابقة لبدء بصمة الإصبع لأخذ الإدخال ومقارنة معرف الصورة الملتقطة بالمعرفات المخزنة. إذا حدثت مباراة ، فتابع إلى الخطوة التالية.
حلقة باطلة () {lcd.setCursor (0،0) ، lcd.print ("اضغط على مفتاح المباراة") ؛ lcd.setCursor (0،1) ؛ lcd.print ("لبدء النظام") ؛ digitalWrite (indVote ، منخفضة) ؛ digitalWrite (indFinger ، منخفض) ؛ if (digitalRead (match) == 0) {digitalWrite (buzzer، HIGH) ؛ تأخير (200) ؛ الكتابة الرقمية (الجرس ، منخفضة) ؛ digitalWrite (indFinger ، عالية) ؛ لـ (int i = 0 ؛ i <3 ؛ i ++)…………………
نظرًا لاستخدام وظيفة checkKeys () باطلة للتحقق من الضغط على مفتاح Enroll أو DEL أو لا وماذا تفعل إذا تم الضغط عليه. إذا ضغط مفتاح ENROLL على وظيفة Enroll () ، ثم اضغط على مفتاح DEL ، ثم يتم استدعاء وظيفة delete () .
checkKeys باطلة () {if (digitalRead (register) == 0) {lcd.clear ()؛ lcd.print ("الرجاء الانتظار") ؛ تأخير (1000) ؛ بينما (digitalRead (تسجيل) == 0) ؛ يتسجل، يلتحق()؛ } else if (digitalRead (del) == 0) {lcd.clear ()؛ lcd.print ("الرجاء الانتظار") ؛ تأخير (1000) ؛ حذف () ؛ }}
تُستخدم الوظيفة المعطاة لإدخال المعرف المراد حذفه واستدعاء وظيفة uint8_t deleteFingerprint (uint8_t id) التي ستحذف الإصبع من السجلات.
حذف باطل () {عدد صحيح = 0 ؛ lcd.clear () ؛ lcd.print ("حذف الإصبع") ؛ lcd.setCursor (0،1) ؛ lcd.print ("الموقع:") ؛ بينما (1) {lcd.setCursor (9،1) ؛ lcd.print (العد) ؛ إذا (digitalRead (up) == 0) {count ++ ؛ إذا (العد> 25) العد = 0 ؛ تأخير (500) ؛ }……………….
يتم استخدام الوظيفة المعينة لحذف بصمة الإصبع من سجل المعرف المحدد.
uint8_t deleteFingerprint (uint8_t id) {uint8_t p = -1 ؛ lcd.clear () ؛ lcd.print ("الرجاء الانتظار") ؛ ع = finger.deleteModel (معرف) ؛ إذا (p == FINGERPRINT_OK) {Serial.println ("محذوف!") ؛ lcd.clear () ؛ lcd.print ("Figer Deleted") ؛ lcd.setCursor (0،1) ؛ lcd.print ("بنجاح") ؛ تأخير (1000) ؛ } else {Serial.print ("شيء خاطئ")؛ lcd.clear () ؛ lcd.print ("شيء خاطئ") ؛ lcd.setCursor (0،1) ؛ lcd.print ("حاول مرة أخرى لاحقًا") ؛ تأخير (2000) ؛ عودة ص ؛ }}
تُستخدم الوظيفة المحددة لأخذ صورة بصمات الأصابع وتحويلها إلى قالب وحفظها بواسطة المعرف المحدد في ذاكرة وحدة بصمات الأصابع.
uint8_t getFingerprintEnroll () {int p = -1 ؛ lcd.clear () ؛ lcd.print ("معرف الإصبع:") ؛ lcd.print (معرف) ؛ lcd.setCursor (0،1) ؛ lcd.print ("وضع الإصبع") ؛ تأخير (2000) ؛ while (p! = FINGERPRINT_OK) {p = finger.getImage () ؛……………………
يتم استخدام الوظيفة المحددة للتصويت وعرض النتائج:
void Vote () {lcd.clear ()؛ lcd.print ("الرجاء وضع") ؛ lcd.setCursor (0،1) ؛ lcd.print ("تصويتك") ؛ digitalWrite (indVote ، عالية) ؛ digitalWrite (indFinger ، منخفض) ؛ الكتابة الرقمية (الجرس ، عالية) ؛ تأخير (500) ؛ الكتابة الرقمية (الجرس ، منخفضة) ؛ تأخير (1000) ؛ بينما (1) {if (digitalRead (sw1) == 0)…………………
تحقق من الكود الكامل والفيديو التوضيحي أدناه.