0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样使树莓派进入房间时播放音乐

454398 来源:网络整理 作者:网络整理 2019-11-29 11:47 次阅读

您是否曾经想过个人欢迎回家?有了Raspberry Pi和一些简单的组件,您就可以!在这个简单的项目中,我们将使用簧片开关在门打开时触发主题曲。尽管您可以使用相同的电路在该项目中使用几乎任何其他微控制器,但在这里我们将使用Raspberry Pi作为控制器。这是一个演示。

您将需要

您可能已经拥有制作所需的所有零件,除了簧片开关(大约$ 2-3),或者您可以得到一包5个,刚好超过8美元。

一个Raspberry Pi(任何型号都可以使用)。

1 x 220欧姆电阻

1 x 1K欧姆电阻。

3 x 10K欧姆电阻。

1 x磁簧开关。

1 x LED

2个按钮开关。

面包板。

连接线。

电脑扬声器或类似产品

进入房间后,我们将使用Raspberry Pi播放歌曲,并在面包板上设计带有按钮的电路以延迟激活它,并停止程序。

该项目虽然主要是为了娱乐,但它涵盖了DIY家庭自动化以及DIY家庭安全中许多应用程序的基础。

入门

让我们从制作电路开始。确保您的Pi没电,并按如下所示设置电路:

怎样使树莓派进入房间时播放音乐

LED连接到我们pi的引脚7。两个按钮开关分别连接到引脚11和13,簧片开关连接到引脚15。我们的电源流向引脚1(3v3)和引脚6(Gnd)。

请确保检查所有内容均在正确的位置。

在测试该项目时,它可能有助于将簧片开关置于您的面前,以便您轻松切换它打开或关闭。在这种情况下,舌簧开关已经安装在门上方。项目启动并运行后,您可以使用磁带将开关暂时连接到门上,或者如果您更有信心,可以将其更永久地连接以用于将来的项目中!

将Pi的3.5mm插孔输出连接到扬声器系统。一旦所有内容放在一起,它应该看起来像这样:

请注意,此处使用的面包板具有电源轨,与Fritzing图相反

现在打开您的Pi的电源,并使用SSH访问它,以便我们可以访问终端。如果您不确定如何执行此操作,本指南可以为您提供帮助。如果您将Raspberry Pi与显示器,鼠标和键盘一起使用,请跳过此步骤并打开终端。

在开始之前,值得检查您是否最新。在终端中输入sudo apt-get update。

现在我们可以继续让Pi与电路进行通讯了。

测试设置

开始,让我们使用一个简单的程序检查电路。如果您确信到目前为止一切都正确,您可以跳过此步骤,尽管我建议您这样做,因为这样可以避免以后出现头痛。

如果您以前从未使用过Python编程并且感到有点畏缩,有很多很棒的网站可以帮助您入门。

在终端中,创建一个新脚本:

nano test.py

打开后,将此代码添加到文件中,然后按Ctrl-C退出,并遵循保存对话框:

#This code was written for an article on www.MakeUseOf.com by Ian Buckley.

import RPi.GPIO as GPIO

import time

GPIO.setwarnings(False)

GPIO.setmode(GPIO.BOARD)

GPIO.setup(7,GPIO.OUT)

GPIO.setup(11,GPIO.IN)

GPIO.setup(13,GPIO.IN)

GPIO.setup(15,GPIO.IN)

while True:

GPIO.output(7,GPIO.HIGH)

if (GPIO.input(11)==1):

print(“Button on GPIO 11”)

time.sleep(1)

if (GPIO.input(13)==1):

print(“Button on GPIO 13”)

time.sleep(1)

if (GPIO.input(15)==1):

print(“Button on GPIO 15”)

time.sleep(1)

GPIO.cleanup()

此代码读取按钮的值并打印到当它们改变时的屏幕。两个按钮具有下拉电阻,因此按下时它们报告为高电平。只要其随附的磁铁闭合,磁簧开关就会报告为HIGH。

运行程序:

python test.py

当您按下两个按钮并将磁铁从簧片开关上拉开时,您应该会看到LED亮起,并向屏幕报告。如果您在按按钮时没有收到反馈,请再次检查电路,并确保一切均已连接。完成测试后,请按 CTRL-C 停止程序。

现在我们可以编写一个简单的程序设置,触发和重置我们的门传感器。我们将遍历各部分的代码,并简要说明每个部分的功能,但是如果您想向下滚动完整的代码以查看完整的内容,则可以使用。

我们需要从导入一些模块开始:

import Rpi.GPIO as GPIO

import pygame.mixer

import time

我们将使用 Pygame 模块播放音乐。它是Raspbian Jessie的标准配置,并且是编写Python游戏和许多其他出色项目所需的一切的强大库。

我们将使用名为 active 的变量决定我们的系统是否处于活动状态。让我们定义几个为我们执行此操作的函数:

def activeSetup():

global active

active=0

print(“Currently Not Active”)

def activeState():

global active

if active==1:

active=0

GPIO.output(7,GPIO.LOW)

print(“Currently Not Active”)

elif active==0:

print (“Activating in 10 seconds”)

for x in range(0,10):

GPIO.output(7,GPIO.HIGH)

time.sleep(0.5)

GPIO.output(7,GPIO.LOW)

time.sleep(0.5)

active=1

GPIO.output(7,GPIO.HIGH)

print(“Currently Active”)

else: return

此处的第一个函数创建一个名为 active 的变量,并将其设置为0。给活动状态一个数值意味着,如果您打算以后扩展程序以具有不同的活动状态,则可以对它们进行相应编号。尽管它可能不是世界上最好的Python编程,但对于这个项目来说已经足够了。

调用时的第二个函数检查系统是否处于活动状态(或 active == 1 )。如果是,它将设置系统为非活动状态( active == 0 ),关闭LED并打印到控制台。如果不是,那么它会为您提供10秒钟的倒数时间,使其离开LED闪烁的房间,然后继续显示系统处于活动状态。

现在,我们可以定义一个函数来观察我们的磁簧开关:

def watchDoor():

global playing

playing = False

while True:

if active==1 and GPIO.input(15)==1 and playing == False:

playing=True

pygame.mixer.music.play()

if GPIO.input(13)==1:

print(“Stop button pressed: Exiting”)

pygame.mixer.music.stop()

break

if GPIO.input(11)==1:

activeState()

time.sleep(0.5)

我们在这里创建了另一个名为 playing 的变量-只是为了阻止程序尝试在出现以下情况时反复开始播放

在while循环中,第一个if语句开始播放音乐(我们还没有音乐,但不用担心,它来了)。仅当系统处于活动状态,簧片开关打开且尚未播放时,音乐才能开始播放。

第二个if语句用于退出按钮。如果按下此按钮,音乐将停止并且程序将退出。

第三个if语句用于切换系统是否处于活动状态。此处的 time.sleep 功能是防止在按下按钮时读取多个按钮。

现在是时候设置Pi的引脚了。

GPIO.setmode(GPIO.BOARD)

GPIO.setup(7, GPIO.OUT,initial=GPIO.LOW)

GPIO.setup(11,GPIO.IN)

GPIO.setup(13,GPIO.IN)

GPIO.setup(15,GPIO.IN)

如果您在使用Pi之前已经做过任何实验,那么您应该已经熟悉了。引脚7设置中的 initial = GPIO.LOW 参数将在初始化后立即将其设置为低电平。

现在,我们可以调用函数,将系统设置为不

activeSetup()

音乐大师!

这时,我们应该开始考虑要播放的音乐。您可以选择所需的任何音乐文件,但是我们现在将选择适合所有人的内容。如果您观看YouTube,您可能已经很熟悉Kevin MacLeod的音乐。让我们下载他的一首美妙的乐曲,称为“独眼大师”。这些内容以及他网站上的许多音乐均已获得知识共享(Creative Commons)的许可,并且有很多充分的理由将这些许可的内容用于您的项目。

回到我们的代码中,我们需要启动Pygame混音器并加载我们的音乐。

pygame.mixer.init(44100,-16,2,1024)

pygame.mixer.music.set_volume(1.0)

name = “One-eyed Maestro.mp3”

pygame.mixer.music.load(name)

print(“Loaded track - ”+ str(name))

此块的第一行启动 Pygame 混音器。括号中的最后一个参数是缓冲区,该缓冲区控制播放声音的延迟。如果以后播放音乐时出现断断续续的播放,请尝试将此数字增加到4096。在Pi 3上可以正常使用的设置。

如果将音乐文件下载到其他目录,您的 door.py 程序,定义名称变量时需要在方括号内提供完整路径。

现在剩下要做的就是建立一个循环

while True:

if(GPIO.input(13)==1):

print(“Stop button pressed: Exiting”)

pygame.mixer.music.stop()

break

if(GPIO.input(11)==1):

activeState()

time.sleep(0.5)

if(active==1):

watchDoor()

break

GPIO.cleanup()

此while循环等待来自任一按钮的输入,然后退出或将状态更改为活动状态相应地。如果活动状态变为1,则将调用我们之前定义的 watchDoor 函数,并且在下次打开门时将播放我们的乐曲。我们还调用 GPIO.cleanup()来重置退出时的引脚,这通常是对Raspberry Pi上所有编程的一个好习惯。

这就是我们要做的一切启动并运行该项目,下面是完整的代码:

import RPi.GPIO as GPIO

import pygame.mixer

import time

def activeSetup():

global active

active=0

print(“Currently Not Active”)

def activeState():

global active

if active==1:

active=0

GPIO.output(7,GPIO.LOW)

print(“Currently Not Active”)

elif active==0:

print (“Activating in 10 seconds”)

for x in range(0,10):

GPIO.output(7,GPIO.HIGH)

time.sleep(0.5)

GPIO.output(7,GPIO.LOW)

time.sleep(0.5)

active=1

GPIO.output(7,GPIO.HIGH)

print(“Currently Active”)

else: return

def watchDoor():

global playing

playing = False

while True:

if active==1 and GPIO.input(15)==1 and playing == False:

playing=True

pygame.mixer.music.play()

if GPIO.input(13)==1:

print(“Stop button pressed: Exiting”)

pygame.mixer.music.stop()

break

if GPIO.input(11)==1:

activeState()

time.sleep(0.5)

GPIO.setmode(GPIO.BOARD)

GPIO.setup(7, GPIO.OUT,initial=GPIO.LOW)

GPIO.setup(11,GPIO.IN)

GPIO.setup(13,GPIO.IN)

GPIO.setup(15,GPIO.IN)

activeSetup()

pygame.mixer.init(44100,-16,2,1024)

pygame.mixer.music.set_volume(1.0)

name = “One-eyed Maestro.mp3”

pygame.mixer.music.load(name)

print(“Loaded track - ”+ str(name))

while True:

if(GPIO.input(13)==1):

print(“Stop button pressed: Exiting”)

pygame.mixer.music.stop()

break

if(GPIO.input(11)==1):

activeState()

time.sleep(0.5)

if(active==1):

watchDoor()

break

GPIO.cleanup()

如果您在此处向下滚动以立即获取完整的代码,请记住您仍然需要将音乐下载到您的Pi上以使其正常工作!

现在,您应该可以正常运行欢迎的主题音乐了!将簧片开关安装到门上,然后尝试一下。令人尴尬的跳舞是可选的,但建议这样做。

该项目涵盖了各种形式的家庭监控,安全性和自动化的基础知识,希望它也很有趣!

现在您已经走了这么远,为什么停在那里?您可以添加更多轨道,并让程序从列表中随机选择一个。您可以添加一个中继,并在输入时触发其他对象。如果您有家庭音乐系统,为什么不为每个房间都准备主题曲呢?

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 树莓派
    +关注

    关注

    116

    文章

    1707

    浏览量

    105627
收藏 人收藏

    评论

    相关推荐

    使用TLV320AIC3254EVM-U用PPS控制时候播放音乐,突然中断,然后又恢复,为什么?

    我使用TLV320AIC3254EVM-U 用PPS 控制时候播放音乐,突然中断,然后又恢复。出现频率很高。用TI的固件并用CS软件播放时候没有出现这个问题。 请问大家我需要做什么部分参数设置?power tune or 其他?
    发表于 11-01 07:15

    TPA3116加了MUTE电路后播放音乐音量开到最大喇叭出现杂音怎么解决?

    TPA3116加了MUTE电路后播放音乐音量开到最大喇叭出现杂音(低音最明显)
    发表于 10-24 07:23

    树莓gpio有什么用,树莓gpio接口及编程方法

    一、树莓GPIO的用途 树莓(Raspberry Pi)是一款小巧、功能强大的单板计算机,广泛应用于编程教育、物联网项目、家庭媒体中心等领域。GPIO(General Purpos
    的头像 发表于 10-22 18:09 839次阅读

    什么是树莓树莓是什么架构的

    什么是树莓 树莓(Raspberry Pi,简写为RPi,别名为RasPi/RPI)是由英国“Raspberry Pi 慈善基金会”开发的一款为学习计算机编程教育而设计的微型电脑。
    的头像 发表于 10-22 17:33 848次阅读

    TAS5733L按照初始化的寄存器配置,播放音乐无声是怎么回事?

    按照贵司提供的初始化的寄存器配置(如附件)设置,读取0x05,0x06也是设定的值。播放音乐此时仍然无声。 请问,是否还有额外的寄存器需要配置? 谢谢!
    发表于 10-21 07:41

    树莓的功能用途是什么

    、科研、工业控制、物联网、多媒体播放、家庭自动化等领域。 树莓(Raspberry Pi)是一种小型、低成本的单板计算机,由英国的Raspberry Pi基金会开发,其功能和用途非常广泛。以下是
    的头像 发表于 08-30 18:01 2649次阅读

    树莓装ubuntu和raspbian哪个更好

    树莓(Raspberry Pi)是一款由英国树莓基金会开发的单板计算机,广泛应用于教育、科研、物联网等领域。树莓
    的头像 发表于 08-30 15:41 1300次阅读

    linux开发板与树莓的区别

    操作系统的微型计算机,主要用于教育、编程、媒体播放等领域。 硬件配置 Linux开发板:Linux开发板的硬件配置因厂商和型号而异,通常包括处理器、内存、存储、网络接口等。 树莓树莓
    的头像 发表于 08-30 15:34 962次阅读

    如何通过BLE播放音频?

    现在是我有一个android app,有一块esp32板子上面有喇叭,板子刷了a2dp_sink例子的固件。如果用bluetooth 和板子pair之后,可以播放音乐。 现在要求不用bluetooth,而是用ble连接,然后播放音乐,请问可以实现吗?求指点迷津,谢谢。
    发表于 06-26 06:36

    树莓5,Raspberry Pi 5 评测

    借鉴了早期的板子。这意味着树莓5 需要一个新的外壳。除了接口的变化之外,还有一些细微的差别,使为旧版树莓 B 型设计的外壳不再兼容。 有
    发表于 06-19 14:51

    请问用蜂鸣器播放音乐的时候如何同时播放两段音乐

    我用 PWM 控制的音乐播放,可以按照乐谱播放音符 但现在有个需求,是在播放背景音乐的时候同时叠加一个前景
    发表于 06-14 08:23

    KT148A语音芯片串口版本播放音乐的时候,直接导致单片机工作异常

    在使用你们KT148A串口版本播放音乐的时候,直接导致单片机工作异常,测了一下供电发现每次播放音乐的时候,供电会有很大波动。看了一下你们的手册,说是带载能力不够,但是我把供电接出来,接到你们的测试板上时,单片机又正常工作了
    的头像 发表于 05-07 10:50 495次阅读
    KT148A语音芯片串口版本<b class='flag-5'>播放音乐</b>的时候,直接导致单片机工作异常

    串口音乐播放IC:音乐播放的新革命

    串口音乐播放IC,这是一种革命性的音乐播放技术,正在逐步改变我们的音乐生活。那么,它到底是什么?它的优势在哪里?又能为我们带来什么样的便利呢
    的头像 发表于 05-06 14:32 598次阅读

    蓝牙连接手机播放音乐的同时传输少量数据,那些蓝牙芯片可以实现呢

    蓝牙连接手机播放音乐的同时连接另一蓝牙芯片传输少量数据,那些蓝牙芯片可以实现呢? 这个需求,其实就是双模的需求 简单描述就是:播放音乐的同时,还可以连接ble,进行数据的传输。二者同时进行,互不
    的头像 发表于 04-30 11:26 712次阅读
    蓝牙连接手机<b class='flag-5'>播放音乐</b>的同时传输少量数据,那些蓝牙芯片可以实现呢

    树莓主板如何连接电脑

    连接树莓派到电脑是一个非常有用的功能,它可以让我们在电脑上进行树莓的操作和管理。本文将详细介绍如何连接树莓主板到电脑。我会从准备工作开始
    的头像 发表于 01-07 15:40 1966次阅读