2024年12月15日 星期日

樹莓派功能再升級 - 控制介面實體化

自從DIY了金屬面板機殼後,樹莓派的外觀大升級,串流功能滿足了大部份的收聽需求,現在大部份是放在電腦旁邊使用,不過在使用了兩年後,感覺到有些許不滿足的地方:

一、操控音量需要用遙控器、手機APP或電腦網頁界面,在機器面板上沒有直接操控的旋鈕,不夠方便。

二、PiCorePlayer的Jivelite 界面相當完整,但是用電阻觸控實在是有點雞肋,一直嚮往能用飛梭旋鈕操控選單界面的功能,類似SqueezeBoom的大旋鈕。

三、這個樹莓派撥放器目前放在電腦螢幕旁邊,有時候需要同時播放電腦的音效和NAS串流的音樂,因此需要一個混音的裝置。

四、金屬面板上偌大的面積範圍只有電源按鈕和5寸面板的可視區域,其他空白的區域顯得有些突兀,如果能增加一些功能旋鈕,整個面板會更加完整。


用小畫家把旋鈕貼上面板模擬一下外觀,看起來還不錯!


 









要達成以上的功能旋鈕,上網找了幾個合適的方案:

二進二出的混音器:




其中一路來自樹莓派音頻輸出,另一路來自電腦的音效卡輸出,經過這個混音器後,可以個別調整混音的比例,最後輸出給喇叭,另外前面板還有一個3.5mm的耳機孔輸出,也許可以拉到面板端接耳機。



旋轉編碼器(Rotary Encoder):
這是一種可以根據順時針或逆時針旋轉輸出兩個不同相位的方波編碼器(EC11 Encoder),透過樹莓派的GPIO可以解碼得到輸入的訊息,除了旋轉之外,還提供一個按鍵的功能,網路上有人已經把解碼後的訊息處理後用來操控Jivelite的界面。




樹莓派總共有40 Pin,有多根GPIO可以用,之前LCD面板的觸控佔用了幾根,確認這次旋轉編碼器不會佔用相同的Pin腳,由於這次只用一個旋轉編碼器,所以只會接右邊的腳位 
考慮到混音器及旋轉編碼器的旋鈕可以安裝在8MM厚的面板,為了協調感,找了直徑30MM高17MM的旋鈕及兩個直徑15MM高17MM的音量旋鈕,同時選用的旋鈕要找D-Type,小旋鈕大部份是梅花軸,在網站找了好久才找到!


先把編碼器和電路板組合起來,電路板是光華商場買的萬用板,用鋸子切割並鑽孔,拉線和固定都會比較有支撐,另一邊是樹莓派的擴充板,加一個2.54MM黑色接頭和排針,用杜邦線接起來就可以測試啦!

在面板鑽孔之前,先確認功能是不是都能運作!


這次鋁板的鑽孔不打算找加工廠了,上次成功用手鑽工具鑽出位移3MM的螺絲孔加攻牙後,這次再來挑戰6MM~10MM鑽孔,總共有六個孔要鑽,工程也算大的,主要是可以仔細拿捏鑽孔的位置,反正沒時間壓力,慢慢來!

沒有10MM的鑽頭,用3MM和6MM鑽頭鑽出難看的孔,裝上RCA端子後,就看不出來了!



前面板的孔位比較單純,6MM的鑽頭就可以應付了,本來還傷腦筋怎麼把編碼器固定在面板上,在組裝時發現旋轉進去可以把編碼器卡進面板中,這樣可以一次解決固定的問題也解決旋鈕柄不夠長的問題!



混音器假組合,兩個開孔處還算準確,不過耳機輸出孔位有點干涉到,需要再修一下

兩個音量旋鈕是D軸,找不到尺寸小又支援D軸的旋鈕,先用原來的塑膠旋鈕先撐一下!


等了兩週換上對岸買來的10mm D軸旋鈕,完整度更高了!




2024年5月5日 星期日

DIY 螢幕抽屜櫃 改色

 

        
             這個螢幕抽屜櫃是蝦皮上買的,照片看起來很不錯,收到貨時差點沒昏倒,品質實在差到不行,嫌著嫌著也將就用了好幾年,木頭是桐木,時間一久發現木紋越來越深,呈現黑黑的一片,實在難看,被我冷落在角落好長一段日子,眼不見為淨 !


          某天在YouTube上看到舊家具重新上漆,讓家具脫胎換骨一番,這讓我興起一股衝動,恨不得馬上開始動工,先上蝦皮搜尋傢俱漆,怕買到劣質油漆,這次只挑台灣品牌樂客,刷漆的時候不會有刺鼻的味道 ! 家裡裝潢走的是鄉村風,所以選的是白色平光漆,百搭不同的顏色!


        為了遮蓋掉深色的木紋,打算上兩到三道漆,按照說明步驟,上漆時要薄,比較容易乾,由於不是專業的油漆工,常常會塗的太多,照道理應該要等漆膜乾了以後再上第二道,可能是個性太急躁,上第二道漆時發現有些地方可能漆膜較厚,還沒完全乾,塗的很不平整,想說應該是毀了! 

        索性先不理,放著一個下午的時間讓漆乾透,結果發現漆膜會融合在一塊,乾掉的時候刷痕就不是很明顯了! 最後組裝的時候發現抽屜外圍上了漆之後會有一個厚度,要把抽屜裝進櫃子時卡卡的,果然不是專業,DIY之後櫃子更難用了 😓 

         另外一個木製CD架也一併刷成白色的,看起來也清爽多了!



        放回桌上一白遮三醜,和其他櫃子擺在一起也不會有違和感 ! 抽屜卡卡的問題,再找時間處理,這個周末就先這樣啦!









2023年4月15日 星期六

VIOS 升級 Android Auto

 


DA-7車機也使用了快兩年,大致上都沒問題,只是使用Miracast手機只有投屏而無法操作觸控,還是有許多情況不方便,另外手機投屏也會特別燙,想了好久,最後仍是克制不了心中的小惡魔,於是在網路上收購了一台支援CarPlay和Android Auto的車機,便宜的車機效能不怎麼樣,只要能用Android Auto做導航外加聽Youtube音樂就足夠了 !


這台是車美士的主機SDSV-1210,後面的接線和DA-7幾乎一樣,算是無痛轉移,有了上一次的拆機經驗,這次的流程在五分鐘就搞定。

DA-7


SDSV-1210


搭配手機Android Auto,目前只支援有線連接,不像Apple CarPlay可以無線,反正可以一邊充電一邊聽音樂加導航,也算不錯了!







2022年9月11日 星期日

SqueezeBox Boom 網路電台收聽

自從Hinet公告HiChannel撥放電台廣播的服務即將在2022/9/30停止服務後,就一直思考我的Squeezebox Boom收聽廣播的這件事是不是會因此中斷,回想十多年前網路收音機蓬勃發展,因為HiNet的HiChannel改變了串流放送格式,讓各家的網路收音機都成了電子垃圾,曾幾何時,Logitech Squeezebox Boom也撐過這段時間,我也沒放棄它。之前沒放棄,我想這次應該也不會放棄吧 ! 

 搜尋了幾個電台網站的線上收聽方式,發現只要抓取到串流的M3U8檔案,加入Logitech Media Server的Favorite List, 就可以撥放了 ! 




問題來了 ! 怎樣才能抓到各個電台的串流檔案呢 ? 以下是我參照網上其他人的建議方式,不保證一定都可以,至少我想聽的電台都還可以抓到。

首先打開微軟Edge瀏覽器,Google搜尋想聽的電台網站,找到撥放電台的Widget,按滑鼠右鍵選擇 "檢查".

先找一個電台 News XX 試試,網頁中有一個撥放的介面,點選後會開始串流。滑鼠在上面按右鍵出現選單後選擇 "檢查"。




網站右方會出現一堆子分頁視窗,會有一個網路頁。




點選網路頁面後會出現撥放串流的內容如下:



在這個撥放檔案再按滑鼠右鍵儲存連結。


貼上Logitech Media Server Favorite List即可。

 再來就可以從Favorite 點選想聽的網路電台了 !!


這些連結是當下從瀏覽器抓下來的,不確定這個連結在一段時間之後是否會失效,有幾個連結似乎都還沒有問題,其餘的就有待時間來確認了!

NEWS 98
佳音台北台
佳音現代音樂台
佳音經典音樂台
台北廣播電台
好事 903 電台
好事 935 電台
好事 989 電台
幸福電台
栗子輕音樂
桃園Go Go Radio
港都 983 電台
羅東電台 FM90.3
警廣全國治安交通網
飛揚調頻 895

2022年4月16日 星期六

樹莓派外觀再進化 - DIY音響機箱




自從換了面板之後,越來越覺得現有的外殼好像還是和4吋面板格格不入,先前就有想過弄一個全鋁金屬機箱來玩玩,無奈能夠提供客製化的機箱選擇不是太多,找遍了露天賣家提供的機箱,為了能和TEAC DAC擴大機疊在一起,面板寬度限制在215mm,高度能塞得下4吋面板,找了好久終於找到一個215mmx90mmx220mm,應該還蠻適合的,詢問賣家可以代客挖孔面板後,便開始如火如荼的畫起草圖 !

前面板

前面板厚度有8mm厚,考慮LCD疊在後面會看到厚厚的邊框,決定把鋁板背面挖深一塊區域,然後整塊LCD面板可以鎖在鋁板上,讓LCD面板更貼近鋁板外面 。

3D示意圖

後面板因為可以挖孔,樹莓派的輸出介面可以完整的和機殼開孔對位,完整度應該會更高 !
後面板

給師傅的尺寸圖不小心失誤,RCA端子孔位和數莓派孔位重疊到了,還好師傅發現幫我修正,超感激的!  由於最近香港疫情升溫,物流中途耽擱,盼了將近一個月才等到貨,終於可以組裝訂製的機箱了 !



詳細比對了一下,還是有一點失望,師傅並沒有完全照設計的尺寸圖開孔,前面板的電源開關孔廠商竟然漏掉了,螢幕開窗挖深的區域偏中間了,後面板的RCA孔也沒照圖面開在正確的位置。所幸液晶面板模組可以嵌進挖深3.5mm的區域內,螺絲孔位都還正確,顯示面板貼在鋁板開窗處,沒有太突兀,其他的部份也只能將就了 ! 第一次自己畫設計圖再和廠商溝通細節,就算圖面沒問題,廠商製作時還是很容易發生失誤,下次有機會應該要讓廠商先拍照片確認再寄出才對。



中間在等待機箱的過程,同時尋找適合的電源供應和排線端子座,電源是用明緯的5V3A工業電源供應器,機箱看起來空蕩蕩的,尺寸小巧塞得進機箱中。


前面板還算簡潔

背板孔位還算到位


由於機箱會放在電視櫃裡面,坦白說觸控的功能實用性不大,反倒是手持遙控器會比較方便,
本來想找一個紅外線遙控器搭配一個紅外線接收感測器,後來發覺金屬機箱也沒有額外的開孔,紅外線遙控的方式可能不太行 !

      靈機一動拿了手邊的機上盒2.4G無線遙控器試試 ! USB接收器插在樹莓派USB埠上會偵測一個滑鼠裝置及鍵盤裝置。按了上,下,左,右,及OK鍵,Home鍵,返回鍵,甚至音量鍵都是可運作的,真是太完美了 ! 客製化1 ~ 5按鈕指定撥放,暫停,停止,就可以完整操作了 !




使用明緯工業用電源供應器,原本擔心聲音訊號會不好,還好我是木耳,感覺不出來 !接下來可以好好的聽音樂了 !

後來還是沒忍住硬是找廠商開了一個按鈕的孔,但是還是耍白癡給錯數字,開孔的位置偏了,只能將就了!



2022年2月28日 星期一

樹莓派 PiCorePlayer 顯示功能再進化

話說樹莓派換新機殼後也用了幾個月了,對於陽春的HMI面板顯示撥放的資訊還算差強人意,只是有一天在網路上看到其他玩家把樹莓派加上顯示面板後能夠顯示更多的視覺變化的真是嘆為觀止,心中也醞釀了好一陣子,趁著連假前敗了一個4吋HDMI介面加電阻觸控功能的面板,要在連假把我的樹莓派換裝成更酷炫的顯示效果!




網路上搭配樹莓派的PiCorePlayer有許多附加的功能可以嘗鮮,今天的重點是Jivelite. 它是在PiCorePlayer系統上實現類似SqueezeBox 撥放器的介面選單,搭配顯示面板後可以表現得就像Logitech Squeezebox Touch一樣,話說當年的Logitech Squeezebox Touch要價不斐,樹莓派搭上一個7吋面板就能有類似的功能,對鍾情Logitech Media Server的我來說真是一大福音。



這次選用的是4吋800x480 HDMI面板,考慮的是介面標準,免得搞不定就麻煩了!  面板和樹莓派連接很簡單,一個是26Pin的接頭和樹莓派的40pin靠第一Pin的位置對插,再把廠商附的HDMI對插連接器把面板和樹莓派連接即可。



關於PiCorePlayer的設定,研究了一下廠商的資料,不難上手,只不過還是需要一些時間摸索就是了! 首先還是要用Putty.exe連接上樹莓派,必須要設置HDMI驅動的一些參數,讓面板的顯示符合想要的條件,譬如橫屏顯示等等。


安裝Jivelite 模組
選擇PiCorePlayer Tweaks頁面


更新及下載相關的套件,並設置AutoStart為Yes


掛載SD卡的檔案系統 : 
tc@piCorePlayer:~$ m1
cd /mnt/mmcblk0p1

編輯config.txt
修改設定如下: 參考連結 : RPiconfig
hdmi_group=2     - 指定 DMT 視訊格式
hdmi_mode=87    - 指定解析度,網路上查不到,估計是廠商
hdmi_timings=480 0 40 10 80 800 0 13 3 32 0 0 0 60 0 32000000 3
#dtoverlay=ads7846,cs=1,penirq=25,penirq_pull=2,speed=50000,keep_vref_on=0,swapx
dtoverlay=ads7846_waveshare - 掛載廠商提供的觸控驅動模組
hdmi_drive=1 - 
display_rotate=3 - LCD轉270度
disable_splash=1 - 取消廠商開機畫面

關於觸控模組,需要從廠商網站下載,複製ads7846_waveshare.dtbo到overlay目錄中。

tc@piCorePlayer:~$ pcp bu     - 備份資料檔

重開機可以看見漂亮的選單介面了!

不過發現點選觸控滑鼠游標會亂跑,參照網路上的說明需要對觸控校正。
tc@piCorePlayer:~$ sudo rm /usr/local/etc/pointercal - 刪除觸控校正舊資料
tc@piCorePlayer:~$ sudo TSLIB_FBDEVICE=/dev/fb0 TSLIB_TSDEVICE=/dev/input/event0 ts_calibrate     - 觸控校正
tc@piCorePlayer:~$ sudo TSLIB_FBDEVICE=/dev/fb0 TSLIB_TSDEVICE=/dev/input/event0 ts_test     - 觸控測試

新的pointercal產生,把它加入備份清單,修改/opt/.filelist
加入一行
/usr/local/etc/pointercal

tc@piCorePlayer:~$ pcp bu     - 備份一下


檢視/usr/local/etc/init.d/pcp_startup.sh 搜尋jivelite發現以下幾行:

#-------------------------------------------------------------------------------
# Start Jivelite.
#-------------------------------------------------------------------------------
if [ "$JIVELITE" = "yes" ]; then
        echo -n "${BLUE}Starting Jivelite...${NORMAL}"
        eventno=$( cat /proc/bus/input/devices | awk '/FT5406 memory based drive
        if [ x"" != x"$eventno" ]; then
                export JIVE_NOCURSOR=1
                export TSLIB_TSDEVICE=/dev/input/$eventno
                export SDL_MOUSEDRV=TSLIB
                export SDL_MOUSEDEV=$TSLIB_TSDEVICE
        fi
        export HOME=/home/tc
        # Alternative jivelite script, mainly used for waveshare devices.  Locat
        if [ -x ${TCEMNT}/tce/jivelite.sh ]; then
                sudo -E -b ${TCEMNT}/tce/jivelite.sh >/dev/null 2>&1
                echo " ${GREEN}Done.${NORMAL}"
        elif [ -x /opt/jivelite/bin/jivelite.sh ]; then
                sudo -E -b /opt/jivelite/bin/jivelite.sh >/dev/null 2>&1
                echo " ${GREEN}Done.${NORMAL}"
        else
                echo "${RED}There is a problem with the Jivelite installation. P
        fi

有幾點要留意的是  這個程式會自動抓觸控的裝置,但是搜尋的是FT5406,不是Ads7846,想要改這行指令卻被防寫,不知道怎麼解開,網上其他人的建議是另外在建立一個jivelite.sh 在/mnt/mmcblk0p2/tce目錄中.

首先先了解觸控裝置是否被偵測到
tc@piCorePlayer:~$ cat /proc/bus/input/devices

I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="ADS7846 Touchscreen"
P: Phys=spi0.1/input0
S: Sysfs=/devices/platform/soc/3f204000.spi/spi_master/spi0/spi0.1/input/input0
U: Uniq=
H: Handlers=mouse0 event0
B: PROP=0
B: EV=b
B: KEY=400 0 0 0 0 0 0 0 0 0 0
B: ABS=1000003


新增的jivelite.sh內容是從/opt/jivelite/bin目錄下複製而來,內容如下:
#!/bin/sh

export LOG=/var/log/jivelite.log

if [ -f /usr/local/sbin/config.cfg ]; then
    source /usr/local/sbin/config.cfg
fi

if [ ! -z ${JL_FRAME_BUFFER} ]; then
    export SDL_FBDEV=$JL_FRAME_BUFFER
    echo "Using $SDL_FBDEV as frame buffer device." >> $LOG
fi

if [ -z ${JL_FRAME_RATE} ]; then
    JL_FRAME_RATE=22
fi

export JIVE_FRAMERATE=$JL_FRAME_RATE

echo "Frame rate set to $JIVE_FRAMERATE frames per second." >> $LOG

if [ -z ${JL_FRAME_DEPTH} ]; then
    JL_FRAME_DEPTH=32
fi

/usr/sbin/fbset -depth $JL_FRAME_DEPTH >> $LOG

echo "Frame buffer color bit depth set to $JL_FRAME_DEPTH." >> $LOG

if [ ! -z ${SDL_TOUCHSCREEN} ]; then
    export JIVE_NOCURSOR=1
fi

export JIVE_NOCURSOR=1    - 隱藏滑鼠游標
export HOME=/home/tc
export SDL_VIDEODRIVER=fbcon
export SDL_FBDEV=/dev/fb0
export SDL_MOUSEDEV=/dev/input/event0    - 這裡的裝置號是先前偵測的數字
export SDL_MOUSEDRV=TSLIB

while true; do
    sleep 3
    /opt/jivelite/bin/jivelite >> $LOG 2>&1
done


隨著音樂的律動而變化,視覺效果真不錯!

沒撥放音樂時換顯示日期和時間!









樹莓派功能再升級 - 控制介面實體化

自從DIY了金屬面板機殼後,樹莓派的外觀大升級,串流功能滿足了大部份的收聽需求,現在大部份是放在電腦旁邊使用,不過在使用了兩年後,感覺到有些許不滿足的地方: 一、操控音量需要用遙控器、手機APP或電腦網頁界面,在機器面板上沒有直接操控的旋鈕,不夠方便。 二、PiCorePlaye...