সুচিপত্র:

Arduino ব্যবহার করে ফিঙ্গারপ্রিন্ট ভিত্তিক বায়োমেট্রিক ভোটিং মেশিন: 4 টি ধাপ (ছবি সহ)
Arduino ব্যবহার করে ফিঙ্গারপ্রিন্ট ভিত্তিক বায়োমেট্রিক ভোটিং মেশিন: 4 টি ধাপ (ছবি সহ)

ভিডিও: Arduino ব্যবহার করে ফিঙ্গারপ্রিন্ট ভিত্তিক বায়োমেট্রিক ভোটিং মেশিন: 4 টি ধাপ (ছবি সহ)

ভিডিও: Arduino ব্যবহার করে ফিঙ্গারপ্রিন্ট ভিত্তিক বায়োমেট্রিক ভোটিং মেশিন: 4 টি ধাপ (ছবি সহ)
ভিডিও: Fringer Print Based Attendance System using ESP32 #esp32project #electronics 2024, ডিসেম্বর
Anonim
Arduino ব্যবহার করে ফিঙ্গারপ্রিন্ট ভিত্তিক বায়োমেট্রিক ভোটিং মেশিন
Arduino ব্যবহার করে ফিঙ্গারপ্রিন্ট ভিত্তিক বায়োমেট্রিক ভোটিং মেশিন

আমরা সবাই বিদ্যমান ইলেকট্রনিক ভোটিং মেশিন সম্পর্কে সচেতন যেখানে ব্যবহারকারীকে ভোট দেওয়ার জন্য একটি বোতাম চাপতে হবে। কিন্তু এই মেশিনগুলি শুরু থেকেই টেম্পারিংয়ের জন্য সমালোচিত। তাই সরকার একটি ফিঙ্গারপ্রিন্ট-ভিত্তিক ভোটিং মেশিন চালু করার পরিকল্পনা করছে যেখানে ব্যবহারকারীরা তার আঙ্গুলের ছাপের ভিত্তিতে ভোট দিতে পারবেন। এই সিস্টেমটি শুধু ডুপ্লিকেট ভোটের সম্ভাবনা দূর করবে না বরং যেকোনো ধরনের হেরফেরও রোধ করবে।

তাই এই প্রকল্পে, আমরা Arduino Uno, TFT ডিসপ্লে এবং ফিঙ্গারপ্রিন্ট সেন্সর ব্যবহার করে একটি বায়োমেট্রিক ভোটিং মেশিনের একটি প্রোটোটাইপ তৈরি করতে যাচ্ছি। আমরা এর আগে NodeMCU এর সাথে R305 ফিঙ্গারপ্রিন্ট সেন্সর ব্যবহার করে বায়োমেট্রিক ভিত্তিক উপস্থিতি ব্যবস্থা তৈরি করেছি কিন্তু এখানে আমরা Arduino এর সাথে উন্নত GT-511C3 ফিঙ্গারপ্রিন্ট সেন্সর ব্যবহার করব।

ধাপ 1: বায়োমেট্রিক ভোটিং মেশিন তৈরির জন্য প্রয়োজনীয় উপাদান

  • আরডুইনো উনো
  • 2.4”টিএফটি এলসিডি ডিসপ্লে শিল্ড
  • GT-511C3 ফিঙ্গারপ্রিন্ট সেন্সর

এই 2.4 ইঞ্চি টিএফটি ডিসপ্লেটি আগে আইওটি ভিত্তিক রেস্তোরাঁ মেনু অর্ডারিং সিস্টেম তৈরিতে আরডুইনোর সাথে ব্যবহার করা হয়েছিল।

ধাপ 2: Arduino ব্যবহার করে বায়োমেট্রিক ভোটিং মেশিনের সার্কিট ডায়াগ্রাম

Arduino ব্যবহার করে বায়োমেট্রিক ভোটিং মেশিনের জন্য সার্কিট ডায়াগ্রাম
Arduino ব্যবহার করে বায়োমেট্রিক ভোটিং মেশিনের জন্য সার্কিট ডায়াগ্রাম

এই প্রকল্পের সার্কিট ডায়াগ্রামটি খুবই সহজ কারণ আমরা শুধুমাত্র TFT ডিসপ্লে এবং ফিঙ্গারপ্রিন্ট সেন্সর মডিউলকে Arduino Uno এর সাথে সংযুক্ত করছি। ফিঙ্গারপ্রিন্ট সেন্সরের VCC এবং GND পিনগুলি Arduino এর 5V এবং GND পিনের সাথে সংযুক্ত থাকে যখন TX এবং RX পিনগুলি Arduino Uno এর ডিজিটাল পিন 11 এবং 12 এর সাথে সংযুক্ত থাকে।

2.4”টিএফটি এলসিডি স্ক্রিনটি একটি আরডুইনো শিল্ড এবং এটি সরাসরি আরডুইনো ইউনোতে মাউন্ট করা যেতে পারে, যেমন নীচের ছবিতে দেখানো হয়েছে। টিএফটি ডিসপ্লেতে 28 টি পিন রয়েছে যা পুরোপুরি আরডুইনো ইউনোতে ফিট করে, তাই আমাকে আরডুইনো এর পিছনের দিকে ফিঙ্গারপ্রিন্ট সেন্সর বিক্রি করতে হয়েছিল।

ধাপ 3: সোর্স কোড এবং ধাপে ধাপে কোড ব্যাখ্যা

Arduino ব্যবহার করে এই ফিঙ্গারপ্রিন্ট ভোট সিস্টেম প্রকল্পের সম্পূর্ণ কোডটি নিবন্ধের শেষে দেওয়া হয়েছে; এখানে আমরা কোডের কিছু গুরুত্বপূর্ণ ফাংশন ব্যাখ্যা করছি।

কোডটি SPFD5408, সফটওয়্যার সিরিয়াল এবং FPS_GT511C3 লাইব্রেরি ব্যবহার করে। SPFD5408 লাইব্রেরি হল মূল অ্যাডাফ্রুট লাইব্রেরির পরিবর্তিত সংস্করণ। এই লাইব্রেরির ফাইলগুলি নীচের লিঙ্কগুলি থেকে ডাউনলোড করা যেতে পারে:

  • SPFD5408 লাইব্রেরি
  • সফটওয়্যার সিরিয়াল
  • FPS_GT511C3

লাইব্রেরিগুলি অন্তর্ভুক্ত করার পরে এবং কিছু গুরুত্বপূর্ণ পরামিতি নির্ধারণ করার পরে, আমরা প্রোগ্রামিং অংশে প্রবেশ করতে পারি। এই কর্মসূচিতে তিনটি বিভাগ জড়িত। একটি হচ্ছে একটি ভোটিং মেশিনের একটি UI তৈরি করা, দ্বিতীয়টি হল বোতামের জন্য টাচ-পয়েন্ট পাওয়া এবং স্পর্শের উপর ভিত্তি করে বোতামগুলি সনাক্ত করা এবং শেষ পর্যন্ত ফলাফল গণনা করা এবং সেগুলি Arduino এর স্মৃতিতে সংরক্ষণ করা।

1. UI তৈরি করা:

আমি তিনটি বোতাম এবং প্রকল্পের নাম দিয়ে একটি সাধারণ UI তৈরি করেছি। টিএফটি ডিসপ্লে লাইব্রেরি আপনাকে রেখা, আয়তক্ষেত্র, বৃত্ত, অক্ষর, স্ট্রিং এবং পছন্দসই রঙ এবং আকারের আরও অনেক কিছু আঁকতে দেয়। এখানে 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 = Y আয়তক্ষেত্রের প্রারম্ভিক বিন্দুর সমন্বয়

w = আয়তক্ষেত্রের প্রস্থ

h = আয়তক্ষেত্রাকার উচ্চতা

ব্যাসার্ধ = গোলাকার কোণার ব্যাসার্ধ

রঙ = রেক্টের রঙ।

অকার্যকর ড্র হোম ()

{

tft.fillScreen (সাদা);

tft.drawRoundRect (0, 0, 319, 240, 8, সাদা); // পৃষ্ঠার সীমানা

tft.fillRoundRect (10, 70, 220, 50, 8, GOLD);

tft.drawRoundRect (10, 70, 220, 50, 8, সাদা); //ভোট

tft.fillRoundRect (10, 160, 220, 50, 8, GOLD);

tft.drawRoundRect (10, 160, 220, 50, 8, সাদা); // ভর্তি করুন

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 মানগুলি তারপর ম্যাপ ফাংশন ব্যবহার করে পিক্সেল কোঅর্ডিনেটে রূপান্তরিত হয়।

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

// সিরিয়াল.প্রিন্ট ("এক্স:");

// সিরিয়াল.প্রিন্ট (পি। এক্স);

// সিরিয়াল.প্রিন্ট ("ওয়াই:");

// সিরিয়াল.প্রিন্ট (পি.ই);

এখন, যেহেতু আমরা প্রতিটি বোতামের জন্য এক্স এবং ওয়াই কোঅর্ডিনেট জানি, তাই আমরা ব্যবহারকারী 'if' স্টেটমেন্ট ব্যবহার করে কোথায় স্পর্শ করেছি তা অনুমান করতে পারি।

যদি (p.x> 70 && p.x 10 && p.y MINPRESSURE && p.z <MAXPRESSURE)

{

Serial.println ("প্রার্থী 1");

একজন ভোটার যখন প্রার্থীর বোতাম টিপবেন, তখন তাকে আঙুলের ছাপ সেন্সরে আঙুল স্ক্যান করতে বলা হবে। যদি ফিঙ্গার আইডি অনুমোদিত হয় তাহলে ভোটারকে ভোট দেওয়ার অনুমতি দেওয়া হয়। যদি কোন নন-নিবন্ধিত ব্যবহারকারী ভোট দিতে চান তাহলে ফিঙ্গারপ্রিন্ট মডিউলটি সিস্টেমের মধ্যে তার আইডি সনাক্ত করতে পারবে না এবং ডিসপ্লেটি দেখাবে 'দু Sorryখিত আপনি ভোট দিতে পারবেন না'।

যদি (fps. IsPressFinger ())

{

fps. CaptureFinger (মিথ্যা);

int id = fps। শনাক্তকরণ 1_N ();

যদি (আইডি <200)

{

msg = "প্রার্থী 1";

ভোট 1 ++;

EEPROM.write (0, ভোট 1);

tft.setCursor (42, 170);

tft.print ("ধন্যবাদ");

বিলম্ব (3000);

ড্র হোম ();

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- এ সংরক্ষিত থাকবে এবং যে প্রার্থীর ভোটের সংখ্যা বেশি হবে সে জিতবে।

আমি আশা করি আপনি টিউটোরিয়ালটি উপভোগ করেছেন এবং দরকারী কিছু শিখেছেন। যদি আপনার কোন প্রশ্ন থাকে, তাহলে অনুগ্রহ করে আমাদের নীচের মন্তব্য বিভাগে জানান, এবং এইরকম আরও আকর্ষণীয় প্রকল্পের জন্য আমাদেরকে নির্দেশাবলীতে অনুসরণ করুন।

প্রস্তাবিত: