「貴客光臨」派對門鈴

七月 16, 2015
Facebook
Twitter
利用聰明的無線感測器以及Raspberry Pi讓客人選擇他們想要的音效。
下次辦派對的時候,讓客人選擇自己的入場音樂吧!「貴客光臨」派對門鈴是一個有著四個按鈕的無線門鈴。客人可以選擇(你預錄的)皇家樂隊的號角吹奏、重金屬音樂、星艦迷航記主題曲,或是運動迷的歡呼聲。當他們按下按鈕,屋內會聽到普通的鈴聲,可是一開門,就會播放客人選擇的音效。

這個專題的重點是Raspberry Pi以及EnOcean感測器組合裝置。這個裝置很巧妙,不需要電池,只需要利用無線感測器和按鈕。按壓門鈴按鈕所產生的壓力動能被用來傳送無線訊號到Raspberry Pi選取音效;而太陽能發電的觸控感測器接著發出訊號,通知Raspberry Pi門已經被打開了,進而指示Raspberry Pi播放對應的音效。
當然,這個專題是可客製化的──當你朋友來參加派對的時候選一個專屬於你朋友的音效吧!

材料

  • Raspberry Pi單板電腦,B或B+:Maker Shed網站商品編號#MKRPI2或MKRPI5,安裝Raspbian最新版本並連結上網路。
  • EnOcean Pi RF模組:購自Element 14網站。美國/加拿大選擇902MHz版本,歐洲/中國選擇868MHz,亞洲其他地方(不包括中國)則是315MHz。
  • EnOcean感測器組合購買於Element 14。這個組合包括動能按鈕開關模組、太陽能發電的磁力彈簧開關,以及溫度感應模組。一樣依據地區選擇902MHz、868MHz,或315MHz。
  • En-Ocean動能開關:購買EnOcean感測器組合,或參考makezine.com/go/enocean-rocker說明,3D列印你自己的開關模組。
  • USB電源充電器
  • 電腦揚聲器或音響設備
  • 安裝補土
  • 白板,小的(非必要):當門鈴標誌使用。這邊可以自由發揮,使用別的材料。 
  • 安裝膠條
工具

  • USB鍵盤
  • USB滑鼠
  • HDMI顯示器,並支援音訊功能


第一步:設置EnOcean Pi與FHEM

图片

  • 如圖所示,將EnOcean Pi 收發器模組連接至Raspberry Pi B或B+模組。紅色線是天線。
    註:設置時,將鍵盤、滑鼠以及支援音訊功能的HDMI顯示器連接至Raspberry Pi。在這個專題的最後階段,你可以將這些裝置移除,然後將Pi的類比音源輸出連接至電腦喇叭或音響設備。
  • 啟動有最新版本的Raspbian的Raspberry Pi,並且登入。輸入下列指令,更新軟體以及韌體(執行這項動作需要網路連線):
    sudo apt-get update
    sudo apt-get upgrade
    sudo rpi-update
  • Pi上的序列腳位預設用來連接控制台。必須更改這項設定,才能使用EnOcean Pi。最簡單的方法是安裝安德魯・雪勒(Andrew Scheller)設計的公用程式 rpi-serial-console:
    sudo wget https://raw.github.com/lurch/rpi-serial-console/master/rpi-serial- console -O /usr/bin/rpi-serial-console
    sudo chmod +x /usr/bin/rpi-serial-console
  • 使用此公用程式來停用序列控制台:
    sudo rpi-serial-console disable
  • 安裝FHEM的相依,即有開放原始碼的家庭自動化伺服器:
    sudo apt-get install perl libdevice-serialport-perl libio-socket-ssl-perl libwww-perl
  • 安裝FHEM:
    wget http://fhem.de/fhem-5.5.deb
    sudo dpkg –i fhem-5.5.deb
  • 這會安裝並啟動FHEM。當Raspberry Pi啟動時,它也會設置你的Raspberry Pi以啟動FHEM:

第二步:測試FHEM

  • 用它取得Raspberry Pi的IP位址:
    ifconfig
    乙太連線的 eth0段落跟Wi-Fi的wlan0段落中,IP位址出現在inet addr:之後。

  • 在連接到相同網路的電腦上,開啟網路瀏覽器連到http://[RPi-IP-Address]:8083/fhem 
    註:你也可以啟動 Raspberry Pi的桌面,接著在Midori網路瀏覽器中開啟http://localhost:8083/fhem/。
  • 現在應該可以連接到在Raspberry Pi上運作的FHEM的網頁瀏覽器。
  • 嘗試按下EnOcean PTM-210自供電無線開關模組的開關數次,接著重新整理FHEM網頁。
  • 如果一切運作正常,你會在網頁最左側的欄位看到「EnOcean」。 有興趣的話,可以探索網頁伺服器,找出EnOcean感測器傳送的是怎樣的無線數據。
  • 確定FHEM正在辨識EnOcean磁力彈簧開關模組。套件中附有一塊不錯的磁鐵。 將它移近彈簧開關然後移開,可以看到標示「Contact」的感測器,其狀態在開啟與關閉間轉換。

第三步:下載程式碼與音訊檔

  • 建立新的目錄,變更為:
    mkdir ~/party-doorbell
    cd ~/party-doorbell

  • 下載這個專題的Python原始碼:
    wget https://raw.githubusercontent.com/mrichardson23/party-doorbell/master/party-doorbell.py 
    這個程式碼會透過遠端登入連線至FHEM,執行FHEM從EnOcean Pi偵測到的所有動作。
  • 這邊是你可以發揮創意的地方,上網找幾個WAV檔案並下載到同一個目錄中,以doorbell.wav 為按下門鈴後發出的聲音命名, 並用1.wav、2.wav 、3.wav跟 4.wav 為不同的入場音效命名。Freesound.org 是個很棒的聲音檔取得管道。
    註:在Raspberry Pi桌面環境中,你可能需要用Midori網頁瀏覽器來下載檔案,重新命名,並將檔案移動到和Rasparty-dorbell.py同一個資料夾。也可以使用電腦上的SFTP用戶端將檔案傳送到Raspberry Pi。
  • 從指令行開始指令碼:python party-doorbell.py
  • 嘗試按下EnOcean PTM-210上的按鈕,接著應該會聽到doorbell.wav播放的聲音並看到螢幕上的反饋。
  • 將磁鐵再一次移近EnOcean EnOcean磁力彈簧開關模組,然後移開(模擬開門)。 接著會聽見其中一個WAV檔案播放的聲音。

第四步:安裝感應器

  • 將翹板扣到EnOcean動力開關上。
  • 用安裝膠帶把EnOcean動能開關黏到白板上,然後按照你的主題來裝飾白板。你也可以自由發揮,使用其他材料來製做告示牌,例如木頭、壓克力或厚紙板。

  • 將告示牌掛在門上。
  • 用安裝補土將接點開關黏在門框上,確認太陽能電池面朝外,玻璃彈簧開關靠近門。
  • 用安裝補土將磁鐵黏到門上,靠近彈簧開關越近越好。
  • 訣竅:當彈簧開關的狀態改變時,感測器上的小LED燈會快速亮起。你得確認開關門的時候,LED會閃爍。

第五步:畫龍點睛

  • 你需要在crontab加上一行,讓你的指令碼在啟動時動作。要編輯的話,在命令列輸入:crontab -e
  • 在檔案的結尾處加上:@reboot (sleep 10;cd /home/pi/party-doorbell;python party-doorbell.py)
  • 這會讓Pi等待十秒,讓FHEM能先開啓遠端登入埠,接著變更到指令碼所在的目錄中,然後執行指令碼。
  • 按下Ctrl+X和Y以儲存檔案,然後重新啓動Raspberry Pi:sudo reboot
  • 你的「貴客光臨」門鈴可以上場了!如果你想使用Raspberry Pi的類比音源輸出,只要在未連接連接HDMI顯示器時重新啓動Pi。如果想同時使用HDMI顯示器跟類比音源輸出,就在raspi-config中變更音源輸出設定。

結論

改變入場主題就跟變更編號的WAV檔案還有重畫白板一樣容易。你的朋友一定會期待他們在下一場派對中如何現「聲」登場。

Matt Richardson
麥特‧理查森是位於舊金山的創意技師和MAKE的特約編輯。他是《RASPBERRY PI入門》的共同作者和《BEAGLEBONE入門》(Getting Started with BeagleBone)的作者。

(譯:張婉秦)
原文

Social media & sharing icons powered by UltimatelySocial