پروژه الکترونیکپروژه های رزبری پای

پروژه دستگاه رای گیری با رزبری پای (ساخت نظر سنجی با Raspberry Pi)

سلام. پروژه دستگاه رای گیری با رزبری پای (نظر سنجی با Raspberry Pi) را آماده کردیم.

راه اندازی دستگاه رای گیری الکترونیکی با Raspberry Pi

در این پروژه رزبری پای ما قصد داریم با استفاده از Raspberry Pi یک ماشین رای گیری الکترونیکی بسازیم. ما قبلا این دستگاه را با میکروکنترلر AVR و آردوینو ساخته ایم.  دستگاه های نظر سنجی الکترونیکی را EVM میگویند که مخفف Electronic Voting Machine است.

در این پروژه از چهار دکمه برای رای دادن به چهار نامزد استفاده میشود. ما میتوانیم تعداد نامزد ها را افزایش بدهیم اما برای درک بهتر فقط از 4 نامزد استفاده کرده ایم. هنگامی که یک رای دهنده هر یک از چهار دکمه را فشار دهد. تعداد رای های حزب مورد نظر یک عدد افزایش میابد. همچنین با فشردن دکمه چراغ چشمک میزند و بازر فعال میشود. پس از اتمام ما یک دکمه داریم که با زدن روی آن نتیجه نمایش داده میشود. نتیجه به صورت نام نامزد برنده و تعداد آرای آن است.

فیلم عملکرد پروژه در انتهای مطلب قرار داده شده است.

توضیحات شماتیک مدار

شماتیک پروژه در تصویر زیر قابل مشاهده است. همانطور که میبینید مدار بسیار ساده است و رزبری پای تمامی فرآیند های بررسی فشرده شدن دکمه ها ، شمارش آرا و نمایش نتیجه بر روی ال سی دی کاراکتری را کنترل میکند. در این پروژه ما از یک برد رزبری پای 3 استفاده کرده ایم (میتوانید از نسخه های دیگر نیز استفاده کنید). همچنین از کتابخانه wiringPi برای انتخاب و کنترل پین های GPIO Raspberry Pi استفاده کرده ایم.

راه اندازی دستگاه رای گیری الکترونیکی

 

در اینجا ما از پنج دکمه استفاده کرده ایم که در آن چهار دکمه برای رای دادن به چهار نامزد مختلف استفاده شده اند و یک دکمه برای نمایش نتیجه در LCD استفاده شده است. این پنج دکمه به طور مستقیم به پین ​​های GPIO 21 تا 25 از رزبری پای متصل شده اند. یک ال سی دی 16*2 نیز به رزبری پای متصل است. پین کنترل RS ، RW و En به پین ​​های GPIO 11 ، GND و 10 وصل شده است. پین دیتا D4-D7 به پین ​​های GPIO 6 ، 5 ، 4 و 1 از Raspberry Pi وصل شده است. در اینجا ما از چراغ سبز (D5) استفاده کرده ایم که نشان می دهد سیستم آماده است و رای دهنده می تواند با فشار دادن دکمه، رای خود را در دستگاه ارسال کند. یک پتانسیومتر 10 کیلو اهم برای کنترل روشنایی LCD استفاده می شود.

حتما ببینید :  اتصال دکمه به برد رزبری پای و کنترل LED با پایتون (آموزش Raspberry Pi #5)

قطعات مورد نیاز

  1. برد رزبری پای
  2. ال سی دی کاراکتری 16*2
  3. دکمه – پنج عدد
  4. مقاومت 1 کیلو اهم
  5. مقاومت 10 کیلو اهم – پنج عدد
  6. پتانسیومتر 10 کیلو اهم
  7. LED – پنج عدد
  8. بازر

نحوه اجرای کد در Raspberry Pi

1. در مرحله اول ، با استفاده از SSH با نام کاربری پیش فرض وارد “رزبری پای” خود شوید. نام کاربری: “pi” و رمز عبور : “raspberry”. در اینجا ما از Putty for Windows برای ارتباط با Pi از طریق ویندوز استفاده کرده ایم. اگر از لینوکس استفاده میکیند، می توانید مستقیماً با استفاده از SSH به Pi وصل شوید.

نحوه اجرای کد در Raspberry Pi

2. حالا دستور زیر را اجرا کنید تا پرونده جدیدی به نام deng.c باز شود و کد (در قسمت کد زیر داده شده) را در پرونده قرار دهید ، از کلید “shift + insert” برای چسباندن کد استفاده کنید.

sudo nano voting.c

آموزش SSH در رزبری پای

3. پس از نوشتن کد ، ctrl + x را فشار داده و سپس y را فشار دهید تا کد را ذخیره کنید و enter را فشار دهید.

4. اکنون کد را با استفاده از دستور داده شده انجام پذیز کنید.

 cc -o voting voting.c -lwiringPi -std=c99

5. در آخر با استفاده از دستور داده شده کد را اجرا کنید.

اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید.
sudo ./voting

آموزش راه اندازی رزبری پای برای رای گیری

توضیحات کد پروژه

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

اول از همه، پرونده های هدر مثل کتابخانه ها را فراخوانی میکنیم و سپس پین ها را برای ال سی دی تعریف میکنیم. از کتابخانه wiringPi.h برای کنترل پین های GPIO استفاده می شود. سپس برخی از متغیرها و پین ها را برای گرفتن ورودی رای گیری و نشانه های LED تعریف میکنیم.

#include<wiringPi.h>
#include<stdio.h>

#define RS 11 // پین های ال سی دی کاراکتری
#define EN 10
#define D4 6
#define D5 5
#define D6 4
#define D7 1

#define led1 26 // پین های ال ای دی ها
#define led2 27
#define led3 28
#define led4 29
#define led5 14
#define buzz 13 // پین بازر

سپس ما نوع پین ها را تعریف میکنیم که کدام یک از پین های GPIO خروجی هستند و کدام یک ورودی.

void setup()
  {
  if(wiringPiSetup()==-1)
  printf("ERROR");
  pinMode(led1, OUTPUT); // تنظیم به عنوان خروجی
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(buzz, OUTPUT);
  pinMode(RS, OUTPUT);
  .... .....
  ..... .....

در کد ، ما از تابع digitalRead به عنوان تابع اصلی (void main) برای اطلاع از وضعیت دکمه ها استفاده کرده ایم.

if(digitalRead(in1)==0)
{
        vote1++;
        show();
        digitalWrite(led1, HIGH);
        buzzer();
        digitalWrite(led1, LOW);
        wait();                
}

از تابع void show () برای نمایش اطلاعات رأی گیری بر روی LCD با نام نامزد استفاده می شود.

void show()
{
        setCursor(0,0);
        print("BJP Cong AAP Ex");
        setCursor(1,1);
        sprintf(vote,"%d",vote1);
        print(vote);
        setCursor(6,1);
        sprintf(vote,"%d",vote2);
        .... .....
        ..... ......

چندین تابع دیگر در این پروژه استفاده شده است. void buzzer() برای بوق زدن بازر هنگام رای دادن استفاده میشود. wait() نیز برای روشن شدن ال ای دی استفاده میشود که نشان میدهد دستگاه به درستی کار میکند.

void buzzer()
{
     digitalWrite(buzz, HIGH);
     delay(1000);
     digitalWrite(buzz, LOW);
}

void wait()
{
     digitalWrite(led5, LOW);
     delay(3000);
}

از تابع void comapare () برای مقایسه کل آرا هر یک از نامزدها، برای بدست آوردن نتیجه و نشان دادن وضعیت نتیجه در LCD استفاده می شود.

void compare()
{
    clear();
    print("Please Wait....");
    wait();
   if(vote1 > vote2 && vote1>vote3 && vote1>vote4)
        {
          digitalWrite(led1, HIGH);
          for(i=0;i<2;i++)
          {
           clear();
           setCursor(0,0);
           print("Congrates.......");
           setCursor(0,1);
           print("BJP Won election");
           .... ......
           ..... ......

فیلم عملکرد پروژه

[post_shop]

دانلود فایل های پروژه

[/post_shop] [lrm_form default_tab=”register” logged_in_message=””]

نظرتان را در مورد این مطلب با ستاره دادن اعلام کنید امیدوارم این مطلب برای شما مفید بوده باشد. نظرات ، مشکلات و پیشنهادات خود را در پایین صفحه اعلام کنید
برچسب ها

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا
بستن
بستن