- Vereiste componenten:
- Hoe het werkt:
- Circuit uitleg:
- Hoe de code in Raspberry Pi uit te voeren:
- Programmering Toelichting:
Raspberry Pi is een op ARM cortex gebaseerd populair ontwikkelbord dat is ontworpen voor elektronische ingenieurs en hobbyisten. Het is een computer met één board die werkt op een laag stroomverbruik met een zeer goede verwerkingssnelheid en geheugen. Raspberry Pi kan worden gebruikt om verschillende functies tegelijk uit te voeren, zoals een normale pc, en daarom wordt het in je handpalm minicomputer genoemd.
We hebben een reeks Raspberry Pi-zelfstudies gemaakt, waarin we de interface van Raspberry Pi met alle basiscomponenten hebben behandeld, evenals enkele eenvoudige Raspberry Pi-projecten om mee te beginnen.
Hier gaan we een elektronische stemmachine bouwen met behulp van een Raspberry Pi-bord. We kennen allemaal de elektronische stemmachine (EVM) die wordt gebruikt om te stemmen bij verkiezingen, door op een simpele knop te drukken. We hebben de elektronische stemmachine al behandeld met behulp van verschillende microcontrollers, zoals EVM met AVR-microcontroller en EVM met Arduino. We hebben ook een stemmachine gebouwd waarin de kiezer wordt geauthenticeerd door middel van een RFID-tag, zodat alleen geauthenticeerde stemmen kunnen worden geteld.
Deze elektronische stemmachine met Raspberry Pi is eenvoudiger en gemakkelijker in vergelijking met onze eerdere stemmachine-projecten.
Vereiste componenten:
- Raspberry Pi - 1
- 16x2 LCD - 1
- Drukknop - 5
- Broodplank - 1
- Draden aansluiten
- 1K weerstand - 1
- 10K weerstand - 5
- 10K POT - 1
- LED's - 5
Hoe het werkt:
In dit project hebben we vier knoppen gebruikt om op vier kandidaten of partijen te stemmen. We kunnen het aantal kandidaten vergroten, maar voor een beter begrip hebben we er hier maar vier gebruikt. Wanneer een kiezer op een van de vier knoppen drukt, wordt het 'aantal stemmen' voor de gerespecteerde partij of kandidaat telkens met één verhoogd. Tegelijkertijd knippert de LED en piept de zoemer gedurende een seconde om aan te geven dat er is gestemd. Nadat de stemming is voltooid, hebben we een knop "Resultaat" om de resultaten van de stemming weer te geven. Wanneer we op deze knop drukken, toont het LCD-scherm de naam van de winnende partij met het nr. van de stemmen die aan elke partij zijn gegeven.
Circuit uitleg:
Het schakelschema van deze EVM met Raspberry Pi wordt hieronder weergegeven. Raspberry Pi bestuurt het hele proces, zoals het lezen van de knop, het verhogen van het aantal stemmen, het genereren van resultaten en het weergeven van alle dingen op het LCD-scherm.
Hier hebben we het Raspberry Pi 3-bord gebruikt om alle bewerkingen in het project uit te voeren en de bedrading Pi-bibliotheek gebruikt voor het selecteren en besturen van de GPIO-pinnen van Raspberry Pi. We kunnen hier ook Raspberry Pi 2 gebruiken. Hier hebben we vijf knoppen gebruikt, waarvan er vier zijn gebruikt om op vier verschillende kandidaten / partijen te stemmen en één knop wordt gebruikt om het resultaat op het LCD-scherm weer te geven. Deze vijf knoppen zijn rechtstreeks verbonden met GPIO-pinnen 21 tot 25 van RPI3, met betrekking tot aarde met 10K pull-up-weerstand voor elk. Een 16x2 LCD is verbonden met Raspberry Pi. Controlepin RS, RW en En zijn verbonden met GPIO-pin 11, GND en 10. En datapin D4-D7 is verbonden met GPIO-pinnen 6, 5, 4 en 1 van RPI. Een zoemerwordt ook gebruikt voor piep wanneer een van de knoppen wordt ingedrukt door de kiezer. Hier hebben we een groene LED (D5) gebruikt om aan te geven dat het systeem klaar is en de kiezer zijn stem in de machine kan indienen door op de knop te drukken. Een 10k Pot wordt gebruikt om de helderheid van het LCD-scherm te regelen.
Hoe de code in Raspberry Pi uit te voeren:
1. Log eerst in op je Raspberry Pi met SSH met de standaard gebruikersnaam: 'pi' en wachtwoord: 'raspberry'. Hier hebben we SSH-client "Putty voor Windows" gebruikt om via Windows verbinding te maken met Pi. Als u Linux gebruikt, kunt u via SSH rechtstreeks verbinding maken met Pi. Er zijn veel tutorials op internet over 'Verbinding maken met Raspberry Pi via SSH', dus hier gaan we niet in op de details. Bekijk ook Hoe te beginnen met Raspberry Pi voor meer informatie over Pi, OS-installatie (Raspbian Jessie) en de hardware- en softwarevereisten.
2. Voer nu het onderstaande commando uit om een nieuw bestand te openen met de naam voting.c en plak de code (gegeven in de code sectie hieronder) in het bestand, gebruik de “shift + insert” toets om de code te plakken.
sudo nano stemmen. c
3. Druk na het intoetsen van de code op ctrl + x en druk vervolgens op y om de code op te slaan en druk op enter.
4. Maak nu de code uitvoerbaar met het gegeven commando:
cc -o stemmen stemmen. c -lwiringPi -std = c99
5. Voer tenslotte de code uit met het gegeven commando
sudo./stemmen
Programmering Toelichting:
Hier hebben we veel gebruikerskende C-taal gebruikt om de code te schrijven en de codering lijkt veel op Arduino-codering. We kunnen ook Python-taal gebruiken om dit project te bouwen.
Allereerst voegen we header-bestanden toe en definiëren we pinnen voor LCD; WiringPi.h header-bestand wordt gebruikt voor het besturen van de GPIO-pinnen van Pi. Initialiseer vervolgens enkele variabelen en pinnen voor het nemen van steminvoer en LED-indicaties.
# omvatten
Hierna hebben we richting gegeven aan alle gebruikte GPIO's in de void setup () functie .
void setup () {if (bedradingPiSetup () == - 1) printf ("ERROR"); pinMode (led1, OUTPUT); pinMode (led2, OUTPUT); pinMode (led3, OUTPUT); pinMode (led4, OUTPUT); pinMode (led5, OUTPUT); pinMode (buzz, OUTPUT); pinMode (RS, OUTPUT);……………….
In code hebben we de functie digitalRead in void main () gebruikt om de ingedrukte knop te lezen.
if (digitalRead (in1) == 0) {vote1 ++; tonen(); digitalWrite (led1, HIGH); zoemer(); digitalWrite (led1, LOW); wacht(); }
void show () functie wordt gebruikt voor het weergeven van steminformatie op het LCD met de naam van de kandidaat.
void show () {setCursor (0,0); print ("BJP Cong AAP Ex"); setCursor (1,1); sprintf (stem, "% d", stem1); print (stemmen); setCursor (6,1); sprintf (stem, "% d", stem2);………………..
Hier zijn nog enkele functies die in dit project worden gebruikt:
void buzzer () functie wordt gebruikt voor het piepen van de zoemer als indicatie dat er is gestemd. En void wait () fuction voor LED D5 (groene LED in hardware), die aangeeft dat het systeem klaar is om te stemmen, wanneer de LED is ingeschakeld.
void buzzer () {digitalWrite (buzz, HIGH); vertraging (1000); digitalWrite (buzz, LOW); } void wait () {digitalWrite (led5, LOW); vertraging (3000); }
void comapare () functie wordt gebruikt om het totaal aantal stemmen van elk van de kandidaten te vergelijken, om het resultaat te krijgen en om de status van het resultaat op het LCD te tonen.
void Compare () {clear (); print ("Even geduld…"); wacht(); if (stem1> stem2 && stem1> stem3 && stem1> stem4) {digitalWrite (led1, HIGH); voor (i = 0; i <2; i ++) {clear (); setCursor (0,0); print ("Gefeliciteerd……."); setCursor (0,1); print ("BJP gewonnen verkiezing");…………………
Controleer de volledige code hieronder.