جدول المحتويات:

آلة التصويت البيومترية القائمة على بصمات الأصابع باستخدام Arduino: 4 خطوات (مع الصور)
آلة التصويت البيومترية القائمة على بصمات الأصابع باستخدام Arduino: 4 خطوات (مع الصور)

فيديو: آلة التصويت البيومترية القائمة على بصمات الأصابع باستخدام Arduino: 4 خطوات (مع الصور)

فيديو: آلة التصويت البيومترية القائمة على بصمات الأصابع باستخدام Arduino: 4 خطوات (مع الصور)
فيديو: Fingerprint Based Biometric Smart Electronic Voting Machine Using Arduino 2024, يوليو
Anonim
آلة التصويت البيومترية القائمة على بصمات الأصابع باستخدام Arduino
آلة التصويت البيومترية القائمة على بصمات الأصابع باستخدام Arduino

نحن جميعًا على دراية بآلة التصويت الإلكترونية الحالية حيث يتعين على المستخدم الضغط على زر للإدلاء بصوته. لكن هذه الآلات تعرضت لانتقادات بسبب تلطيفها منذ البداية. لذلك تخطط الحكومة لإدخال آلة تصويت تعتمد على بصمات الأصابع حيث يمكن للمستخدمين الإدلاء بأصواتهم بناءً على بصمة إصبعهم. لن يزيل هذا النظام إمكانية تكرار الأصوات فحسب ، بل سيمنع أيضًا أي نوع من التلاعب.

لذلك في هذا المشروع ، سنقوم ببناء نموذج أولي لآلة التصويت البيومترية باستخدام Arduino Uno وشاشة TFT ومستشعر بصمات الأصابع. استخدمنا سابقًا مستشعر بصمة الإصبع R305 مع NodeMCU لبناء نظام حضور قائم على المقاييس الحيوية ولكن هنا سنستخدم مستشعر بصمة الإصبع GT-511C3 المتقدم مع Arduino.

الخطوة 1: المكونات المطلوبة لبناء آلة الاقتراع البيومترية

  • اردوينو اونو
  • شاشة عرض LCD مقاس 2.4 بوصة بتقنية TFT
  • مستشعر بصمة الإصبع GT-511C3

تم استخدام شاشة TFT مقاس 2.4 بوصة هذه مسبقًا مع Arduino لبناء نظام ترتيب قوائم المطاعم القائم على إنترنت الأشياء.

الخطوة 2: مخطط الدائرة لآلة التصويت البيومترية باستخدام Arduino

مخطط الدائرة لآلة التصويت البيومترية باستخدام Arduino
مخطط الدائرة لآلة التصويت البيومترية باستخدام Arduino

مخطط الدائرة لهذا المشروع بسيط للغاية لأننا نقوم فقط بتوصيل شاشة TFT ووحدة مستشعر بصمات الأصابع مع Arduino Uno. يتم توصيل دبابيس VCC و GND لمستشعر بصمات الأصابع بدبابيس 5V و GND من Arduino بينما يتم توصيل دبابيس TX و RX بالدبوس الرقمي 11 و 12 من Arduino Uno.

شاشة TFT LCD مقاس 2.4 بوصة عبارة عن Arduino Shield ويمكن تركيبها مباشرة على Arduino Uno ، كما هو موضح في الصورة أدناه. تحتوي شاشة TFT على 28 دبوسًا تتناسب تمامًا مع Arduino Uno ، لذلك اضطررت إلى لحام مستشعر بصمات الأصابع على الجانب الخلفي من Arduino.

الخطوة 3: شفرة المصدر وشرح التعليمات البرمجية خطوة بخطوة

يتم تقديم الكود الكامل لمشروع نظام التصويت بالبصمة باستخدام Arduino في نهاية المقالة ؛ هنا نوضح بعض الوظائف المهمة للشفرة.

يستخدم الرمز مكتبات SPFD5408 و Software Serial و FPS_GT511C3. مكتبة SPFD5408 هي النسخة المعدلة من مكتبة Adafruit الأصلية. يمكن تنزيل ملفات المكتبة هذه من الروابط الواردة أدناه:

  • مكتبة SPFD5408
  • مسلسل البرمجيات
  • FPS_GT511C3

بعد تضمين المكتبات وتحديد بعض المعلمات المهمة ، يمكننا الدخول في جزء البرمجة. هناك ثلاثة أقسام تشارك في هذا البرنامج. الأول هو إنشاء واجهة مستخدم لآلة التصويت ، والثاني هو الحصول على نقاط اللمس للأزرار واكتشاف الأزرار بناءً على اللمس وأخيراً حساب النتائج وحفظها في ذاكرة Arduino.

1. إنشاء واجهة المستخدم:

لقد قمت بإنشاء واجهة مستخدم بسيطة بثلاثة أزرار واسم المشروع. تتيح لك مكتبة عرض TFT رسم الخطوط والمستطيل والدوائر والأحرف والسلاسل والمزيد من الألوان والحجم المفضل. هنا يتم إنشاء زرين مستطيلين باستخدام وظائف fillRoundRect و drawRoundRect. فيما يلي بناء جملة الدالة tft.drawRoundRect:

tft.drawRoundRect (int16_t x0، int16_t y0، int16_t w، int16_t h، int16_t radius، uint16_t color)

أين:

x0 = الاحداثى X لنقطة بداية المستطيل

y0 = إحداثي Y لنقطة بداية المستطيل

w = عرض المستطيل

ح = ارتفاع المستطيل

نصف القطر = نصف قطر الزاوية المستديرة

اللون = لون المستقيم.

رسم باطل

{

tft.fillScreen (أبيض) ؛

tft.drawRoundRect (0 ، 0 ، 319 ، 240 ، 8 ، أبيض) ؛ //حدود الصفحة

tft.fillRoundRect (10 ، 70 ، 220 ، 50 ، 8 ، ذهبي) ؛

tft.drawRoundRect (10 ، 70 ، 220 ، 50 ، 8 ، أبيض) ؛ //تصويت

tft.fillRoundRect (10 ، 160 ، 220 ، 50 ، 8 ، ذهبي) ؛

tft.drawRoundRect (10 ، 160 ، 220 ، 50 ، 8 ، أبيض) ؛ //يتسجل، يلتحق

tft.fillRoundRect (10، 250، 220، 50، 8، ذهبي) ؛ //نتيجة

tft.drawRoundRect (10 ، 250 ، 220 ، 50 ، 8 ، أبيض) ؛

tft.setCursor (65 ، 5) ؛

tft.setTextSize (3) ،

tft.setTextColor (CYAN) ،

tft.print ("التصويت") ؛

tft.setCursor (57 ، 29) ؛

tft.print ("آلة") ؛

tft.setTextSize (3) ،

tft.setTextColor (أبيض) ،

tft.setCursor (25 ، 82) ؛

tft.print ("المرشح الأول") ؛

tft.setCursor (25 ، 172) ؛

tft.print ("المرشح 2") ؛

tft.setCursor (25 ، 262) ؛

tft.print ("المرشح 3") ؛

}

2. الحصول على نقاط اللمس وأزرار الكشف:

الآن في القسم الثاني من الكود ، سنكتشف نقاط اتصال الزر ثم نستخدم هذه النقاط للتنبؤ بالزر. تُستخدم وظيفة ts.getPoint () لاكتشاف لمسة المستخدم على شاشة TFT. يعطي ts.getPoint قيم Raw ADC للمنطقة التي تم لمسها. ثم يتم تحويل قيم RAW ADC هذه إلى إحداثيات البكسل باستخدام وظيفة الخريطة.

TSPoint p = ts.getPoint () ،

إذا (p.z> ts.pressureThreshhold)

{

p.x = خريطة (p.x، TS_MAXX، TS_MINX، 0، 320) ؛

p.y = خريطة (p.y، TS_MAXY، TS_MINY، 0، 240) ؛

//Serial.print("X: ") ؛

//Serial.print(p.x) ؛

//Serial.print("Y: ") ؛

//Serial.print(p.y) ؛

الآن ، نظرًا لأننا نعرف إحداثيات X و Y لكل زر ، يمكننا التنبؤ بالمكان الذي لمسه المستخدم باستخدام عبارة "if".

إذا (p.x> 70 && p.x 10 && p.y MINPRESSURE && p.z <MAXPRESSURE)

{

Serial.println ("المرشح 1") ؛

عندما يضغط الناخب على زر المرشح ، سيُطلب منه مسح الإصبع على مستشعر بصمة الإصبع. إذا تم التصريح ببطاقة الإصبع ، فيُسمح للناخب بالتصويت. إذا أراد أي مستخدم غير مسجل التصويت ، فلن تكتشف وحدة البصمة معرّفها في النظام وستظهر على الشاشة "آسف لا يمكنك التصويت".

إذا (fps. isPressFinger ())

{

fps. CaptureFinger (خطأ) ؛

معرف int = fps. Identify1_N () ،

إذا (المعرف <200)

{

msg = "المرشح 1" ؛

تصويت 1 ++ ؛

EEPROM.write (0 ، تصويت 1) ؛

tft.setCursor (42 ، 170) ؛

tft.print ("شكرًا لك") ؛

تأخير (3000) ؛

drawHome () ؛

3. النتيجة:

الخطوة الأخيرة هي الحصول على عدد الأصوات من ذاكرة EEPROM ومقارنة أصوات المرشحين الثلاثة. المرشح الذي يحصل على أعلى الأصوات يفوز. لا يمكن الوصول إلى النتيجة إلا من الشاشة التسلسلية ولن يتم عرضها على شاشة TFT.

تصويت 1 = EEPROM.read (0) ،

تصويت 2 = EEPROM.read (1) ،

تصويت 3 = EEPROM.read (2) ،

إذا (تصويت)

{

إذا ((تصويت 1> تصويت 2 && تصويت 1> تصويت 3))

{

Serial.print ("Can1 Wins") ؛

تأخير (2000) ؛

}

الخطوة 4: اختبار نظام التصويت بالبصمة باستخدام Arduino

لاختبار المشروع ، قم بتوصيل Arduino Uno بالكمبيوتر المحمول وتحميل الكود المحدد. بمجرد تحميل الرمز ، يجب أن تعرض شاشة TFT اسم المرشح. عندما ينقر شخص ما على اسم مرشح ، سيطلب الجهاز مسح ماسح بصمات الأصابع ضوئيًا. إذا كانت البصمة صالحة ، فسيتم احتساب تصويت المستخدم ، ولكن في حالة عدم تطابق النمط مع سجلات قاعدة البيانات ، فسيتم رفض الوصول للإدلاء بصوت. سيتم تخزين إجمالي عدد الأصوات لكل مرشح في EEPROM وسيفوز المرشح الذي لديه أكبر عدد من الأصوات.

أتمنى أن تكون قد استمتعت بالبرنامج التعليمي وتعلمت شيئًا مفيدًا. إذا كان لديك أي استفسارات ، فالرجاء إخبارنا في قسم التعليقات أدناه ، وكذلك متابعتنا على Instructable لمزيد من هذه المشاريع المثيرة للاهتمام.

موصى به: