1 如何使用Raspberry Pi设置登场音乐-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

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

3天内不再提示

如何使用Raspberry Pi设置登场音乐

李玉鑫 来源:DevicePlus 作者:DevicePlus 2023-03-01 10:21 次阅读

在我年轻的时候,我最喜欢的摔跤手绝对是被称为“Heartbreak Kid”的Shawn Michaels。他是一个伟大的运动员和表演者,所做的一切都非常有趣。
从他进入大楼的那一刻开始,这首音乐响起:
这让我开始思考,如果Shawn Michaels可以以这种方式入场,为什么我不能?
是的,有了Raspberry PiPython chops,像我(或者您!)这样的家伙也许就可以拥有登场音乐了。

Raspberry Pi如何检测出您的登场?

这里有几种选择。
我们可以检测出您的手机是否连接到无线网络。这很有用,因为Raspberry Pi可以确认是否是您本人在进入(而非您的室友或家人)。
缺点是它对您的距离的测定不太精确。我的意思是,这是登场音乐,对吗?它应该在您进门时开始响起。
您也可以改用PIR运动传感器。这可以将音乐与入门动作精确匹配,不过这种方法无法对正在进入的人作出区分。
所以,我们可以将这两者结合起来。Raspberry Pi将会在您的手机连接到无线网络时检测出您已经到家,然后等待传感器来检测出您进入的确切时间。
如果您更倾向于使用其中的一种,可以直接去除掉其他部分。

使用Python Subprocess模块

本项目还会引入Python的subprocess模块。该模块在标准库中,您无需进行安装。
使用该模块,我们可以在Python内部运行shell命令。这非常方便。如果您已经知道这些命令行是如何执行操作的,只需直接运行该命令即可。
我们将使用的两个命令是mpg123和ping。
mpg123是一个用于播放mp3文件的命令行实用程序。我们需要安装mpg123。
您不需要安装ping,系统中已经有了。这是一个简单的工具,用于检查远程服务器或设备是否处于连通状态并作出响应。我们将使用它来检查您的手机是否连接到了您的无线网络。

所需组件

对于本项目,您将需要以下组件:

带有电源、无线网卡以及一个
SD 卡的
Raspberry Pi
pYYBAGPzHTCAPeTzAAAZXrMS0tI642.jpg
一个PIR运动传感器
(我使用的是XC-4444)
pYYBAGPy0wyAUsVmAAATc_DD-1Q271.jpg
Shawn Michaels所演唱的Sexy Boy高品质MP3文件(或者您也可以选择其他非常钟意的歌曲)
从Raspberry Pi播放音乐的某种方式。连接到HDMI端口的家庭娱乐系统是比较理想的

您还需要一部智能手机、一个无线家庭网络和3根公对母跳线。
确保您的手机设置为自动连接到您家里的无线网络,并且没有使用任何省电设置,以防手机在不使用时禁用无线网络。
这里我们假设您已经了解PIR运动传感器和GPIO Zero库了。如果没有,请先查看这些相关介绍。您将从中了解该设备的工作原理,在本项目中我们将以大致相同的方式对其进行接线。
本项目用Raspberry Pi OS Buster进行了测试,但是旧版本的Raspbian应该也没问题。我们使用的Python模块和Linux命令都是存在已久的了。

设置Raspberry Pi

我们首先为这个项目创建一个目录,并进入该目录。打开终端并输入:
mkdir ~/entrancemusic
cd ~/entrancemusic
用一种您喜欢的方式将mp3文件复制到此目录中。
然后用以下命令更新您的系统并安装mpg123:
sudo apt update && sudo apt upgrade -y
sudo apt install mpg123

连接PIR运动传感器

这次我们不使用面包板。对于我们的项目来说,面包板将会产生阻碍。
拿起您的PIR运动传感器和跳线。将传感器的电源引脚连接到Raspberry Pi的5V电源引脚。然后将传感器的接地引脚连接到Raspberry Pi上的接地引脚。
pYYBAGPzHTSAem2xAACyO406BEE370.png
然后将数字输出连接到一个GPIO引脚。我使用的是引脚24,因为它的位置比较方便。
poYBAGPzHTaAe5KuAACtfy1Syjs205.png
这就是运动传感器的全部接线过程。将其摆放为面向您将要进入的门口。

为您的智能手机保留IP地址

几乎所有家庭无线网络都使用DHCP来为所连接的新设备自动分配可用的IP地址。这很方便,因为它很可靠并且无需让您进行管理。
这也意味着特定设备的IP地址可能会不时发生更改。对于本项目,我们希望您的手机始终分配到同一个IP地址上,并且没有其他设备使用该地址。
大多数路由器为一个设备分配的IP地址至少会持续一天左右的时间。因此,如果您只打算执行本项目一次,那么可以愉快地继续进行,不必再为此困扰。
但是如果您想多次运行此脚本,那么您应该为您的设备保留一个IP地址。您可以通过登陆无线路由器的管理面板来执行此操作。不同的路由器对此的处理方式略有不同,但通常操作方式都比较容易。如果您遇到了困难,请使用搜索引擎查找您设备的手册。
我的手机保留的IP地址为192.168.0.5。您的IP地址可能会有所不同,只需按照说明对其进行替换即可。
当还有一点是—您是否有使用SSH通过本地网络访问Raspberry Pi的习惯?请也为其保留一个IP地址。如果它的IP地址是不会改变的,那就更方便了。

使用mpg123播放登场音乐

要从命令行使用mpg123,你只需要输入您要播放的mp3名称即可,如下所示:
mpg123 ‘Sexy Boy (Shawn Michaels).mp3’
从Python运行此命令也并不复杂。
首先,导入subprocess模块中的run函数。然后将以上命令行作为第一个参数传递给该函数,并将“shell=True”作为第二个参数,如下所示:
from subprocess import run
run(“mpg123 ~/entrancemusic/’Sexy Boy (Shawn Michaels).mp3′”, shell=True)

使用Ping检测您的手机是否已连接

您可以通过命令行ping您的手机,如下所示:
ping -c 192.168.0.5
请记得替换您手机的IP地址。我们添加“-c 1”来告诉ping只发送一次请求。如果我们不添加该内容,该命令将会被一直运行,直到被取消。
如果设备响应,ping将会返回成功。如果没有响应,将会返回一个错误代码。
理想情况下,我们可以用此错误代码来查看手机是否已经连接到网络。不幸的是,许多智能手机不会对请求发生响应。这就意味着无论您的手机是否连接到了网络,ping都会返回错误代码。
那么让我们来看看输出内容。如果没有设备在指定的IP地址上,那么输出中将包含语句“Destination Host Unreachabl(目标主机无法访问)”。
Python的subprocess模块包含Popen和PIPE对象,可以让我们对输出进行处理,如下所示:
subprocess import Popen, PIPE
p1 = Popen([“ping”, “-c”, “1”, “192.168.0.5”], stdout=PIPE)
stdout_value = p1.communicate()[0]
如果您想了解此代码中所运行的内容,请阅读此处。对于本项目来说,知道它运行了ping命令,然后将输出分配给了stdout_value就足够了。
我们可以使用它来编写一个循环程序,当“Destination Host Unreachable”没有出现在输出中时可进行中断。
while True:
p1 = Popen([“ping”, “-c”, “1”, “192.168.0.5”], stdout=PIPE)
stdout_value = p1.communicate()[0]
if b’Destination Host Unreachable’ not in stdout_value:
break
sl eep(2)
这个循环会一直运行到您的手机连接到网络为止。

将所有程序写到一个脚本中

我们现在已经具备了用于简单的登场音乐程序的所有代码块。输入以下命令打开一个新文件:
nano entrancemusic.py
然后输入(或粘贴)以下内容:
from time import sl eep
from signal import pause
from subprocess import run, Popen, PIPE
from gpiozero import MotionSensor
sl eep(600) # This gives you 10 minutes to leave your home
pir = MotionSensor(24)
while True:
p1 = Popen([“ping”, “-c”, “1”, “192.168.0.5”], stdout=PIPE)
stdout_value = p1.communicate()[0]
if b’Destination Host Unreachable’ not in stdout_value:
break
sl eep(2)
sl eep(5)
pir.wait_for_motion()
run(“mpg123 ~/entrancemusic/’Sexy Boy (Shawn Michaels).mp3′”,
Save and exit nano.
如果您想在回家时安排登场音乐,请在离开家之前运行此脚本,输入:
python3 entrancemusic.py

微调

该脚本会像本文所述的那样运行,但是您可能会想要调试一些功能。
安排您的入场时间
您可能已经注意到了,此脚本会在传令传感器感应运动前休眠5秒钟,这是为什么?

这是为了对时间进行限制,从而防止其他人误用了您的登场音乐。如果您将运动传感器设置在了共享区域(例如客厅或大厅),这一点极为重要。
那么5秒钟是正确的等待时间吗?这取决于您的无线网络范围和家庭的布局。如果您的传感器正对着前门,您可能不希望有任何延迟。您可以进行多次尝试来找到合适的延迟时间。
图片:Raspberry Pi

多晚才算太晚?

如果您要去吃晚饭或去酒吧,很晚回家,这时候用Shawn Michaels的动感音乐吵醒大家怎么办?如果您完全沉迷于自己的角色扮演中,那么这将会是一个刺激竞争对手并且建立主导地位的绝佳机会。
至于我?我不愿意在晚上十点之后播放嘈杂的音乐。
我们可以使用time模块中的localtime()函数来检查时间。可以通过将脚本中的第一行更改为以下内容来导入该函数:
from time import sl eep, localtime
然后我们可以通过以下比较来检查时间是否在上午9点到晚上10点之间:
9 < localtime().tm_hour < 22
接下来,我们只需要将mpg123命令放置在if语句中即可。
if 9 < localtime().tm_hour < 22:
run(“mpg123 ~/entrancemusic/’Sexy Boy (Shawn Michaels).mp3′”, shell=True)
您可以根据自己的情况来调整设备的工作时间。

平凡客厅的隆重登场

世界上很少有人能够称为职业摔跤手。多亏了Python和Raspberry Pi,您也可以享受到隆重登场的感觉了。
您会对此做出进一步调整吗?请在评论中留下您的想法!

pYYBAGPbhjqAbi1JAAAGd6_rQT0867.png

DevicePlus 编辑团队

设备升级版适用于所有热爱电子和机电一体化的人。

审核编辑黄宇

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

    关注

    2550

    文章

    51035

    浏览量

    753049
  • Raspberry Pi
    +关注

    关注

    2

    文章

    558

    浏览量

    22195
收藏 人收藏

    评论

    相关推荐

    新品来袭!Raspberry Pi Compute Module 5

    今天,我们很高兴地宣布推出备受期待的Raspberry Pi计算模块5,这是我们旗舰Raspberry Pi 5单板计算机的模块化版本,售价仅为45美元。 意外之旅 我们在2008年成
    的头像 发表于 11-27 18:21 421次阅读
    新品来袭!<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Compute Module 5

    Raspberry Pi Pico 2 W 发布

    树莓派官方今日宣布推出支持无线连接的新款 MCU(微控制器)主板 Raspberry Pi Pico 2 W,售价 7 美元, 较此前的有线版本高出 2 美元 。     Raspberry
    的头像 发表于 11-25 18:25 457次阅读
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Pico 2 W 发布

    Raspberry Pi Pico 2

    Raspberry Pi Pico 2显著提升了性能,同时保持了与之前的Raspberry Pi Pico系列器件的兼容性。 Pico 2具有更高的内核时钟速度、双倍内存、更强大的Ar
    的头像 发表于 11-25 15:10 541次阅读
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Pico 2

    Banana Pi M5 与 Raspberry Pi 4 – 基准测试

    Banana Pi M5 基准测试已成为我的网站上最受欢迎的作品之一,而且似乎人们真正想看到的是它与其 Raspberry 口味的表亲之间的直接比较,所以这里就是 Banana Pi M5 与
    的头像 发表于 10-28 10:28 337次阅读
    Banana <b class='flag-5'>Pi</b> M5 与 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 4 – 基准测试

    Raspberry Pi CM5 还要几周才能上市吗?

    如果您经常逛电子产品商店/网站,您可能会偶然发现一些您没想到的产品。今天在 Mouser 上,我们似乎有一堆 Raspberry Pi CM5 配件。很快 TM 就会有?
    的头像 发表于 10-28 10:26 255次阅读
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> CM5 还要几周才能上市吗?

    Raspberry Pi推出自有品牌固态硬盘

    10月24日最新消息,英国当地时间23日,Raspberry Pi(树莓派)官方宣布推出自有品牌固态硬盘,此举标志着树莓派在存储产品线上的进一步拓展,继microSD存储卡之后,为用户提供了更多第一方存储解决方案。
    的头像 发表于 10-24 14:13 351次阅读

    e络盟开售Raspberry Pi新款产品

    安富利旗下全球电子与工业系统设计、维护和维修产品及技术分销商 e络盟 现为客户供应小巧、快速、多功能的 Raspberry Pi Pico 2。
    的头像 发表于 10-12 16:57 640次阅读

    e络盟开售Raspberry Pi AI 摄像头

    安富利旗下全球电子元器件产品与解决方案分销商e络盟开售全新 Raspberry Pi AI摄像头,这是 Raspberry Pi 的最新产品,扩大了 e络盟的人工智能设备范围。
    的头像 发表于 10-10 10:09 228次阅读
    e络盟开售<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> AI 摄像头

    e络盟发售功能强大的入门级 Raspberry Pi 5 2GB

    安富利旗下全球电子元器件产品与解决方案分销商e络盟日前开售极具性价比的全新 Raspberry Pi 5 2GB。
    的头像 发表于 09-02 10:39 313次阅读
    e络盟发售功能强大的入门级 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 5 2GB

    名单公布!树莓派5(Raspberry Pi 5)开发板免费试用!!!

    名单公布: jinsheng、华仔stm32 树莓派5(Raspberry Pi 5)新主板采用2.4GHz四核64位Arm Cortex-A76处理器,拥有512KB的L2缓存和2MB的共享L3
    发表于 06-27 15:40

    如何将CYKIT-028 TFT模块与Raspberry Pi和ESP32微控制器结合使用?

    我目前正在探索如何将 CYKIT-028 TFT 模块与 Raspberry Pi 和 ESP32 微控制器结合使用。 不过,在选择集成开发环境(IDE)和使用 PSOC Creator 的必要性
    发表于 05-21 07:36

    5分钟内将Raspberry Pi Pico变成简单的示波器+波形发生器

    5 分钟内将 Raspberry Pi Pico(或任何 RP2040 板)变成简单的示波器+波形发生器。
    的头像 发表于 03-04 09:14 2123次阅读
    5分钟内将<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Pico变成简单的示波器+波形发生器

    震惊!居然有人给 Raspberry Pi 5 做 X 射线!

      Jeff Geerling 会做一些莫名其妙的怪事,比如用信鸽来对抗网速,不过这也是我们喜欢他视频的原因。最近,杰夫对 Raspberry Pi 5 进行了 X 光透视,揭示了
    的头像 发表于 01-10 16:42 479次阅读
    震惊!居然有人给 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 5 做 X 射线!

    搭载 树莓派5 Raspberry Pi 5 全新的HMI发布!

    多年来,上海晶珩不断推陈出新,在成功推出一系列基于 Raspberry Pi CM4 的平板电脑后,现推出了首个搭载 Raspberry Pi 5 的平板电脑系列HMI3010。其中,
    的头像 发表于 12-28 11:33 870次阅读
    搭载 树莓派5 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 5 全新的HMI发布!

    基于Raspberry Pi 5的蜂窝物联网项目

    今天小拜年给大家带来的是来自美国的Maker Rob Lauer的基于树莓派5的蜂窝网络项目,了解如何为新的 Raspberry Pi 5 单板计算机添加低带宽蜂窝连接。
    的头像 发表于 12-25 10:55 1252次阅读
    基于<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 5的蜂窝物联网项目