将传感器连接到您的 Raspberry Pi 以在有毒气体出现时向您发出警告!
o 使用 Raspberry Pi 检测放屁,我们需要使用一个传感器,该传感器对构成 1% 胀气的一种或多种挥发性硫化合物(即使放屁发出气味的化合物)有响应。本质上,我们需要给树莓派一个鼻子。本项目推荐的传感器是 Figaro TGS2600。当空气进入传感器时,它会被一个小加热器供电,从而可以测量其电阻。这是通过将低水平的电力通过一个小的带电空气间隙来完成的。空气污染越多,阻力越小,导电性越好(如可变电阻器)。因此,传感器的输出是一个模拟电压,该电压根据空气的污染程度而上下波动。污染物越多,电压输出越高。
模拟与数字
我们还需要了解空气质量传感器为我们提供模拟信号,以及模拟信号和数字信号之间的区别。数字信号本质上是二进制的:1 或 0;开或关。另一方面,模拟信号具有开或关之间的完整范围。想想汽车方向盘:方向盘是模拟的,因为驾驶员可以进行全方位的转向。您可以非常轻柔地绕过一个长长的弯道,您可以将车轮完全锁定,或者在两者之间的任何位置。如果您想以数字方式驾驶汽车,您基本上只能左全锁和右全锁。
使用数字设备读取模拟信号
我们面临的挑战是能够在数字计算机上读取模拟信号。 Raspberry Pi GPIO 引脚可用作输入或输出。输出模式适用于您想要为 LED 或蜂鸣器之类的东西提供电压的情况。如果我们使用输入模式,一个 GPIO 引脚有一个我们可以在我们的代码中读取的值。如果引脚有电压进入,读数将为 1
(高 );如果引脚直接接地(无电压),读数将为 0
(低 )。所以引脚是数字的,只允许 1
或 0
.
我们如何解决这个问题?一种方法是使用 ADC 芯片(模拟到数字转换器),它将传感器的模拟电压转换为我们代码中的数字。但是,如果传感器的读数非常准确,您只需要使用 ADC被要求。实际上,我们只是想在检测到放屁时发出警报,以便每个人都可以跑!所以如果你仔细想想,这就是 数字检测。有 一个屁或没有 屁:开或关,二进制 1 或 0。我们不必担心来自空气质量传感器的模拟保真度。
我们已经知道传感器就像一个可变电阻器:空气质量越差,电阻越低,通过的电压就越大。从逻辑上讲,当传感器接触到一个屁时,输出电压应该会出现尖峰。因此,我们只需要检测这些电压尖峰并且可以 以数字方式完成。我们可以让它在出现尖峰时 GPIO 引脚从低电平变为高电平;然后我们可以在我们的代码中检测到这个变化并播放警报声音文件!
高低门槛
Raspberry Pi 如何知道 GPIO 引脚是高电平还是低电平?
这个问题的答案实际上是我们解决方案的一部分。 GPIO 引脚工作电压为 3.3 伏。因此,如果您在输出模式下将引脚设置为高电平,则该引脚将提供/提供 3.3 伏电压。但是,如果将其设置为输出低电平,它将接地但可以形成完成电路的返回路径。
在输入模式下,工作方式略有不同。您可能会假设引脚的读数在连接到 3.3 伏时为高电平,如果接地则为低电平。实际上有一个电压阈值 大约在 1.1 到 1.4 伏之间。低于阈值是低,高于阈值是高;所以例如 1.0 伏会读为低,尽管那里实际上有一些电压,而 1.6 伏会读为高,尽管这远低于 3.3。
如果我们使用一些电阻将空气质量传感器的输出电压降低到刚好低于 这个阈值,那么由放屁引起的尖峰会将它从低电平翻转到高电平,我们就有了数字放屁检测。
连接空气质量传感器
这是空气质量传感器的底视图。管脚号有以下作用:
- 加热器 (-)
- 传感器电极 (-)
- 传感器电极 (+)
- 加热器 (+)
所以我们需要适应两个不同的电路。首先是加热器 (引脚 1 和 4)用于给空气通电,另一个是传感器 本身(引脚 2 和 3)。传感器的输出 (-) 侧是我们连接电阻器的地方。拿起面包板,将传感器的四个引脚推入其中,使其跨越中心间隙,如下所示。您可能需要稍微弯曲引脚,但这不会损坏传感器。确保小标签的方向如图所示。
重要请阅读 |
---|
上图显示了 Raspberry Pi 型号 B,如果您使用的是 B+ 或新的 Pi 2,则前 26 个 GPIO 引脚完全相同。因此,您可以使用图中所示的相同引脚。 |
传感器可以在 5 伏电压下运行,但我们在这里将在 3.3 伏电压下运行,因为这对于 GPIO 输入使用更安全。使用跨接导线进行上图所示的橙色连接;这将为传感器的引脚 3 和 4(均为正极)提供 3.3 伏电压。您使用的电线的颜色无关紧要。接下来,如上图所示,将加热器的负极 (-) 端子直接接地。
我们仍然需要对传感器的负侧,面包板右上角的第 1 行做一些事情。
连接触发销
关闭 Raspberry Pi,如果它尚未关闭,请输入以下内容:
sudo pause
暂时拔掉电源;我们稍后再插上。
接下来,让我们将传感器的输出连接到 GPIO 引脚之一:这将是我们将在代码中监控的触发引脚,以查看是否发生了放屁。为此使用 GPIO 4。取一根跳线,进行下图所示的白色连接。
接下来取一个 47kΩ 电阻器(电阻器采用颜色编码以帮助您识别它们)并将其连接在传感器输出和接地之间,如上所示。这将吸走来自传感器输出的一部分电压,以帮助将其降至触发引脚的 GPIO 阈值的 1.1 至 1.4 伏区域。不过,这个单个电阻不足以完成工作,所以请继续阅读。
构建电阻梯形 DAC
我们现在面临的问题是,尽管增加了 47kΩ 电阻,但空气质量传感器的输出电压范围相当大。 0 伏是我们在真空中发现的电压,而最大 3.3 是我们从可怕的、令人眼花缭乱的、无声但致命的屁中看到的电压。根据空气的背景质量,传感器的输出电压可以在该范围内的任何位置。因此,我们需要一种可靠的方法,在不同的空气质量条件下,始终将该电压降至略低于 GPIO 阈值。
为此,我们需要另一个 可变电阻器,以便我们可以改变虹吸到地面的电压量。我们可以为此使用电位计,但在使用之前,您总是需要手动将其调整到背景空气。如果您想设置陷阱并等待毫无戒心的受害者,这并不理想。背景空气质量可在此期间自然变化,使闹钟响起不放屁。尴尬。
从我们的代码中控制它会好得多。然后我们可以对其进行编程,使其不断适应背景空气质量,如果空气质量发生变化,则疏水阀不需要人工干预。
我们可以在这里使用的一个巧妙技巧是电阻梯。这是我们可以在代码中独立打开和关闭一组重复电阻的地方。如果每个电阻具有不同的欧姆值,我们可以使用它们的不同组合来为我们提供一些近似于可变电阻器/电位器的行为。
理论
下一节可能看起来有点无聊,但所涵盖的主题将极大地帮助您理解该项目,因此我建议您不要跳过它!
下图示意 显示了梯形电阻器如何连接到 TGS2600 空气质量传感器。传感器的输出电压从引脚号2
出来 ,并且它连接到 GPIO 4。但是,在这之间,我们有几个地方可以吸出电压,以根据需要将电压降低到 GPIO 引脚阈值。
到目前为止只有 47kΩ R0
存在于您的面包板上,该线路直接接地。其他电阻(R1
R4
) 分别并联 到不同的 GPIO 引脚。这使我们可以对每个电阻器是打开还是关闭进行数字控制。如果我们将 GPIO 引脚配置为使用 INPUT
模式这会关闭电阻器,因为 GPIO 引脚在内部没有连接到任何东西。但是,如果我们将其设置为使用 OUTPUT
模式,然后将引脚驱动为低电平,这会将电阻器接地,并通过它虹吸一些电压。
关于并联电阻的注意事项。梯子的总阻力不是 所有导通电阻的总和。不过,如果您将电阻串联,那就是;那是因为电压需要依次流过每个电阻器。并联时,流过的电压会在每个电阻之间平均分配,效果是总电阻更小 .所以我们打开的电阻越多,总电阻越低,吸收到地的电压就越多。
由于梯形图是通过打开和关闭电阻器进行数字控制的,但会影响来自传感器的模拟电压,因此该电路可以称为数模转换器或简称为 DAC。这与前面提到的ADC相反。
理想情况下,我们需要以线性方式改变电阻,并拥有大量可能的开/关组合,以适应空气质量传感器输出电压的范围。考虑如果所有电阻的欧姆值都相同会发生什么;有多少可能的独特 可能有电阻值的组合吗?
欲了解更多详情:将传感器连接到您的 Raspberry Pi 以在有有毒气体时向您发出警告!
制造工艺
- Raspberry Pi 温度记录器
- Raspberry Pi 气象站
- 超声波传感器 (HC-SR04) + Raspberry Pi
- 使用 Raspberry Pi 的运动传感器
- Raspberry Pi 土壤湿度传感器
- 把你的树莓派变成仓鼠健身追踪器
- Raspberry Pi 温度和光传感器
- Raspberry Pi 传感器和执行器控制
- 如何将 Lego Mindstorms NXT 超声波传感器连接到 Raspberry Pi
- 使用 Raspberry Pi、DHT11 传感器和 Thingspeak 构建您的第一个物联网。
- Raspberry Pi 温度传感器
- 当你的设备对你说话时你会听吗?