首页 - 神途礼包 > 用树莓派DIY“啪啪”声控开关

用树莓派DIY“啪啪”声控开关

发布于:2024-05-30 作者:admin 阅读:114

安装树莓派的 GPIO

1、访问树莓派终端。你可以通过 桌面或使用 PuTTY 等远程登录工具来操作。

2、启用 SSH 。请点击查看,了解如何通过SSH登录树莓派。

3、运行以下脚本,安装 GPIO 工具。

树莓派拍手开关将激活 LED 灯。发送信号让它运行,在此,需要使用 GPIO 引脚,使用树莓派 GPIO 来控制它们。

pip install RPi.GPIO

安装

拍手动力机制将通过麦克风输入进行控制。要在脚本中使用音频,需要安装 。安装很简单,只需运行以下脚本即可。

sudo apt-get install python-pyaudio

安装树莓派“拍手”脚本

我使用的拍手检测脚本是由 在上创建的。

可以在项目文件库中下载。

代码如下:

#!/usr/bin/python
import pyaudio
import sys
import thread
from time import sleep
from array import array
import RPi.GPIO as GPIO
clap = 0
wait = 2
flag = 0
pin = 24
exitFlag = False    
def toggleLight(c):
    GPIO.output(c,True)
    sleep(1)
    GPIO.output(c,False)
    print("Light toggled")
def waitForClaps(threadName):
    global clap
    global flag
    global wait
    global exitFlag
    global pin
    print "Waiting for more claps"
    sleep(wait)
    if clap == 2:
        print "Two claps"
        toggleLight(pin)
    # elif clap == 3:
    #     print "Three claps"
    elif clap == 4:
        exitFlag = True
    print "Claping Ended"
    clap = 0
    flag = 0
def main():
    global clap
    global flag
    global pin
    chunk = 1024
    FORMAT = pyaudio.paInt16
    CHANNELS = 1
    RATE = 44100
    threshold = 3000
    max_value = 0
    p = pyaudio.PyAudio()
    stream = p.open(format=FORMAT,
                    channels=CHANNELS, 
                    rate=RATE, 
                    input=True,
                    output=True,
                    frames_per_buffer=chunk)
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(pin, GPIO.OUT)
    try:
        print "Clap detection initialized"
        while True:
            data = stream.read(chunk)
            as_ints = array('h', data)
            max_value = max(as_ints)
            if max_value > threshold:
                clap += 1
                print "Clapped"
            if clap == 1 and flag == 0:
                thread.start_new_thread( waitForClaps, ("waitThread",) )
                flag = 1
            if exitFlag:
                sys.exit(0)
    except (KeyboardInterrupt, SystemExit):
        print "\rExiting"
        stream.stop_stream()
        stream.close()
        p.terminate()
        GPIO.cleanup()
if __name__ == '__main__':
    main()

请将其放在/home/pi目录下。

连接麦克风

树莓派通过麦克风收集拍手的声音,我使用 USB 麦克风。请将你的首选设备连接到树莓派。

根据房间里的噪音水平,你可能会发现不同麦克风的收音音频效果不一样。你可以使用在文本编辑器来编辑拍手脚本,手动调整拍手阈值。该项目需要对麦克风和拍手脚本设置进行一定程度的微调。

连接输出设备

触发“拍手”的设备是由你自己决定的。你可以选择激活特定设备、运行程序、播放特定声音、或其他由 脚本触发的内容。

本教程中,使用2个拍子点亮 LED,4个拍子关闭 LED 。

将触发的设备连接到 GPIO 引脚。设置LED的接线电路如图所示。根据不同的 LED,你可能需要一个电阻。

测试拍手的次数

重启树莓派。打开终端或使用 SSH 连接到树莓派。运行 clap.py。

sudo python clap.py

拍手!如果一切正常,需要注册并检查终端确认。如果检测到拍手,程序将打出一行文字。

这是你微调麦克风灵敏度和调整拍击脚本设置的机会。尝试使用阈值限制来减少因拍手而检测到的额外噪音。

设置开机启动

把 clap.py 添加到 启动列表中。使用以下命令打开 文件。

crontab -e

在文件的底部,添加一行。

@reboot nohup python clap.py &

保存文件并关闭。现在,你的树莓派将在启动时自动开始侦听拍手声了。

测试成品

一切完成后,重新启动树莓派。

当它启动时,树莓派应该立即启动拍手检测脚本。大概10-20秒后即可拍手检测!

你现在可以用拍手去控制你想开关的任何设备!

via

这是一篇发布于 5年 前的文章,其中的信息可能已经有所发展或是发生改变,请了解。

6,136

二维码

扫一扫关注我们

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,请告知我们,本站将立刻删除涉嫌侵权内容。

相关文章