Raspberry Pi هو لوحة تطوير شهيرة قائمة على ARM cortex مصممة للمهندسين الإلكترونيين والهواة. إنه كمبيوتر لوحي واحد يعمل بطاقة منخفضة مع سرعة معالجة وذاكرة جيدة للغاية. يمكن استخدام Raspberry Pi لأداء وظائف مختلفة في وقت واحد ، مثل جهاز الكمبيوتر العادي ، ومن ثم يطلق عليه Mini Computer في راحة يدك.
لقد أنشأنا سلسلة من دروس Raspberry Pi التعليمية ، والتي قمنا فيها بتغطية واجهة Raspberry Pi بجميع المكونات الأساسية ، بالإضافة إلى بعض مشاريع Raspberry Pi البسيطة للبدء بها.
سنقوم هنا ببناء آلة تصويت إلكترونية باستخدام لوحة Raspberry Pi Board. نحن جميعًا على دراية بآلة التصويت الإلكترونية (EVM) التي تستخدم للتصويت في الانتخابات ، عن طريق الضغط على زر بسيط. لقد قمنا بالفعل بتغطية آلة التصويت الإلكترونية باستخدام وحدات تحكم دقيقة مختلفة مثل EVM مع متحكم AVR و EVM مع Arduino. لقد قمنا أيضًا ببناء آلة تصويت يتم فيها المصادقة على الناخب عن طريق علامة RFID ، بحيث يمكن حساب الأصوات المصادق عليها فقط.
إن آلة التصويت الإلكترونية التي تستخدم Raspberry Pi أبسط وأسهل مقارنة بمشاريع آلة التصويت السابقة.
المكونات المطلوبة:
- Raspberry Pi - 1
- 16x2 LCD - 1
- زر الضغط - 5
- لوح الخبز - 1
- توصيل الأسلاك
- 1K المقاوم - 1
- 10 كيلو المقاوم - 5
- 10 كيلو وعاء - 1
- المصابيح - 5
كيف تعمل:
في هذا المشروع ، استخدمنا أربعة أزرار للتصويت لأربعة مرشحين أو أحزاب. يمكننا زيادة عدد المرشحين ، ولكن من أجل فهم أفضل ، استخدمنا أربعة فقط هنا. عندما يضغط ناخب على أي من الأزرار الأربعة ، يتم زيادة "عدد الأصوات" للحزب أو المرشح المحترم بمقدار واحد في كل مرة. في نفس الوقت يومض مؤشر LED ويصدر صوت صفير لمدة ثانية للإشارة إلى أنه تم التصويت. بعد اكتمال التصويت ، لدينا زر "نتيجة" لإظهار نتائج التصويت. عندما نضغط على هذا الزر ، تعرض شاشة LCD اسم الطرف الفائز بالرقم. من الأصوات الممنوحة لكل طرف.
شرح الدائرة:
يوجد أدناه مخطط الدائرة الكهربائية لهذا EVM باستخدام Raspberry Pi. يتحكم Raspberry Pi في العملية بأكملها مثل قراءة الزر ، وزيادة عدد الأصوات ، وتوليد النتيجة وعرض كل الأشياء على شاشة LCD.
استخدمنا هنا لوحة Raspberry Pi 3 لأداء جميع العمليات في المشروع واستخدمنا wiringPi Library لاختيار دبابيس GPIO الخاصة بـ Raspberry Pi والتحكم فيها. يمكننا أيضًا استخدام Raspberry Pi 2 هنا. لقد استخدمنا هنا خمسة أزرار ، حيث تم استخدام أربعة منها للتصويت لأربعة مرشحين / أحزاب مختلفة ، ويتم استخدام زر واحد لإظهار النتيجة على شاشة LCD. هذه الأزرار الخمسة متصلة مباشرة بدبابيس GPIO من 21 إلى 25 من RPI3 ، فيما يتعلق بالأرض بمقاوم سحب 10K لكل واحد. شاشة LCD مقاس 16 × 2 متصلة بـ Raspberry Pi. يتم توصيل دبوس التحكم RS و RW و En بـ GPIO pin 11 و GND و 10. ودبوس البيانات D4-D7 متصل بدبابيس GPIO 6 و 5 و 4 و 1 من RPI. A الجرسيستخدم أيضًا للصفير عند الضغط على أي من الأزرار بواسطة الناخب. استخدمنا هنا مؤشر LED أخضر (D5) للإشارة إلى أن النظام جاهز ويمكن للناخب تقديم تصويتهم في الجهاز ، بالضغط على الزر. يستخدم وعاء 10 كيلو للتحكم في سطوع شاشة LCD.
كيفية تشغيل الكود في Raspberry Pi:
1. أولاً ، قم بتسجيل الدخول إلى Raspberry Pi باستخدام SSH باسم المستخدم الافتراضي: "pi" وكلمة المرور: "raspberry". استخدمنا هنا عميل SSH "Putty for Windows" للاتصال بـ Pi من خلال Windows. إذا كنت تستخدم Linux ، فيمكنك الاتصال مباشرة بـ Pi باستخدام SSH. هناك الكثير من البرامج التعليمية على الإنترنت حول "الاتصال بـ Raspberry Pi باستخدام SSH" ، لذلك نحن هنا لا ندخل في التفاصيل. يجب عليك أيضًا التحقق من كيفية البدء باستخدام Raspberry Pi لمعرفة المزيد حول Pi وتثبيت نظام التشغيل (Raspbian Jessie) ومتطلبات الأجهزة والبرامج الخاصة به.
2. الآن قم بتشغيل الأمر التالي لفتح ملف جديد باسم vot.c ولصق الرمز (الوارد في قسم التعليمات البرمجية أدناه) في الملف ، استخدم مفتاح "shift + insert" للصق الرمز.
sudo نانو التصويت ج
3. بعد كتابة الرمز ، اضغط على ctrl + x ثم اضغط على y لحفظ الرمز واضغط على Enter.
4. الآن اجعل الشفرة قابلة للتنفيذ باستخدام الأمر المحدد:
cc -o تصويت التصويت. c -lwiringPi -std = c99
5. أخيرًا قم بتشغيل الكود باستخدام الأمر المحدد
sudo./ التصويت
شرح البرمجة:
استخدمنا هنا الكثير من لغة C المألوفة لدى المستخدم لكتابة الكود والتشفير الذي يشبه إلى حد كبير ترميز Arduino. يمكننا أيضًا استخدام لغة Python لبناء هذا المشروع.
بادئ ذي بدء ، نقوم بتضمين ملفات الرأس وتحديد دبابيس لشاشات الكريستال السائل ؛ يستخدم ملف الرأس wiringPi.h للتحكم في دبابيس GPIO الخاصة بـ Pi. ثم قم بتهيئة بعض المتغيرات والدبابيس لأخذ مدخلات التصويت ومؤشرات LED.
#تضمن
بعد ذلك ، قدمنا التوجيه لجميع وظائف GPIO المستخدمة في الإعداد الباطل () .
إعداد باطل () {if (wiringPiSetup () == - 1) printf ("ERROR") ؛ pinMode (led1 ، الإخراج) ؛ pinMode (led2 ، الإخراج) ؛ pinMode (led3 ، الإخراج) ؛ pinMode (led4 ، الإخراج) ؛ pinMode (led5 ، الإخراج) ؛ pinMode (الطنانة ، الإخراج) ؛ pinMode (RS ، الإخراج) ؛……………….
في الكود ، استخدمنا وظيفة digitalRead في void main () لقراءة الزر المضغوط.
إذا (digitalRead (in1) == 0) {تصويت 1 ++ ؛ تبين()؛ الكتابة الرقمية (led1 ، عالية) ؛ صفارة()؛ digitalWrite (led1 ، منخفض) ؛ انتظر()؛ }
تُستخدم وظيفة void show () لعرض معلومات التصويت على شاشة LCD مع اسم الحزب المرشح.
عرض باطل () {setCursor (0،0) ؛ طباعة ("BJP Cong AAP Ex") ؛ setCursor (1،1) ؛ sprintf (تصويت ، "٪ d" ، تصويت 1) ؛ طباعة (تصويت) ؛ setCursor (6،1) ؛ sprintf (تصويت ، "٪ d" ، تصويت 2) ؛………………..
فيما يلي بعض الوظائف الأخرى المستخدمة في هذا المشروع:
الجرس الفارغ () يستخدم fuction لإصدار صفير للجرس كإشارة إلى أنه تم إعطاء صوت. و فراغ الانتظار () fuction لـ LED D5 (Green LED in Hardware) ، مما يدل على أن النظام جاهز للتصويت ، عند تشغيل LED.
void buzzer () {digitalWrite (buzz، HIGH)؛ تأخير (1000) ؛ الكتابة الرقمية (الطنانة ، منخفضة) ؛ } void wait () {digitalWrite (led5، LOW)؛ تأخير (3000) ؛ }
يتم استخدام وظيفة void comapare () ، لمقارنة إجمالي الأصوات لكل من المرشحين ، للحصول على النتيجة وإظهار حالة النتيجة على شاشة LCD.
مقارنة باطلة () {clear () ؛ طباعة ("الرجاء الانتظار….") ؛ انتظر()؛ إذا (تصويت 1> تصويت 2 && تصويت 1> تصويت 3 && تصويت 1> تصويت 4) {digitalWrite (led1، HIGH)؛ لـ (i = 0 ؛ i <2 ؛ i ++) {clear () ؛ setCursor (0،0) ؛ طباعة ("Congrates…….") ؛ setCursor (0،1) ؛ طباعة ("فاز حزب بهاراتيا جاناتا في الانتخابات") ؛…………….
تحقق من الكود الكامل أدناه.