共计 1230 个字符,预计需要花费 4 分钟才能阅读完成。
树莓派是很多程序员都喜欢玩的,我个人也很喜欢玩,开源接触到很多关于 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 协议发送给树莓派,这样就很方便了。