一起玩转树莓派(20)——噪声监测

简介: 噪声污染是非常令人讨厌的一件事,长时间暴露在噪声中,不仅会使人心烦意乱,甚至还会影响我们的身心健康。本节,借助声音传感器,我们可以开发一个小型的噪声监测工具,当环境噪音过大时,发出提醒。

一起玩转树莓派(20)——噪声监测

噪声污染是非常令人讨厌的一件事,长时间暴露在噪声中,不仅会使人心烦意乱,甚至还会影响我们的身心健康。本节,借助声音传感器,我们可以开发一个小型的噪声监测工具,当环境噪音过大时,发出提醒。

一.声音传感器

声音传感器模块是一种将声波转换成电信号的元件。使用它可以方便的获取环境中的声音强度。本次实验,我们使用的声音传感器模块如下图所示:

如图所示,此传感器模块有4个对外引脚,其中AO引脚是模拟引号输出引脚,DO引脚是数字引号输出引脚。G引脚用来接地,+引脚接5V电源。

此传感器模块上还有两个LED指示灯,LED1是电源指示灯,只要传感器的正负极正常连通,此指示灯就会亮。LED2是声音检测指示灯,环境声音强度没有超过一定值时,此指示灯会熄灭,环境声音强度超过了一定数值后,此指示灯会亮。具体的阈值可以通过调节图中蓝色部分的可变电阻来进行调整。

本次实验我们使用的声音传感器模块既可以输出数字信号也可以输出模拟信号,对于数字信号,我们可以直接将其接树莓派的GPIO来进行接收,由于树莓派没有内置数模转换模块,因此对于模拟信号,我们需要使用PCF8591数模转换模块来读取模拟信号。

二. 实验

首先先确认下我们要使用的引脚,声音传感器的数字信号引脚可以直接连接树莓派的GPIO17(BCM编码),模拟引号引脚连接PCF8591的AINO。如下表:

PCF8591与树莓派:

PCF8591 树莓派
SCL SCL
SDA SDA
GND GND
VCC +5V

声音传感器模块与树莓派:

声音传感器 树莓派
G GND
+ +5V
DO GPIO17(BCM编码,对应物理编码11)

声音传感器与PCF8591:

声音传感器 PCF8591
AO AIN0

编写示例代码如下:

#SMBus (System Management Bus,系统管理总线) 
import smbus   #在程序中导入“smbus”模块
import RPi.GPIO as GPIO 
import time

bus = smbus.SMBus(1)         #创建一个smbus实例

# 通过PCF8591读取模拟信号

# 声音强度的模拟数据
def readData():
    #发送一个控制字节到设备 表示要读取AIN0通道的数据
    bus.write_byte(0x48,0x40)   
    bus.read_byte(0x48)         # 空读一次,消费掉无效数据
    return bus.read_byte(0x48)  # 返回某通道输入的模拟值A/D转换后的数字值

# 通过GPIO读取数字信号

# 设置使用的引脚编码模式
GPIO.setmode(GPIO.BOARD)
# 数字输出引脚 BCM 17
P = 11

# 引脚初始化
GPIO.setup(P, GPIO.IN)

while True:
    print('--------分割线----------')
    print('环境声音强度数字信号:', GPIO.input(P))
    data = readData()
    print('环境声音强度模拟信号:', readData())
    if data < 130:
        print("噪声过大,请注意!!!!!!!!!")
    time.sleep(2)

上面代码中设置模拟信号小于130则表示环境声音过强,需要注意,如果你运行上面的程序发现数值一直很小,可能是灵敏度设置过高所致,可以调节可变电阻来得到合适的灵敏度。

代码运行效果如下图所示:

本次实验并没有特别新颖的地方,所使用到的技术本系列之前博客中都有详细的介绍。

专注技术,懂的热爱,愿意分享,做个朋友
目录
相关文章
|
7月前
振弦采集仪在土木工程振动监测中的实验研究
振弦采集仪在土木工程振动监测中的实验研究
 振弦采集仪在土木工程振动监测中的实验研究
|
7月前
|
安全
振弦采集仪在土木工程振动监测中的实验研究
振弦采集仪在土木工程振动监测中的实验研究 振弦采集仪(String Vibrational Transducer)是一种常用于振动监测的仪器,广泛应用于土木工程领域。
振弦采集仪在土木工程振动监测中的实验研究
|
机器学习/深度学习 传感器 并行计算
【地震】基于伪谱法模拟地震波正演附matlab代码
【地震】基于伪谱法模拟地震波正演附matlab代码
|
编解码 运维
【轴承故障诊断】用于轴承故障诊断的集中时频分析研究(Matlab代码实现)
【轴承故障诊断】用于轴承故障诊断的集中时频分析研究(Matlab代码实现)
184 0
|
机器学习/深度学习 传感器 运维
【轴承故障检测】滚动轴承中进行基于振动的故障诊断研究(Matlab代码实现)
【轴承故障检测】滚动轴承中进行基于振动的故障诊断研究(Matlab代码实现)
157 0
|
传感器 监控 安全
红外雨量计(光学雨量传感器)检测降雨量,预防内涝
随着城市化进程的加快,城市内涝成为一个愈发严峻的问题。短时间内大量的降雨,不仅会给城市交通带来困难,也会对城市的基础设施和居民的生活造成很大的影响。因此,有效预防内涝也成为城市管理者和居民关注的焦点。
红外雨量计(光学雨量传感器)检测降雨量,预防内涝
|
传感器 安全
红外雨量计(光学雨量传感器)在预防地质灾害中怎样发挥作用
红外雨量计是一种利用红外线原理测量雨量的设备。在预防地质灾害中,红外雨量计可以发挥以下作用:
红外雨量计(光学雨量传感器)在预防地质灾害中怎样发挥作用
|
机器学习/深度学习 传感器 算法
【地震】基于有限差分 (FDTD) 模拟地震超材料(晶体)时域分析附matlab代码
【地震】基于有限差分 (FDTD) 模拟地震超材料(晶体)时域分析附matlab代码
|
传感器
多传感器时频信号处理:多通道非平稳数据的分析工具(Matlab代码实现)
多传感器时频信号处理:多通道非平稳数据的分析工具(Matlab代码实现)
107 0
|
机器学习/深度学习 传感器 安全
基于自适应线性调频模式分解实现铁路轴承故障诊断附matlab代码
基于自适应线性调频模式分解实现铁路轴承故障诊断附matlab代码