树莓派是很多程序员都喜欢玩的,我个人也很喜欢玩,开源接触到很多关于linux的知识,也可以通过读取硬件的数据来学习关于数据库的知识。
前言
本文详解阐释了模拟信号和数字信号的区别,希望帮助到有需要的朋友。
数字信号
使用树莓派上的GPIO引脚,很容易向输出组件发送信号并打开或关闭。还可以检测输入组件是否打开或关闭。以这种方式工作的组件称为数字组件(Digital components)。
数字输出
LED是数字输出元件的一个例子。它可以是打开的,也可以是关闭的,两者之间没有任何价值。我们可以把ON和OFF状态看作是1或0。你可以发送一个1给LED LED就会亮了,当你给LED发送0给 LED就熄灭了。
图片描述
数字输入
一个按钮是数字输入组件。它可以是打开的,也可以是关闭的。当按钮被按下时,它向连接的树莓派GPIO引脚发送1。当按钮被释放时,它向GPIO引脚发送0。没有其他可以发送的值,因为你把按钮按到一半,幻想可以输出0.5。
图片描述
请看下面这个图,这个图显示了按钮被按压和释放的输入数据,当按压的时候输出1当释放的时候输出0。
图片描述
模拟信号
数字输入和输出组件在Raspberry Pi中很常见,因为GPIO引脚都是数字的。它们只能发送或接收1和0。
然而,并非所有组件都是数字的。有些被称为模拟组件。模拟部件可以在1和0之间发送和接收值。
模拟输出
电机是模拟输出元件的一个例子。你可以把它的值在1和0之间,这将控制电机的速度。如果你发送电机A 1,它将全速驱动。如果你把它发送0.5,它将以半速行驶。发送0将停止电机。
图片描述
模拟输入
模拟输入元件的一个例子是光相关电阻器(LDR)。当没有光照在部件上时,它将发送0,并且随着光的增加,光敏发送的值将逐渐增加,直到它达到最大值1。
图片描述
下图显示了从LDR发送的信号在一天当中24小时的变化,随着光线越亮值越大,光线越暗值越小。
图片描述
使用树莓派的模拟组件比使用数字组件更加困难。
为了使用GPIO引脚的模拟输出组件,您需要使用一种称为脉冲宽度调制(PWM)的技术。这向分量发送1秒和0秒的非常快的脉冲,当将其作为平均值时,可以将其接收为介于1和0之间的值。
请看下面的图表。蓝线显示数字信号,在一段时间内,从0移动到1,然后再次返回。信号为1的是总时间的三分之一,剩下的三分之二是0。
然后这个平均值约为0.33,这将是模拟组件接收到的值。你可以看到这是图上的红线。
图片描述
要使用模拟输入组件与GPIO引脚,您需要使用模拟到数字转换器(ADC),将模拟信号转换为数字信号。你可以买小的adc在你的电路使用。另外一种选择是在电路中使用电容和模拟元件。
总结
在树莓派上使用模拟输出是采用pwm技术,如果想要读取模拟输入那就需要ADC模拟到数字转换器,因为树莓派上没有ADC,因此我认为如果我们想要读取类似LDR或者模拟输入的情况,我们可以使用类似Nodemcu这种自带ADC的板子,然后再通过MQTT协议发送给树莓派,这样就很方便了。