آموزش رزبری پایپروژه رزبری پای

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

سلام. پروژه دستگاه رای گیری با رزبری پای (نظر سنجی با 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 استفاده می شود.

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

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

نحوه اجرای کد در 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");
           .... ......
           ..... ......

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

مطلب پیشنهادی:  پروژه کنترل ربات ماشین با موبایل اندروید و رزبری پای

موارد موجود در فایل : سورس کد ، شماتیک پروژه

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

میخواهید برنامه نویسی STM32 را یاد بگیرید؟

دوره آموزش STM32

میخواهید الکترونیک را یاد بگیرید؟

دوره آموزش الکترونیک
دوره آموزش آردوینو

میخواهید آردوینو را به صورت پروژه محور یاد بگیرید؟ برای مشاهده توضیحات روی دوره مورد نظر کلیک کنید

محمد رحیمی

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید) سعی میکنم تمام نظرات را پاسخ دهم.

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

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