0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用Raspberry Pi設(shè)置登場音樂

李玉鑫 ? 來源:DevicePlus ? 作者:DevicePlus ? 2023-03-01 10:21 ? 次閱讀

在我年輕的時候,我最喜歡的摔跤手絕對是被稱為“Heartbreak Kid”的Shawn Michaels。他是一個偉大的運(yùn)動員和表演者,所做的一切都非常有趣。
從他進(jìn)入大樓的那一刻開始,這首音樂響起:
這讓我開始思考,如果Shawn Michaels可以以這種方式入場,為什么我不能?
是的,有了Raspberry PiPython chops,像我(或者您?。┻@樣的家伙也許就可以擁有登場音樂了。

Raspberry Pi如何檢測出您的登場?

這里有幾種選擇。
我們可以檢測出您的手機(jī)是否連接到無線網(wǎng)絡(luò)。這很有用,因為Raspberry Pi可以確認(rèn)是否是您本人在進(jìn)入(而非您的室友或家人)。
缺點是它對您的距離的測定不太精確。我的意思是,這是登場音樂,對嗎?它應(yīng)該在您進(jìn)門時開始響起。
您也可以改用PIR運(yùn)動傳感器。這可以將音樂與入門動作精確匹配,不過這種方法無法對正在進(jìn)入的人作出區(qū)分。
所以,我們可以將這兩者結(jié)合起來。Raspberry Pi將會在您的手機(jī)連接到無線網(wǎng)絡(luò)時檢測出您已經(jīng)到家,然后等待傳感器來檢測出您進(jìn)入的確切時間。
如果您更傾向于使用其中的一種,可以直接去除掉其他部分。

使用Python Subprocess模塊

本項目還會引入Python的subprocess模塊。該模塊在標(biāo)準(zhǔn)庫中,您無需進(jìn)行安裝。
使用該模塊,我們可以在Python內(nèi)部運(yùn)行shell命令。這非常方便。如果您已經(jīng)知道這些命令行是如何執(zhí)行操作的,只需直接運(yùn)行該命令即可。
我們將使用的兩個命令是mpg123和ping。
mpg123是一個用于播放mp3文件的命令行實用程序。我們需要安裝mpg123。
您不需要安裝ping,系統(tǒng)中已經(jīng)有了。這是一個簡單的工具,用于檢查遠(yuǎn)程服務(wù)器或設(shè)備是否處于連通狀態(tài)并作出響應(yīng)。我們將使用它來檢查您的手機(jī)是否連接到了您的無線網(wǎng)絡(luò)。

所需組件

對于本項目,您將需要以下組件:

帶有電源、無線網(wǎng)卡以及一個
SD 卡的
Raspberry Pi
pYYBAGPzHTCAPeTzAAAZXrMS0tI642.jpg
一個PIR運(yùn)動傳感器
(我使用的是XC-4444)
pYYBAGPy0wyAUsVmAAATc_DD-1Q271.jpg
Shawn Michaels所演唱的Sexy Boy高品質(zhì)MP3文件(或者您也可以選擇其他非常鐘意的歌曲)
從Raspberry Pi播放音樂的某種方式。連接到HDMI端口的家庭娛樂系統(tǒng)是比較理想的

您還需要一部智能手機(jī)、一個無線家庭網(wǎng)絡(luò)和3根公對母跳線。
確保您的手機(jī)設(shè)置為自動連接到您家里的無線網(wǎng)絡(luò),并且沒有使用任何省電設(shè)置,以防手機(jī)在不使用時禁用無線網(wǎng)絡(luò)。
這里我們假設(shè)您已經(jīng)了解PIR運(yùn)動傳感器和GPIO Zero庫了。如果沒有,請先查看這些相關(guān)介紹。您將從中了解該設(shè)備的工作原理,在本項目中我們將以大致相同的方式對其進(jìn)行接線。
本項目用Raspberry Pi OS Buster進(jìn)行了測試,但是舊版本的Raspbian應(yīng)該也沒問題。我們使用的Python模塊和Linux命令都是存在已久的了。

設(shè)置Raspberry Pi

我們首先為這個項目創(chuàng)建一個目錄,并進(jìn)入該目錄。打開終端并輸入:
mkdir ~/entrancemusic
cd ~/entrancemusic
用一種您喜歡的方式將mp3文件復(fù)制到此目錄中。
然后用以下命令更新您的系統(tǒng)并安裝mpg123:
sudo apt update && sudo apt upgrade -y
sudo apt install mpg123

連接PIR運(yùn)動傳感器

這次我們不使用面包板。對于我們的項目來說,面包板將會產(chǎn)生阻礙。
拿起您的PIR運(yùn)動傳感器和跳線。將傳感器的電源引腳連接到Raspberry Pi的5V電源引腳。然后將傳感器的接地引腳連接到Raspberry Pi上的接地引腳。
pYYBAGPzHTSAem2xAACyO406BEE370.png
然后將數(shù)字輸出連接到一個GPIO引腳。我使用的是引腳24,因為它的位置比較方便。
poYBAGPzHTaAe5KuAACtfy1Syjs205.png
這就是運(yùn)動傳感器的全部接線過程。將其擺放為面向您將要進(jìn)入的門口。

為您的智能手機(jī)保留IP地址

幾乎所有家庭無線網(wǎng)絡(luò)都使用DHCP來為所連接的新設(shè)備自動分配可用的IP地址。這很方便,因為它很可靠并且無需讓您進(jìn)行管理。
這也意味著特定設(shè)備的IP地址可能會不時發(fā)生更改。對于本項目,我們希望您的手機(jī)始終分配到同一個IP地址上,并且沒有其他設(shè)備使用該地址。
大多數(shù)路由器為一個設(shè)備分配的IP地址至少會持續(xù)一天左右的時間。因此,如果您只打算執(zhí)行本項目一次,那么可以愉快地繼續(xù)進(jìn)行,不必再為此困擾。
但是如果您想多次運(yùn)行此腳本,那么您應(yīng)該為您的設(shè)備保留一個IP地址。您可以通過登陸無線路由器的管理面板來執(zhí)行此操作。不同的路由器對此的處理方式略有不同,但通常操作方式都比較容易。如果您遇到了困難,請使用搜索引擎查找您設(shè)備的手冊。
我的手機(jī)保留的IP地址為192.168.0.5。您的IP地址可能會有所不同,只需按照說明對其進(jìn)行替換即可。
當(dāng)還有一點是—您是否有使用SSH通過本地網(wǎng)絡(luò)訪問Raspberry Pi的習(xí)慣?請也為其保留一個IP地址。如果它的IP地址是不會改變的,那就更方便了。

使用mpg123播放登場音樂

要從命令行使用mpg123,你只需要輸入您要播放的mp3名稱即可,如下所示:
mpg123 ‘Sexy Boy (Shawn Michaels).mp3’
從Python運(yùn)行此命令也并不復(fù)雜。
首先,導(dǎo)入subprocess模塊中的run函數(shù)。然后將以上命令行作為第一個參數(shù)傳遞給該函數(shù),并將“shell=True”作為第二個參數(shù),如下所示:
from subprocess import run
run(“mpg123 ~/entrancemusic/’Sexy Boy (Shawn Michaels).mp3′”, shell=True)

使用Ping檢測您的手機(jī)是否已連接

您可以通過命令行ping您的手機(jī),如下所示:
ping -c 192.168.0.5
請記得替換您手機(jī)的IP地址。我們添加“-c 1”來告訴ping只發(fā)送一次請求。如果我們不添加該內(nèi)容,該命令將會被一直運(yùn)行,直到被取消。
如果設(shè)備響應(yīng),ping將會返回成功。如果沒有響應(yīng),將會返回一個錯誤代碼。
理想情況下,我們可以用此錯誤代碼來查看手機(jī)是否已經(jīng)連接到網(wǎng)絡(luò)。不幸的是,許多智能手機(jī)不會對請求發(fā)生響應(yīng)。這就意味著無論您的手機(jī)是否連接到了網(wǎng)絡(luò),ping都會返回錯誤代碼。
那么讓我們來看看輸出內(nèi)容。如果沒有設(shè)備在指定的IP地址上,那么輸出中將包含語句“Destination Host Unreachabl(目標(biāo)主機(jī)無法訪問)”。
Python的subprocess模塊包含Popen和PIPE對象,可以讓我們對輸出進(jìn)行處理,如下所示:
subprocess import Popen, PIPE
p1 = Popen([“ping”, “-c”, “1”, “192.168.0.5”], stdout=PIPE)
stdout_value = p1.communicate()[0]
如果您想了解此代碼中所運(yùn)行的內(nèi)容,請閱讀此處。對于本項目來說,知道它運(yùn)行了ping命令,然后將輸出分配給了stdout_value就足夠了。
我們可以使用它來編寫一個循環(huán)程序,當(dāng)“Destination Host Unreachable”沒有出現(xiàn)在輸出中時可進(jìn)行中斷。
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)
這個循環(huán)會一直運(yùn)行到您的手機(jī)連接到網(wǎng)絡(luò)為止。

將所有程序?qū)懙揭粋€腳本中

我們現(xiàn)在已經(jīng)具備了用于簡單的登場音樂程序的所有代碼塊。輸入以下命令打開一個新文件:
nano entrancemusic.py
然后輸入(或粘貼)以下內(nèi)容:
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.
如果您想在回家時安排登場音樂,請在離開家之前運(yùn)行此腳本,輸入:
python3 entrancemusic.py

微調(diào)

該腳本會像本文所述的那樣運(yùn)行,但是您可能會想要調(diào)試一些功能。
安排您的入場時間
您可能已經(jīng)注意到了,此腳本會在傳令傳感器感應(yīng)運(yùn)動前休眠5秒鐘,這是為什么?

這是為了對時間進(jìn)行限制,從而防止其他人誤用了您的登場音樂。如果您將運(yùn)動傳感器設(shè)置在了共享區(qū)域(例如客廳或大廳),這一點極為重要。
那么5秒鐘是正確的等待時間嗎?這取決于您的無線網(wǎng)絡(luò)范圍和家庭的布局。如果您的傳感器正對著前門,您可能不希望有任何延遲。您可以進(jìn)行多次嘗試來找到合適的延遲時間。
圖片:Raspberry Pi

多晚才算太晚?

如果您要去吃晚飯或去酒吧,很晚回家,這時候用Shawn Michaels的動感音樂吵醒大家怎么辦?如果您完全沉迷于自己的角色扮演中,那么這將會是一個刺激競爭對手并且建立主導(dǎo)地位的絕佳機(jī)會。
至于我?我不愿意在晚上十點之后播放嘈雜的音樂。
我們可以使用time模塊中的localtime()函數(shù)來檢查時間。可以通過將腳本中的第一行更改為以下內(nèi)容來導(dǎo)入該函數(shù):
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)
您可以根據(jù)自己的情況來調(diào)整設(shè)備的工作時間。

平凡客廳的隆重登場

世界上很少有人能夠稱為職業(yè)摔跤手。多虧了Python和Raspberry Pi,您也可以享受到隆重登場的感覺了。
您會對此做出進(jìn)一步調(diào)整嗎?請在評論中留下您的想法!

pYYBAGPbhjqAbi1JAAAGd6_rQT0867.png

DevicePlus 編輯團(tuán)隊

設(shè)備升級版適用于所有熱愛電子和機(jī)電一體化的人。

審核編輯黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2552

    文章

    51349

    瀏覽量

    755555
  • Raspberry Pi
    +關(guān)注

    關(guān)注

    2

    文章

    560

    瀏覽量

    22327
收藏 人收藏

    評論

    相關(guān)推薦

    貿(mào)澤電子開售Raspberry Pi Hailo 8L AI套件

    近日,全球電子元器件和工業(yè)自動化產(chǎn)品的領(lǐng)先授權(quán)代理商貿(mào)澤電子(Mouser Electronics)正式宣布開售Raspberry Pi的Hailo 8L AI套件。這一創(chuàng)新產(chǎn)品的推出,標(biāo)志著貿(mào)澤
    的頭像 發(fā)表于 01-15 14:25 ?97次閱讀

    Raspberry Pi樹莓派新手指南

    電子發(fā)燒友網(wǎng)站提供《Raspberry Pi樹莓派新手指南.pdf》資料免費下載
    發(fā)表于 12-23 17:05 ?0次下載

    新品來襲!Raspberry Pi Compute Module 5

    今天,我們很高興地宣布推出備受期待的Raspberry Pi計算模塊5,這是我們旗艦Raspberry Pi 5單板計算機(jī)的模塊化版本,售價僅為45美元。 意外之旅 我們在2008年成
    的頭像 發(fā)表于 11-27 18:21 ?527次閱讀
    新品來襲!<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Compute Module 5

    Raspberry Pi Pico 2 W 發(fā)布

    樹莓派官方今日宣布推出支持無線連接的新款 MCU(微控制器)主板 Raspberry Pi Pico 2 W,售價 7 美元, 較此前的有線版本高出 2 美元 。 ? ? Raspberry
    的頭像 發(fā)表于 11-25 18:25 ?552次閱讀
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Pico 2 W 發(fā)布

    Raspberry Pi Pico 2

    Raspberry Pi Pico 2顯著提升了性能,同時保持了與之前的Raspberry Pi Pico系列器件的兼容性。 Pico 2具有更高的內(nèi)核時鐘速度、雙倍內(nèi)存、更強(qiáng)大的Ar
    的頭像 發(fā)表于 11-25 15:10 ?646次閱讀
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Pico 2

    Banana Pi M5 與 Raspberry Pi 4 – 基準(zhǔn)測試

    Banana Pi M5 基準(zhǔn)測試已成為我的網(wǎng)站上最受歡迎的作品之一,而且似乎人們真正想看到的是它與其 Raspberry 口味的表親之間的直接比較,所以這里就是 Banana Pi M5 與
    的頭像 發(fā)表于 10-28 10:28 ?417次閱讀
    Banana <b class='flag-5'>Pi</b> M5 與 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 4 – 基準(zhǔn)測試

    Raspberry Pi CM5 還要幾周才能上市嗎?

    如果您經(jīng)常逛電子產(chǎn)品商店/網(wǎng)站,您可能會偶然發(fā)現(xiàn)一些您沒想到的產(chǎn)品。今天在 Mouser 上,我們似乎有一堆 Raspberry Pi CM5 配件。很快 TM 就會有?
    的頭像 發(fā)表于 10-28 10:26 ?347次閱讀
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> CM5 還要幾周才能上市嗎?

    Raspberry Pi推出自有品牌固態(tài)硬盤

    10月24日最新消息,英國當(dāng)?shù)貢r間23日,Raspberry Pi(樹莓派)官方宣布推出自有品牌固態(tài)硬盤,此舉標(biāo)志著樹莓派在存儲產(chǎn)品線上的進(jìn)一步拓展,繼microSD存儲卡之后,為用戶提供了更多第一方存儲解決方案。
    的頭像 發(fā)表于 10-24 14:13 ?412次閱讀

    e絡(luò)盟開售Raspberry Pi新款產(chǎn)品

    安富利旗下全球電子與工業(yè)系統(tǒng)設(shè)計、維護(hù)和維修產(chǎn)品及技術(shù)分銷商 e絡(luò)盟 現(xiàn)為客戶供應(yīng)小巧、快速、多功能的 Raspberry Pi Pico 2。
    的頭像 發(fā)表于 10-12 16:57 ?693次閱讀

    e絡(luò)盟開售Raspberry Pi AI 攝像頭

    安富利旗下全球電子元器件產(chǎn)品與解決方案分銷商e絡(luò)盟開售全新 Raspberry Pi AI攝像頭,這是 Raspberry Pi 的最新產(chǎn)品,擴(kuò)大了 e絡(luò)盟的人工智能設(shè)備范圍。
    的頭像 發(fā)表于 10-10 10:09 ?271次閱讀
    e絡(luò)盟開售<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> AI 攝像頭

    使用串行連接通過 Raspberry Pi 增強(qiáng)您的 XRP 項目

    指南更為高級。通過本指南,您將能夠?qū)?Raspberry Pi 連接到您的 XRP,從而使您的 XRP 項目更上一層樓。 傳輸數(shù)據(jù): 在 Raspberry Pi 和 Pico 之間傳
    的頭像 發(fā)表于 10-02 15:28 ?279次閱讀
    使用串行連接通過 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 增強(qiáng)您的 XRP 項目

    e絡(luò)盟發(fā)售功能強(qiáng)大的入門級 Raspberry Pi 5 2GB

    安富利旗下全球電子元器件產(chǎn)品與解決方案分銷商e絡(luò)盟日前開售極具性價比的全新 Raspberry Pi 5 2GB。
    的頭像 發(fā)表于 09-02 10:39 ?352次閱讀
    e絡(luò)盟發(fā)售功能強(qiáng)大的入門級 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 5 2GB

    名單公布!樹莓派5(Raspberry Pi 5)開發(fā)板免費試用?。?!

    名單公布: jinsheng、華仔stm32 樹莓派5(Raspberry Pi 5)新主板采用2.4GHz四核64位Arm Cortex-A76處理器,擁有512KB的L2緩存和2MB的共享L3
    發(fā)表于 06-27 15:40

    如何將CYKIT-028 TFT模塊與Raspberry Pi和ESP32微控制器結(jié)合使用?

    我目前正在探索如何將 CYKIT-028 TFT 模塊與 Raspberry Pi 和 ESP32 微控制器結(jié)合使用。 不過,在選擇集成開發(fā)環(huán)境(IDE)和使用 PSOC Creator 的必要性
    發(fā)表于 05-21 07:36

    5分鐘內(nèi)將Raspberry Pi Pico變成簡單的示波器+波形發(fā)生器

    5 分鐘內(nèi)將 Raspberry Pi Pico(或任何 RP2040 板)變成簡單的示波器+波形發(fā)生器。
    的頭像 發(fā)表于 03-04 09:14 ?2335次閱讀
    5分鐘內(nèi)將<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Pico變成簡單的示波器+波形發(fā)生器