Raspberry Pi 是基于ARM体系结构处理器的主板,专为电子工程师和业余爱好者设计。PI是目前最受信任的项目开发平台之一。PI具有更高的处理器速度和1 GB RAM,可用于许多高端项目,例如图像处理和物联网。使用PI可以完成很多很酷的事情,但是一个可悲的特性是它没有内置的ADC模块。
仅当Raspberry Pi可以与传感器接口时,它才能了解现实世界的参数并与之交互。那里的大多数传感器都是模拟传感器,因此我们应该学习使用带有Raspberry Pi的外部ADC模块IC连接这些传感器。在这个项目中,我们将学习如何将Flex传感器与Raspberry Pi连接起来并在LCD屏幕上显示其值。
所需材料:
- Raspberry Pi(任何型号)
- ADC0804集成电路
- 16 * 2 LCD显示屏
- 柔性传感器
- 电阻和电容
- 面包板或穿孔板。
ADC0804单通道8位ADC模块:
在继续进行下一步之前,让我们了解此ADC0804 IC以及如何将其与raspberry pi一起使用。 ADC0804是单通道8位IC,这意味着它可以读取单个ADC值并将其映射到8位数字数据。 Raspberry Pi可以读取这些8位数字数据,因此值将为0-255,因为2 ^ 8为256。如下面的IC的引脚图所示,DB0至DB7引脚用于读取这些数字。价值观。
现在,这里另一个重要的事情是, ADC0804以5V工作 ,因此它以5V逻辑信号提供输出。在8引脚输出(代表8位)中,每个引脚都提供+ 5V输出以表示逻辑“ 1”。因此问题在于PI逻辑为+ 3.3v,因此您无法将+ 5V逻辑提供给PI的+ 3.3V GPIO引脚。如果给PI的任何GPIO引脚提供+ 5V电压,则电路板会损坏。
因此,要使逻辑电平从+ 5V降压,我们将使用分压器电路。我们已经讨论过分压器电路,之前对其进行了进一步的说明。我们要做的是,使用两个电阻将+ 5V逻辑分为2 * 2.5V逻辑。因此,除法运算后,我们将为Raspberry Pi提供+ 2.5v逻辑。因此,只要ADC0804提供逻辑“ 1”,我们在PI GPIO引脚上就会看到+ 2.5V,而不是+ 5V。在此处了解有关ADC的更多信息:ADC0804简介。
下面是我们在Perf板上构建的使用ADC0804的ADC模块 的图片:
电路图和说明:
下面显示了将Flex传感器与Raspberry Pi接口的完整电路图。相同的解释如下。
这个树莓派挠性传感器 电路似乎有很多导线,有点复杂,但是如果仔细看,大多数导线是直接从LCD和8位数据引脚连接到Raspberry pi的。下表将帮助您建立和验证连接。
引脚名称 |
树莓针编号 |
Raspberry Pi GPIO名称 |
液晶显示器 |
销4 |
地面 |
LCD Vdd |
销6 |
Vcc(+ 5V) |
液晶显示器 |
销4 |
地面 |
液晶显示器 |
销38 |
GPIO 20 |
液晶RW |
销39 |
地面 |
液晶屏 |
销40 |
GPIO 21 |
液晶D4 |
销3 |
GPIO 2 |
液晶D5 |
销5 |
GPIO 3 |
液晶D6 |
销7 |
GPIO 4 |
液晶D7 |
销11 |
GPIO 17 |
ADC0804 Vcc |
销2 |
Vcc(+ 5V) |
ADC0804 B0 |
针脚19(通过5.1K) |
GPIO 10 |
ADC0804 B1 |
针脚21(通过5.1K) |
GPIO 9 |
ADC0804 B2 |
针脚23(通过5.1K) |
GPIO 11 |
ADC0804 B3 |
针脚29(通过5.1K) |
GPIO 5 |
ADC0804 B4 |
针脚31(通过5.1K) |
GPIO 6 |
ADC0804 B5 |
针脚33(通过5.1K) |
GPIO 13 |
ADC0804 B6 |
引脚35(通过5.1K) |
GPIO 19 |
ADC0804 B7 |
引脚37(通过5.1K) |
GPIO 26 |
ADC0804 WR / INTR |
销15 |
GPIO 22 |
从此您可以使用下图确定Raspberry上的引脚号。
像所有ADC模块一样,ADC0804 IC也需要时钟信号才能工作,幸运的是,该IC具有内部时钟源,因此我们只需要向该电路中的CLK in和CLK R引脚添加RC电路即可。我们已经使用了10K和105pf的值,但是我们可以使用任何接近的值,例如1uf,0.1uf,0.01uf也应该起作用。
然后,为了连接Flex传感器,我们使用了一个带有100K电阻的分压器电路。当Flex传感器弯曲时,其两端的电阻会发生变化,并且电阻两端的电位降也会发生变化。该压降由ADC0804 IC测量,并相应地生成8位数据。
检查与Flex Sensor相关的其他项目:
- Flex传感器与AVR微控制器的接口
- 使用Flex传感器的基于Arduino的愤怒的小鸟游戏控制器
- 柔性传感器控制伺服电机
- 通过使用Arduino敲击手指来生成音调
编程Raspberry Pi:
一旦完成连接,我们应该使用Raspberry Pi读取这8位的状态并将其转换为Decimal,以便我们可以使用它们。在页面末尾提供了用于执行此操作并在LCD屏幕上显示结果值的程序。进一步,下面将代码解释为小垃圾。
我们需要一个LCD库来将LCD与Pi相连。为此,我们使用了shubham开发的库,它将帮助我们以四线模式将16 * 2 LCD显示器与Pi进行接口。我们还需要库来利用时间和Pi GPIO引脚。
注意 :应该从此处下载lcd.py,并将其放置在保存该程序的相同目录中。只有这样,代码才能编译。
导入液晶屏#通过[email protected]导入LCD库导入时间#导入时间导入RPi.GPIO为GPIO #GPIO将仅作为GPIO
的LCD引脚定义被分配给变量,如下所示。请注意,这些数字是GPIO引脚号,而不是实际的引脚号。您可以使用上表将GPIO号与引脚号进行比较。阵列二进制将包含所有数据引脚号,而阵列位将存储所有GPIO引脚的结果值。
#LCD引脚定义D4 = 2 D5 = 3 D6 = 4 D7 = 17 RS = 20 EN = 21二进制=(10,9,11,5,6,13,19,26)#连接到DB0-的引脚号数组DB7位=#8位数据的结果值
现在,我们必须定义输入和输出引脚。七个数据引脚将作为输入引脚,触发引脚(RST和INTR)将作为输出引脚。根据数据手册,只有在特定时间内触发输出引脚为高电平时,我们才能从输入引脚读取8位数据值。由于我们已经在二进制数组中声明了二进制引脚,因此可以使用 for 循环进行声明,如下所示。
对于二进制二进制文件:GPIO.setup(binary,GPIO.IN)#所有二进制引脚为输入引脚#触发引脚GPIO.setup(22,GPIO.OUT)#WR和INTR引脚为输出
现在,使用LCD库命令,我们可以初始化LCD模块并显示一条小的介绍性消息,如下所示。
mylcd = lcd.lcd()mylcd.begin(D4,D5,D6,D7,RS,EN)#Intro消息mylcd.Print(“ Flex Sensor with”)mylcd.setCursor(2,1)mylcd.Print(“ Raspberry Pi“)time.sleep(2)mylcd.clear()
在无限 while 循环内,我们开始读取二进制值,将其转换为十进制并在LCD上更新结果。如前所述,在读取ADC值之前,应在特定时间内使触发引脚为高电平,以激活ADC转换。这是通过使用以下几行完成的。
GPIO.output(22,1)#打开触发时间。睡眠(0.1)GPIO.output(22,0)#关闭触发
现在,我们应该读取8数据引脚并更新bits数组中的结果。为此,我们使用 for 循环将每个输入引脚与True和False进行比较。如果为true,则将各个位数组设置为1,否则将其设置为0。这是将所有8位数据分别设置为0和1,分别对应读取的值。
#读取输入引脚并更新范围(8)中i的位数组结果:if(GPIO.input(binarys)== True):位= 1 if(GPIO.input(binarys)== False):位= 0
一旦更新了bits数组,就应该将该数组转换为十进制值。这不过是二进制到十进制的转换。对于8位二进制数据,2 ^ 8是256。因此,我们将获得从0到255的十进制数据。在python中,运算符“ **”用于查找任何值的幂。由于 位 以MSB开头,因此我们将其乘以2 ^(7位)。这样,我们可以将所有二进制值转换为十进制数据,然后将其显示在LCD上
#使用范围(8)中i的位数组计算十进制值:十进制=十进制+(位*(2 **(7-i)))
一旦我们知道了十进制值,就很容易计算出电压值。我们只需要乘以19.63。因为对于8位5VADC,每个位的类比为19.3毫伏。所得的电压值是ADC0804 IC的引脚Vin +和Vin-两端出现的电压值。
#计算电压值电压=十进制* 19.63 * 0.001#一个单位为19.3mV
使用电压值,我们可以确定弯曲传感器的弯曲方式以及弯曲方向。在下面的几行中,我将读取的电压值与预定的电压值进行了比较,以指示Flex传感器在LCD屏幕上的位置。
#比较电压和传感器mylcd.setCursor(1,1)的显示状态,如果(电压> 3.8):mylcd.Print(“向前弯曲”)elif(电压<3.5):mylcd.Print(“向后弯曲”)否则: mylcd.Print(“稳定”)
同样,您可以使用电压值执行希望Raspberry Pi执行的任何任务。
使用Raspberry Pi在LCD上显示Flex传感器值:
该项目的工作非常简单。但是,请确保已下载lcd.py头文件,并将其放置在当前程序所在的目录中。然后使用面包板或穿孔板在电路图中显示连接,并在Pi上运行以下程序,您应该可以正常工作。您的设置应如下所示。
如图所示,LCD将显示十进制值,电压值和传感器位置。只需向前或向后弯曲传感器,您就应该能够看到电压和十进制值有所变化,并且还会显示状态文本。您可以连接任何传感器,然后注意其两端的电压会变化。
可以在下面的视频中找到该教程的完整工作。希望您理解该项目并喜欢构建类似的东西。如果您有任何疑问,请将其留在评论部分或论坛中,我将尽力回答。