步驟1:Raspberry部件說明:
Raspi必須管理不同的事情:
1)(通過紅外遙控器)到家庭影院的命令
2)音樂文件
3)觸摸屏
我從16 G SD卡上的Raspbian strech發(fā)行版開始(因為我們只會從SD卡讀取文件,因此不需要使用HDD)。我不會花時間在這部分上,因為網(wǎng)絡(luò)上充斥著有關(guān)它的信息。
讓我們在下一步中查看不同的部分。。..
步驟2:紅外遙控器代碼
由于找不到家庭影院的電路圖,我決定通過遠(yuǎn)程命令驅(qū)動它。
第一步必須完成的工作是學(xué)習(xí)Raspi家庭影院遠(yuǎn)程命令的代碼。
為此,我使用了 Austin Stanton IR代碼
我有一些差異,可能是由于新版本,因為指示者相當(dāng)舊,hardware.conf文件不再存在(至少我沒有找到它)
似乎另外,在tuto中使用的晶體管是PNP晶體管,就我而言,我使用的是2N2222,它是NPN,但結(jié)果是相同的(除了電纜連接?。。。。。。?/p>
引腳分配在/boot/config.txt中給出:
#autorisation de lirc le 2019/07/07
dtoverlay = lirc-rpi,gpio_out_pin = 22,gpio_in_pin = 23
IR LED將如此連接到Raspi的pin22。
重要提示:在學(xué)習(xí)Raspi的代碼時必須使用命令
irrecord --list-namespace
這是我為自動存儲塔創(chuàng)建的文件:
pi @ raspitone:/etc/lirc $ cat lircd.conf
#請花一些時間按照#https://sourceforge.net/p/lirc-remotes/wiki/Check 。..中的描述完成此文件,并通過以下方式將其提供給他人將其發(fā)送到##
#此配置文件是自動生成的
#在2019年5月9日星期四17:33:37使用lirc-0.9.4c(默認(rèn))#使用的命令行:-d/dev/lirc0/root/lircd.conf
#內(nèi)核版本(uname -r):4.14.98-v7 +##遠(yuǎn)程名稱(自配置文件開始):點唱機(jī)
#遠(yuǎn)程設(shè)備的品牌,您所擁有的東西手:#遠(yuǎn)程設(shè)備型號nr:
#遠(yuǎn)程設(shè)備信息網(wǎng)址:
#遠(yuǎn)程設(shè)備是否具有捆綁的捕獲設(shè)備e。 g。,一個
#USB加密狗? :
#對于捆綁的USB設(shè)備:usb供應(yīng)商ID,產(chǎn)品ID
#和設(shè)備字符串(使用dmesg或lsusb):
#受控設(shè)備的類型
#(電視,錄像機(jī),音頻,DVD,衛(wèi)星,電纜,HTPC等):
受此遙控器控制的設(shè)備數(shù):
開始使用遙控器
名稱自動點唱機(jī)
位16
標(biāo)志SPACE_ENC | CONST_LENGTH
eps 30
aeps 100
標(biāo)題4470 4496
一個542 1693
零542581
ptrail 553
pre_data_bits 16
pre_data 0xC2CA
差距107863
toggle_bit_mask 0x0
頻率38000
開始代碼
KEY_POWER 0x807F
KEY_AUX 0x8877
KEY_VOLUMEUP 0xCC33
KEY_VOLUMEDOWN 0xDC23
結(jié)束代碼
結(jié)束遠(yuǎn)程
如您所見,我只需要4條命令來驅(qū)動家庭影院
電源(開/關(guān))
AUX =》切換到光輸入通道(因為HC總是在DVD閱讀器上啟動)
和音量+/-
相關(guān)命令通過LIRC命令執(zhí)行:
例如:“ 放棄SEND_ONCE自動點唱機(jī)KEY_VOLUMEUP ”
步驟3:主程序
主程序是用Python編寫的:
由于我是Python的新手,我想可以做很多改進(jìn),但是可以運(yùn)行。。..
具體說明離子:
1)管理圖形屏幕:
為此,我使用的是TKINTER的APPJAR,但針對學(xué)生(我的情況)是文明的,這意味著使用起來容易得多,可能可能性較小,但這足以滿足我的目的。
2)播放mp3文件:
我將mplayer用于python。
3)生成隨機(jī)數(shù)用于以隨機(jī)播放模式播放:
由于我不想每個季度都聽到同一首歌,所以我建立了一個小程序來檢查x以前的數(shù)字列表中是否不存在該數(shù)字(x取決于
據(jù)我所知,python中的randint函數(shù)并不是那么“隨機(jī)”。
4)將“心跳”發(fā)送給Arduino
5)管理文件播放器:
由于Mplayer是異步的,因此當(dāng)文件啟動時,沒有辦法知道Python何時完成(至少我沒有找到簡單的方法)
要解決這個問題,我使用了mplayer命令來給出文件的長度和當(dāng)前文件的進(jìn)度
對于4和5我都使用了Appjar產(chǎn)生定期任務(wù)的可能性(因為appjar是事件程序,這是創(chuàng)建定期事件的一種方式)。函數(shù)是:
#*******************啟動任務(wù)員************** ********
app.registerEvent(taskman)
p.setPollTime(1000)
“任務(wù)管理器”的任務(wù)負(fù)責(zé)人,它是程序中的一個定義,用于管理所有非屏幕事件(播放的文件的結(jié)尾,填充進(jìn)度欄,將心跳發(fā)送給Nano,。..)
啟動后,屏幕如下所示:
以下是程序:(可以通過Notepad ++或Geany打開)
步驟4:Raspberry Part:自動啟動并添加新文件
如果您查看該程序,您會發(fā)現(xiàn)我使用了一些bash文件:
1) Start_jukebox :
實際上,目的是打開家庭影院的電源并切換到D.IN輸入(我的家庭影院中的光學(xué)輸入)
pi @ raspitone:/bin $ cat start_jukebox
#!/bin/bash
激怒SEND_ONCE juke框KEY_POWER
睡眠7
不發(fā)送SEND_ONCE自動點唱機(jī)KEY_AUX
睡眠2
2) stop_jukebox:
關(guān)閉家庭影院電源
pi @ raspitone:/bin $ cat stop_jukebox
#!/bin/bash
請勿發(fā)送SEND_ONCE自動點唱機(jī)KEY_POWER
這兩個bash文件由Python使用 os.system 命令
要啟動Python腳本,我做了一個小bash :
pi @ raspitone:?$ cat dem_jukebox.bash
#!/bin/bash
cd/home/pi
python jukebox_gui.py
對于GUI模式下的自動啟動,我只是在 /etc/xdg/lxsession/中修改了自動啟動文件LXDE-π結(jié)果
的 PI @ raspitone:在/etc/XDG/lxsession/LXDE-pi $ cat自動啟動
@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE -pi
@xscreensaver-不飛濺
@lxterminal --command =“ dem_jukebox.bash”
point-rpi
》
添加新的mp3文件:
要添加新文件,我更喜歡制作一個小的專用Python腳本:
new_song_file.py
我將首先說明系統(tǒng)文件的組織:
所有文件都在/home/中pi
mp3文件存儲在/home/pi/Music 目錄中
每個藝術(shù)家都有自己的子目錄來托管相關(guān)的mp3文件
pi @ raspitone:?/Music/Mike_oldfield $ ls -l 《br》總計760516
-rwxr ----- 1 pi pi 2254923 2017年6月30日A_New_Beginning.mp3
-rwxr ----- 1 pi pi 2691736 6月3日0 2017 Arrival.mp3
-rwxr ----- 1 pi pi 8383244 juin 30 2017 Ascension.mp3
-rwxr ----- 1 pi pi 5410816 juin 30 2017 Blue_Night.mp3
-rwxr ----- 1 pi pi 13125199 juin 30 2017 Castaway_(Instrumental).mp3
-rwxr ----- 1 pi pi 12903583 juin 30 2017 Castaway.mp3
-rwxr ----- 1 pi pi 2969869 juin 30 2017 Celt.mp3
-rwxr ----- 1 pi pi 9047745 juin 30 2017 Chariots_(Instrumental).mp3
-rwxr ----- 1 pi pi 9403263 juin 30 2017 Chariots.mp3
在目錄中的文檔可以找到要播放的文件的內(nèi)置列表。
pi @ raspitone:?/Documents $ cat list.txt
Franz_Ferdinand/Michael_live.mp3
Franz_Ferdinand/evil_and_a_heathen.mp3
Franz_Ferdinand/Walk_Away_live。 mp3
Franz_Ferdinand/love_and_destroy.mp3
Franz_Ferdinand/his_fffire。 mp3
Franz_Ferdinand/eleanor_put_your_boots_on.mp3
Franz_Ferdinand/missing_you.mp3
Franz_Ferdinand/this_fire_(playgroup_remix).mp3
Franz_Ferdinand/Jacqueline.mp3
我們還可以找到播放列表數(shù)據(jù) (但這是由Python腳本構(gòu)建的)
小型Python腳本在格式化后將新音樂(保存在“音樂”中)添加到list.txt中UNIX格式的標(biāo)題
以下是腳本:(可以通過Notepad ++或Geany打開)
第5步:通過Arduino Nano進(jìn)行電源管理
因為我想簡單地開始一些事情,所以我決定通過一個小型的nano來完成:
原理:
按下開始按鈕時,設(shè)備都是戰(zhàn)俘ered后,nano啟動(1或2秒),并通過觸發(fā)繼電器使按鈕觸點分路來接管電源管理。
然后,nano等待35秒以接收來自Raspberry的心跳(意味著啟動過程完成并且自動存儲塔程序已運(yùn)行。)
只要nano接收到心跳,它將保持繼電器打開(看門狗計時器)
如果不再有心跳(表示自動存儲塔)程序已停止)Nano等待20秒(以確保raspi完全停止)以釋放功率繼電器。
自動存儲塔已完全關(guān)閉
我添加了一個開關(guān)以激活nano的輸入以指示維護(hù)模式(我使用自動存儲塔通過ssh和vnc管理其他raspi服務(wù)器)。 Nano然后停用看門狗進(jìn)程
備注:
Raspi的心跳輸入需要下拉(但Nano認(rèn)為Raspi的3.3V為高電平)
可以用NE555完成,但是我很生氣,抽屜里總是裝有nano ?。。?!
這是簡短的C程序(可以用Notepad ++打開)
步驟6:布線
用于屏幕:
一個HDMI電纜和USB電纜在Raspi上用于供電和驅(qū)動屏幕。
對于前面板:
還從Raspi連接了USB電纜,以便可以上傳新的文件或進(jìn)行備份。
從Nano連接USB電纜,以便能夠訪問軟件(必要時進(jìn)行修改)
我還在樹莓派上插入了無線鍵盤加密狗無需使用外部USB插頭即可進(jìn)行維護(hù)
由于使用了Raspberry和Arduino,因此布線非常簡單。
全部位于條形矩陣板上。
使用樹莓2的GPIO:
Pin22(用于IR LED)
Pin 27(用于在Arduino上進(jìn)行心跳)
在Arduino
引腳2用作Raspi的心跳的中斷引腳。
引腳3至5用于驅(qū)動LED的(啟動,WDDT,維護(hù))。
引腳6是維護(hù)開關(guān)。
Pin 7輸出到繼電器屏蔽罩。
以下是壓條文件:
第7步:盒子
由于功率放大器和所用揚(yáng)聲器的不同,我不會做太多描述。
作為信息,家庭影院位于電視的底部。盒子。
只需放在揚(yáng)聲器上方:
1個低音揚(yáng)聲器
2個中型揚(yáng)聲器,我對其進(jìn)行了修改以將它們插入包裝盒中。
打開頂部:
帶有屏幕的前面板,LED,開關(guān)和USB插頭。
木頭:
對于揚(yáng)聲器,側(cè)面我用18毫米木板圍起來。
正面是10毫米膠合板,帶40毫米螺釘。
為便于布線和維護(hù)(如果需要! !?。┪覍㈦娐贩旁谇懊姘搴竺娴某閷现?/p>
為避免過熱,在后面板的底部做了一個大孔,并在后面板上放置了一個5V風(fēng)扇(8厘米)
上面的圖片只是一個想法。
所以,就是這樣?。。。。。。。?!
責(zé)任編輯:wv
-
樹莓派
+關(guān)注
關(guān)注
116文章
1679瀏覽量
105257
發(fā)布評論請先 登錄
相關(guān)推薦
評論