Raspberry Pi 是基于ARM皮质的流行开发板,专为电子工程师和业余爱好者设计。这是一台单板计算机,功耗低,具有出色的处理速度和内存。Raspberry Pi可以像普通PC一样一次用于执行不同的功能,因此在您的掌上称为Mini Computer。
我们创建了一系列Raspberry Pi教程,其中涵盖了Raspberry Pi与所有基本组件的接口以及一些简单的Raspberry Pi项目。
在这里,我们将使用Raspberry Pi板构建一个电子投票机。我们都知道通过简单的按钮在选举中投票的电子投票机(EVM)。我们已经介绍了使用不同微控制器的电子投票机,例如带AVR微控制器的EVM和带Arduino的EVM的微控制器。我们还建造了一个投票机,其中的Voter通过RFID标签进行身份验证,因此只能计算经过身份验证的选票。
与我们以前的投票机项目相比,这种使用Raspberry Pi的电子投票机更加简单。
所需组件:
- 树莓派-1
- 16x2液晶屏-1
- 按钮-5
- 面包板-1
- 连接线
- 1K电阻-1
- 10K电阻-5
- 10K锅-1
- LED的-5
这个怎么运作:
在该项目中,我们使用四个按钮为四个候选人或政党投票。我们可以增加候选人的数量,但是为了更好地理解,我们在这里只使用了四个。当选民按任意四个按钮,然后在尊重政党或候选人的投票计数“,则每次增加一个。同时,LED闪烁,蜂鸣器发出一声哔哔声,表明已发出表决权。投票完成后,我们有一个“结果”按钮,以显示投票结果。当我们按下此按钮时,液晶屏上会显示获胜方的名称和编号。分配给每个政党的票数。
电路说明:
下面给出了使用Raspberry Pi的该EVM的电路图。 Raspberry Pi控制整个过程,例如读取按钮,增加投票数,生成结果并在LCD上显示所有内容。
在这里,我们使用Raspberry Pi 3板来执行项目中的所有操作,并使用connectioningPi库来选择和控制Raspberry Pi的GPIO引脚。我们也可以在这里使用Raspberry Pi 2。在这里,我们使用了五个按钮,其中四个按钮用于表决四个不同的候选对象/参与者,一个按钮用于在LCD上显示结果。这五个按钮直接与RPI3的GPIO引脚21至25相连,相对于每个引脚具有10K上拉电阻的接地。 Raspberry Pi连接了一个16x2 LCD。控制引脚RS,RW和En连接到GPIO引脚11,GND和10。数据引脚D4-D7连接到RPI的GPIO引脚6、5、4和1。一个蜂鸣器当任一按钮被按压选举人也用于蜂鸣声。在这里,我们使用了绿色LED(D5)来指示系统已准备就绪,投票者可以通过按按钮在机器中提交投票。10k Pot用于控制LCD的亮度。
如何在Raspberry Pi中运行代码:
1.首先,使用SSH登录到您的Raspberry Pi,默认用户名为“ pi”,密码为“ raspberry”。在这里,我们使用SSH客户端“ Windows的Putty”通过Windows与Pi建立连接。如果您使用的是Linux,则可以使用SSH直接连接到Pi。互联网上有很多关于“使用SSH与Raspberry Pi进行连接”的教程,因此这里不再赘述。您还应该检查如何从Raspberry Pi开始,以了解有关Pi,操作系统安装(Raspbian Jessie)及其硬件和软件要求的更多信息。
2.现在,运行以下命令以打开一个名为voting.c的新文件,并将代码(在下面的代码部分提供)粘贴到该文件中,使用“ shift + insert”键粘贴该代码。
须藤纳米投票
3.编写代码后,按ctrl + x,然后按y保存代码,然后按Enter。
4.现在,使用给定命令使代码可执行:
cc -o投票tinging.c -lwiringPi -std = c99
5.最后使用给定命令运行代码
须藤./voting
编程说明:
在这里,我们使用了许多用户熟悉的C语言来编写代码,并且其编码与Arduino编码非常相似。我们还可以使用Python语言来构建此项目。
首先,我们包含头文件并定义LCD的引脚。connectionPi.h头文件用于控制Pi的GPIO引脚。然后初始化一些变量和引脚以获取投票输入和LED指示。
#包括
之后,我们在 void setup()函数中 为所有使用的GPIO指明了方向。
void setup(){if(wiringPiSetup()==-1)printf(“ ERROR”); pinMode(led1,输出); pinMode(led2,输出); pinMode(LED3,输出); pinMode(led4,输出); pinMode(led5,输出); pinMode(蜂鸣,输出); pinMode(RS,输出);……………….
在代码中,我们在 void main()中 使用了 digitalRead 函数来读取按下的Button。
if(digitalRead(in1)== 0){投票1 ++; 节目(); digitalWrite(led1,HIGH); 蜂鸣器(); digitalWrite(led1,LOW); 等待(); }
void show() 函数用于在LCD上以候选人的姓名显示投票信息。
无效的show(){setCursor(0,0); print(“ BJP Cong AAP Ex”); setCursor(1,1); sprintf(vote,“%d”,vote1); 打印(投票); setCursor(6,1); sprintf(vote,“%d”,vote2);………………..
这是此项目中使用的更多功能:
void buzzer() 函数用于蜂鸣器蜂鸣,作为已投票的信号。和 空隙等待() 机能的研究为LED D5(绿色LED以硬件),这表明系统已准备好投票,当LED被接通。
无效的buzzer(){digitalWrite(buzz,HIGH); 延迟(1000); digitalWrite(buzz,LOW); } void wait(){digitalWrite(led5,LOW); 延迟(3000); }
void comapare() 函数用于比较每个候选人的总票数,以获取结果并在LCD上显示结果的状态。
void compare(){clear(); print(“请稍候…”); 等待(); if(vote1>投票2 &&投票1> vote3 &&投票1> vote4){digitalWrite(led1,HIGH); for(i = 0; i <2; i ++){clear(); setCursor(0,0); print(“ Congrates…….”); setCursor(0,1); 打印(“人民党当选了”);…………………
检查下面的完整代码。