فهرست مطالب:

دستگاه رأی گیری بیومتریک مبتنی بر اثر انگشت با استفاده از آردوینو: 4 مرحله (همراه با تصاویر)
دستگاه رأی گیری بیومتریک مبتنی بر اثر انگشت با استفاده از آردوینو: 4 مرحله (همراه با تصاویر)

تصویری: دستگاه رأی گیری بیومتریک مبتنی بر اثر انگشت با استفاده از آردوینو: 4 مرحله (همراه با تصاویر)

تصویری: دستگاه رأی گیری بیومتریک مبتنی بر اثر انگشت با استفاده از آردوینو: 4 مرحله (همراه با تصاویر)
تصویری: Leap Motion SDK 2024, جولای
Anonim
دستگاه رأی گیری بیومتریک مبتنی بر اثر انگشت با استفاده از آردوینو
دستگاه رأی گیری بیومتریک مبتنی بر اثر انگشت با استفاده از آردوینو

همه ما از دستگاه رای گیری الکترونیکی موجود مطلع هستیم که در آن کاربر برای رأی دادن باید دکمه ای را فشار دهد. اما این ماشین ها از همان ابتدا به دلیل خنک شدن مورد انتقاد قرار گرفتند. بنابراین دولت در حال برنامه ریزی برای معرفی دستگاه رأی گیری مبتنی بر اثر انگشت است که در آن کاربران می توانند بر اساس اثر انگشت وی رای دهند. این سیستم نه تنها امکان رأی های تکراری را از بین می برد بلکه از هر نوع دستکاری جلوگیری می کند.

بنابراین در این پروژه ، ما قصد داریم با استفاده از Arduino Uno ، صفحه نمایش TFT و سنسور اثر انگشت ، یک نمونه اولیه از دستگاه رأی گیری بیومتریک بسازیم. ما قبلاً از سنسور اثر انگشت R305 با NodeMCU برای ساخت یک سیستم حضور و غیاب بیومتریک استفاده کرده بودیم ، اما در اینجا از سنسور اثر انگشت پیشرفته GT-511C3 با آردوینو استفاده خواهیم کرد.

مرحله 1: اجزای مورد نیاز برای ساخت دستگاه رای گیری بیومتریک

  • آردوینو اونو
  • 2.4 اینچ TFT LCD Shield Shield
  • سنسور اثر انگشت GT-511C3

این صفحه نمایش 2.4 اینچی TFT قبلاً با Arduino برای ساخت سیستم سفارش منوی رستوران مبتنی بر اینترنت اشیا استفاده می شد.

مرحله 2: نمودار مدار دستگاه رأی گیری بیومتریک با استفاده از آردوینو

نمودار مدار دستگاه رأی گیری بیومتریک با استفاده از آردوینو
نمودار مدار دستگاه رأی گیری بیومتریک با استفاده از آردوینو

نمودار مدار برای این پروژه بسیار ساده است زیرا ما فقط صفحه نمایش TFT و ماژول حسگر اثر انگشت را با Arduino Uno متصل می کنیم. پین های VCC و GND سنسور اثر انگشت به پین های 5V و GND آردوینو و پایه های TX و RX به پین های دیجیتال 11 و 12 Arduino Uno متصل هستند.

صفحه نمایش 2.4 اینچی TFT LCD یک Arduino Shield است و می توان آن را مستقیماً روی Arduino Uno نصب کرد ، همانطور که در تصویر زیر نشان داده شده است. صفحه نمایش TFT دارای 28 پین است که کاملاً در Arduino Uno جای می گیرد ، بنابراین مجبور شدم سنسور اثر انگشت را در پشت آردوینو لحیم کنم.

مرحله 3: کد منبع و توضیح مرحله به مرحله کد

کد کامل این پروژه سیستم رای گیری اثر انگشت با استفاده از آردوینو در انتهای مقاله آمده است. در اینجا ما برخی از عملکردهای مهم کد را توضیح می دهیم.

کد از کتابخانه های SPFD5408 ، Serial Software و FPS_GT511C3 استفاده می کند. کتابخانه SPFD5408 نسخه اصلاح شده کتابخانه اصلی Adafruit است. این فایلهای کتابخانه را می توانید از پیوندهای زیر بارگیری کنید:

  • کتابخانه SPFD5408
  • سریال نرم افزار
  • FPS_GT511C3

پس از گنجاندن کتابخانه ها و تعریف پارامترهای مهم ، می توانیم وارد قسمت برنامه نویسی شویم. سه بخش در این برنامه وجود دارد. یکی ایجاد یک رابط کاربری از دستگاه رای گیری ، دوم گرفتن نقاط تماس برای دکمه ها و تشخیص دکمه ها بر اساس لمس و در نهایت محاسبه نتایج و ذخیره آنها در حافظه آردوینو.

1. ایجاد UI:

من یک UI ساده با سه دکمه و نام پروژه ایجاد کرده ام. کتابخانه صفحه نمایش TFT به شما امکان می دهد خطوط ، مستطیل ها ، دایره ها ، کاراکترها ، رشته ها و بسیاری دیگر از هر رنگ و اندازه ترجیحی را ترسیم کنید. در اینجا دو دکمه مستطیلی با استفاده از توابع fillRoundRect و drawRoundRect ایجاد شده است. نحو برای تابع tft.drawRoundRect در زیر آورده شده است:

tft.drawRoundRect (int16_t x0 ، int16_t y0 ، int16_t w ، int16_t h ، شعاع int16_t ، رنگ uint16_t)

جایی که:

x0 = X مختصات نقطه شروع مستطیل شکل

y0 = مختصات نقطه شروع مستطیل شکل

w = عرض مستطیل

h = ارتفاع مستطیل

شعاع = شعاع گوشه گرد

color = رنگ Rect.

void drawHome ()

{

tft.fillScreen (WHITE) ؛

tft.drawRoundRect (0 ، 0 ، 319 ، 240 ، 8 ، WHITE) ؛ // حاشیه صفحه

tft.fillRoundRect (10 ، 70 ، 220 ، 50 ، 8 ، GOLD) ؛

tft.drawRoundRect (10 ، 70 ، 220 ، 50 ، 8 ، WHITE) ؛ //رای

tft.fillRoundRect (10 ، 160 ، 220 ، 50 ، 8 ، GOLD) ؛

tft.drawRoundRect (10 ، 160 ، 220 ، 50 ، 8 ، WHITE) ؛ // ثبت نام کنید

tft.fillRoundRect (10 ، 250 ، 220 ، 50 ، 8 ، GOLD) ؛ // نتیجه

tft.drawRoundRect (10 ، 250 ، 220 ، 50 ، 8 ، WHITE) ؛

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 ("نامزد 1") ؛

tft.setCursor (25 ، 172) ؛

tft.print ("نامزد 2") ؛

tft.setCursor (25 ، 262) ؛

tft.print ("نامزد 3") ؛

}

2. بدست آوردن نقاط لمسی و تشخیص دکمه ها:

اکنون در قسمت دوم کد ، نقاط تماس دکمه را تشخیص داده و سپس از این نقاط برای پیش بینی دکمه استفاده می کنیم. تابع () ts.getPoint برای تشخیص لمس کاربر در صفحه TFT استفاده می شود. ts.getPoint مقادیر خام ADC را برای ناحیه لمس شده می دهد. سپس این مقادیر RAW ADC با استفاده از تابع map به مختصات Pixel تبدیل می شوند.

TSPoint p = ts.getPoint ()؛

if (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" پیش بینی کنیم که کاربر کجا را لمس کرده است.

if (p.x> 70 && p.x 10 && p.y MINPRESSURE && p.z <MAXPRESSURE)

{

Serial.println ("نامزد 1") ؛

وقتی رای دهنده دکمه نامزد را فشار می دهد ، از او خواسته می شود انگشت را روی حسگر اثر انگشت اسکن کند. اگر شناسه انگشت مجاز است ، رای دهنده مجاز به رای دادن است. اگر هر کاربر ثبت نام نشده ای بخواهد رای دهد ، ماژول اثر انگشت شناسه خود را در سیستم شناسایی نمی کند و روی صفحه نمایش "متأسفانه نمی توانید رای دهید" نشان داده می شود.

if (fps. IsPressFinger ())

{

fps. CaptureFinger (false) ؛

int id = fps. Identify1_N ()؛

if (id <200)

{

msg = "نامزد 1"؛

رای 1++ ؛

EEPROM.write (0 ، رای 1) ؛

tft.setCursor (42 ، 170) ؛

tft.print ("متشکرم") ؛

تاخیر (3000) ؛

drawHome ()؛

3. نتیجه:

آخرین مرحله ، شمارش آرا از حافظه EEPROM و مقایسه آرای هر سه نامزد است. کاندیدایی با بیشترین آرا برنده می شود. نتیجه فقط از طریق مانیتور سریال قابل دسترسی است و در صفحه TFT نمایش داده نمی شود.

vote1 = EEPROM.read (0)؛

رای 2 = EEPROM.read (1) ؛

vote3 = EEPROM.read (2)؛

اگر (رای)

{

if ((رای 1> رأی 2 و & رأی 1> رأی 3))

{

Serial.print ("Can1 برنده می شود") ؛

تاخیر (2000) ؛

}

مرحله 4: آزمایش سیستم رای گیری اثر انگشت با استفاده از آردوینو

برای آزمایش پروژه ، Arduino Uno را به لپ تاپ متصل کرده و کد داده شده را بارگذاری کنید. پس از بارگذاری کد ، صفحه TFT باید نام نامزد را نشان دهد. وقتی شخصی روی نام یکی از نامزدها ضربه می زند ، دستگاه از شما می خواهد که اسکنر اثر انگشت را اسکن کنید. اگر اثر انگشت معتبر باشد ، رای کاربر شمرده می شود ، اما در صورت عدم مطابقت الگو با سوابق پایگاه داده ، دسترسی به رای دادن ممنوع می شود. تعداد کل آرا برای هر نامزد در EEPROM ذخیره می شود و کاندیدایی که بیشترین آرا را داشته باشد برنده می شود.

امیدوارم از آموزش لذت برده باشید و مطالب مفیدی را آموخته باشید. اگر سوالی دارید ، لطفاً در قسمت نظرات زیر به ما اطلاع دهید ، و همچنین در مورد Instructable برای پروژه های جالب دیگر ما را دنبال کنید.

توصیه شده: