兩個多月前收到台灣樹莓派Sosorry先生贈送的樹莓派3B+、智慧語音控制套件(ReSpeaker 2-Mics Pi HAT)以及2.5A電源供應器,今天補上積欠已久的開箱文。前些日子,從Sosorry先生那裡得知,台灣樹莓派(Rice Lee)是目前唯一獲得英國Raspberry Pi官方認可的台灣地區經銷商。
智慧語音控制套件的相關說明,請參閱台灣樹莓派的智慧喇叭語音學習套件網頁。
樹莓派3B+簡介
我之前購買的樹莓派控制板有第一代Rev. 2, 2B和Zero,這一款Raspberry Pi 3 Model B+(以下簡稱Pi 3 B+)是我第一次使用內建Wi-Fi和藍牙的樹莓派控制板。
根據台灣樹莓派的商品說明頁,這一代最大的改變是提昇網路效能,更新部份如下:
- 使用 BCM2837B0 晶片(上一代為 BCM2837)64位元四核心ARM Cortex-A53,單核心時脈可達 1.4GHz。
- 使用 Cypress CYW43455 雙頻晶片(上一代為 CYW43438),支援 2.4GHz 和 5GHz 雙頻,並支援 Bluetooth 4.2。
- 使用 LAN7515(上一代為 LAN951x),支援USB 2.0連線的Gigabit級乙太網路。
- 支援乙太網路供電(Power-over-Ethernet, PoE),由四根新增的 Pin 做控制,但要搭配的擴充板。
- 更好的溫度管理,在不同溫度下可自動調整 CPU 速度。
售價和上一代相同,但我覺得比較可惜的是主記憶體沒有加倍、USB仍是2.0版。
拿到Pi 3 B+,我很開心地替它焊上micro USB延長線並連接一個micro HDMI轉接頭,打算接上Motorola Lapdock變身小筆電(參閱「Raspberry PI 2 + 自製Arduino + Motorola Lapdock 小改造」)。結果在開機過程中,Pi 3 B+會不停地重啟,因為效能變強了,對電能的要求也增加了,超過Motorola Lapdock電池的負荷。
此外,Pi 3 B+的micro SD記憶卡插座沒有彈簧,所以採用像下圖這款壓克力外殼時,很難取出記憶卡。
所以我鋸斷micro SD記憶卡開口外面的支架,控制板背面的1GB記憶體晶片位置,也開個散熱孔並且貼上散熱片(其實不需要,但是感覺比較cool)。
正面的微控器晶片也黏貼一個散熱片:
最後加上一個5吋電阻式觸控螢幕,使用台灣樹莓派(Rice Lee)品牌的5V/2.5A電源供應器或者行動電源,搭配藍牙鍵盤滑鼠,也是一台小巧便利的Linux行動電腦。
5吋電阻式觸控螢幕GPIO接腳與驅動程式
有些樹莓派的Linux系統內建觸控螢幕的驅動程式,像Sticky Fingers Kali-Pi(樹莓派專屬的Kali Linux發行版)。我使用樹莓派官方的Raspbian系統,並依照waveshare.com網頁的說明安裝觸控螢幕驅動程式。
比起合身的3.5吋螢幕,5吋螢幕的好處是有預留GPIO接點。底下5吋觸控螢幕的PCB板背面,如果需要透過GPIO操控硬體週邊,可以自行焊上接線。
下表翻譯自waveshare.com的商品說明,從中可看出電阻觸控採用SPI介面和一個中斷腳,所以除了22和26腳,其餘GPIO接腳都能用於控制週邊。
接腳編號 | 標示 | 說明 |
---|---|---|
1, 17 | 3.3V | 3.3V電源輸入 |
2, 4 | 5V |
5V電源輸入 |
3, 5, 7, 8, 10, 11, 12, 13, 15, 16, 18, 24 |
NC |
空接 |
6, 9, 14, 20, 25 | GND | 接地 |
19 | TP_SI | 觸控面板SPI資料輸入 |
21 | TP_SO | 觸控面板SPI資料輸出 |
22 | TP_IRQ | 觸控面板中斷訊號 |
23 | TP_SCK | 觸控面板SPI時脈 |
26 | TP_CS | 觸控面板晶片選擇腳 |
調整VNC解析度
Raspbian系統內建RealVNC伺服器軟體,在Raspberry Pi Configuration(設置)畫面的Interfaces(介面)啟用VNC之後,只要在電腦或手機安裝RealVNC用戶端軟體,就能透過網路遠距操控樹莓派(參閱「安裝與設定Raspberry Pi的RealVNC伺服器」)。
5吋觸控LCD螢幕的解析度是800×480,使用VNC連入樹莓派時,用戶端的解析度也將是800×480。然而,某些軟體的操作畫面(如:RealVNC伺服器的設定面板)需要更高解析度才能顯露完整視窗,所以有必要調高VNC連線畫面的解析度。
樹莓派微電腦沒有BIOS,裝置的記憶體、顯示器、聲音、相機…等設定,都存放在config.txt檔案裡面,完整路徑是/boot/config.txt。
HDMI訊號輸出格式,是在config.txt檔案中透過hdmi_group(hdmi分組)和hdmi_mode(hdmi模式)命令設定。其中hdmi_group的可能值為0, 1或2,接電視時,通常設定成1;接電腦螢幕,則設定成2。
hdmi_mode則是設定視訊輸出的解析度和更新頻率,依照hdmi_group分成兩組數字編號,從1~59或者1~85。以hdmi_group=2為例,hdmi_mode設定成82,代表1920×1080, 60Hz視訊輸出。關於HDMI訊號輸出格式的詳細設定說明,請參閱Raspberry Pi官網的VIDEO OPTIONS IN CONFIG.TXT文件
安裝5吋觸控螢幕驅動程式時,它將在config.txt檔案末尾新增如下的設定:
hdmi_group=2 hdmi_mode=87 hdmi_cvt 800 480 60 6 0 0 0 hdmi_drive=1
其中,hdmi_mode=87,代表「自訂解析度和更新頻率」,自訂的解析度和更新頻率透過hdmi_cvt設定,這道指令的前3個參數,分別代表解析度寬(800)、高(480)與更新頻率(60)。
hdmi_drive(hdmi驅動)指令的可能值為1或2,若設定成1,代表聲音從樹莓派的3.5mm插孔輸出;2代表視訊和音訊從HDMI整合輸出。此觸控螢幕沒有內建揚聲器,所以設定成1。
如果把hdmi_mode=87改成其他參數值,例如hdmi_mode=16,代表1024×768, 60Hz視訊輸出,後面的hdmi_cvt自訂解析度命令將失效。這樣一來,VNC連線的畫面解析度確實提高成1024×768,但是5吋螢幕將只會顯示部份畫面,超過800×480範圍的內容會被截掉。
另一組跟視訊解析度相關的參數是framebuffer_width(影格緩存_寬)和framebuffer_height(影格緩存_高),底下設定會強制讓LCD螢幕顯示成960×640,VNC連線的畫面也會變成960×640,但由於5吋觸控螢幕的真實解析度只有800×480,所以觸控螢幕的顯示畫面會變得模糊。
framebuffer_width=960 framebuffer_height=640
設定VNC虛擬桌面解析度
自訂VNC連線畫面解析度,同時保有觸控LCD解析度的方法,是讓VNC伺服器產生虛擬桌面(virtual desktop)。下圖取自RealVNC官網的Creating and remoting a virtual desktop文件,虛擬桌面就是在樹莓派的主記憶體中,額外劃分一塊區域當作顯示記憶體來暫存畫面內容,提供給VNC連線的用戶端。
在終端機輸入vncserver命令,就能產生一個VNC虛擬桌面,預設的解析度為800×600。
接著,從VNC用戶端連線到樹莓派的IP位址並指定虛擬桌面編號(目前只有一個,所以編號為1)。假設樹莓派的IP位址是192.168.7.132,VNC虛擬桌面的連線位址要設定成:192.168.7.132:1。
vncserver命令後面可以附加解析度參數,例如,底下將產生960×640解析度的虛擬桌面:
vncserver -randr=960x640
解析度設定會影響到佔用的主記憶體大小和網路傳輸頻寬,960×640已經夠我平常使用了。
開機啟動VNC虛擬桌面的自訂服務程序
假如每次VNC連線都要手動輸入建立虛擬桌面的命令,實在太麻煩了,在樹莓派官方討論區的這一篇貼文裡面,網友Rob提供一個開機啟動VNC虛擬桌面的自訂服務程序,設定步驟如下:
1. 在 /etc/systemd/system/路徑底下新增一個systemd開機啟動腳本,檔名:vncvirtualdesktop.service。
2.在其中輸入底下的程式碼(此虛擬桌面設定成960×640,你可以自由修改):
[Unit] Description=Start VNC Server Virtual Desktop [Service] Type=oneshot ExecStart=/bin/su pi -c '/usr/bin/vncserver -randr=960x640' ExecStop=/usr/bin/vncserver -kill :1 RemainAfterExit=yes [Install] WantedBy=multi-user.target
3. 執行systemctl enable vncvirtualdesktop.service啟用此服務(系統將要求你輸入管理員密碼)。
以後,從VNC用戶端連線到樹莓派的IP位址並指定虛擬桌面編號,即可連線到此虛擬桌面。