50個樹莓派的小撇步

 

本文譯自樹莓派雜誌80期(MagPi issue 80),原文標題為 The 50 Best Raspberry Pi Tips(首圖與插圖來源同樣取自雜誌內頁)。本篇與原文同樣使用CC 3.0 BY-NC-SA授權,歡迎標註原作者轉載,若有任何不妥與指教敬請告知。

硬體小密技

1. USB開機

您可以從USB介面啟動Pi(型號3B,3B +,3A +,2B v1.2),而不是使用SD卡。其優點是可以更快、更可靠地長期使用,而且還可以獲得大量額外的存儲空間。 請參閱 magpi.cc/eXHfjq 上的官方文件。

2. Power over Ethernet (PoE)

樹莓派官方所推出的PoE HAT可以透過實體乙太網路線提供Raspberry Pi 3 Model B+充足的電力,再一些要大量連接樹莓派的專案中相當實用。

3. 音訊輸出

所有的樹莓派型號都有3.5mm音訊接頭可以當作類比的音源輸出。在一代B+以後的版本,已經把類比的影像輸出也結合在內,所以從3.5mm的端子尖端開始的訊號依序為:左聲道、右聲道、接地、類比影像,總共四組訊號。

4. 切換音訊選項

HDMI影像輸出帶有音訊,如果你的顯示器沒有內建喇叭,這時候樹莓派上的3.5mm插孔就可以派上用場了。可以從工作列上的音量圖示點選右鍵,將聲音輸出從HDMI改為類比。或是在命令列上執行:

amixer cset numid=3 1

將最後的數字”1”代表從類比輸出音訊,”2”則代表從HDMI輸出音訊。然而也可以從raspi-config更改開機預設值,執行:

sudo raspi-config

選擇Advanced Options > Audio,接著選擇” Force 3.5mm (‘headphone’) jack”或” Force HDMI”來更改預設值。

5. 提供充足的電源

樹莓派的電力需求會隨著你的連接設備而增加,在安全的情況下GPIO引腳總共可以提供50mA的電流,其中單一GPIO的電流最大為16mA。此外HDMI介面需要50mA,相機模組則需要250mA,而鍵盤與滑鼠則不會超過100mA。建議使用官方電源並計算你總共需要的電力:magpi.cc/xfszUR。

6. 鏡頭模組

你可以使用Webcam,但是樹莓派也有專用的相機模組(magpi.cc/jbKzbf),可接於樹莓派上CSI(Camera Serial Interface)介面。相機模組可以拍攝高解析度影片與照片,對於初學者來說也相當容易使用。然而如果是進階的使用者,有許多網路應用可以參考,如縮時攝影、慢動作攝影、甚至也可以運用樹莓派的library來製造視覺效果。

7. 觸控螢幕

樹莓派觸控顯示器(magpi.cc/CAPxtI)提供用戶製作整合性的專案,譬如平板電腦、資訊娛樂系統與嵌入式系統等。樹莓派可以透過板上的DSI介面連接觸控面板。(除了Zero與Zero W以外)

8. GPIO指引

打開終端機並輸入:

pinout

…用於GPIO的快速視覺指南引腳。或輸入:

pinout -x

…打開網頁瀏覽器,並指向它到pinout.xyz的交互式模型。

 

9. 機構尺寸圖

你可以在Raspberry Pi網站上看到Raspberry Pi 3B+(及其他所有型號)的機構圖:magpi.cc/WWFUji

 

10. 無線熱點

許多Raspberry Pi型號都具有無線區域網路接收器,以連接到本地網絡。但你也可以使用無線基地台建立無線熱點。這個過程有點長,但它非常適合了解無線區域網路的工作原理。在magpi.cc/nnriRT閱讀更多內容。

 

Raspbian小撇步

11. 展示程式

Raspbian附帶了一系列範例程式,示範各種功能。這裡可以找到:

cd /opt/vc/src/hello_pi

它們是用C語言編寫的。編譯它們:

./rebuild.sh

你現在可以在每個範例資料夾中執行.bin文件。例如,執行:

cd hello_tiger

./hello_tiger.bin

...在畫面上可以看到一個老虎圖像在旋轉。有關更多信息,請參閱magpi.cc/tpNaGV。(譯註:筆者實際測試並沒有出現旋轉的老虎XD,可能跟作業系統與套件的版本有關,各位讀者可以再試看看,順便可以玩玩其他程式)

12. 螢幕保護程式

預設情況下,Raspberry Pi桌面沒有安裝方便使用的螢幕保護程式。首先,你需安裝X Windows螢幕保護應用程式。

sudo apt-get update

sudo apt-get install xscreensaver

這可能需要幾分鐘的時間。螢幕保護應用程式將出現在桌面選單中的偏好設定(Preferences)裡。這提供許多保護螢幕設定或停用的選項。

 

13. 摸熟config.txt

注意:此僅適用於進階Maker!

Pi使用的組態檔案與一般PC上的BIOS不同。此檔案通常可從Linux /boot/config.txt取得,且可以root身份進行編輯。

sudo nano /boot/config.txt

任何變更只有在重新啟動Raspberry Pi後才會生效。Linux啟動後,你可以使用以下命令查看目前活動設置:

vcgencmd get_config <config>

...顯示個別的設定值;例如,vcgencmd get_config arm_freq

vcgencmd get_config int

...列出所有設置(不為零)的整數配置選項。

vcgencmd get_config str

...列出所有設置(non-null)的字符串配置選項。

可以在config.txt文件中編輯一系列選項,請參閱rpf.io/configtxt。

 

14. 騰出空間

你可以透過刪除Raspbian的一些預設程式,減少專案、文件及程式碼的SD卡容量。您可以從命令行中刪除軟體:

sudo apt purge mathematica

sudo apt clean

sudo apt autoremove

但是從Menu > Preferences > Recommended Software選擇會更好。將不想要的程式取消勾選,並點選OK。

 

15. 升級(與還原)作業系統核心

如果你是使用標準的Raspbian更新或升級程序,它會自動更新作業系統核心至最新的穩定版本,這是推薦給一般大眾升級的方法,但有時候,你會想要升級到最新的測試版本,

sudo rpi-update

這個命令rpi-update會下載最新的(不穩定、測試)核心版本,並將所有需要的檔案複製到你的系統,補充:這個最新的測試版本不保證正常運作!務必確認它不會跟你的套件衝突。它不提供自動移除這些檔案。

在嘗試完上面提到的rpi-update或其他客製的系統核心版本,想要還原到目前保留Raspbian的核心版本,輸入下面命令即可完成。

sudo apt-get install --reinstall raspberrypi-bootloader raspberrypi-kernel

 

16. 修改密碼

在Raspbain的標準安裝下,默認的使用者名稱是Pi密碼是raspberry。如果都不更改密碼,任何人都可以進到你的樹梅派,可以到Menu > Preferences > Raspberry Pi Configuration 中的System索引,點擊密碼(Password)後,輸入一個全新的密碼,按確認(OK)來做更改。

 

17. 保持Raspbain在最佳狀態

有時候會發現一些軟體的安全漏洞,可以透過更新來修補它們,所以最好保持在最新的版本,在terminal輸入sudo apt-get update來更新套件清單,然後輸入sudo apt-get dist-upgrade更新這些套件至最新版本到你的系統。

 

18. 安裝Fail2ban

如果有人想要駭進你的樹梅派,他們會不斷猜測你的使用者名稱及密碼,來駭進去,這種方法我們俗稱“暴力解”。要防止這種方法,只需要安裝叫Fail2ban這個套件,輸入sudo apt install fail2ban來安裝它,就會在輸錯密碼五次後禁止輸入密碼10分鐘。

 

19. 修改預設SSH埠

如果你修改過預設的SSH埠,任何人想連接上就需要知道你改成哪一個SSH埠,要更改它只需要輸入sudo nano/etc/ssh/sshd_config更改Port22這行至Port2222或其他你想要的數字,然後輸入(CTRL+O, ENTER, CTRL+X)來儲存,最後輸入sudo service ssh restart來讓SSH重新起動。

 

20. 關閉不必要的介面

要阻止駭客最安全的方法就是直接拔掉網路線,但直接更改系統設定更簡單,進到Main Menu →> Preferences →> Raspberry Pi Configuration,然後點選Interfaces這個索引,就可以關閉你不需要的介面。

 

程式與專案小技巧

21. 切換Thonny IDE

如果你仍然在使用python IDLE或Text Editor寫程式,那趕快換到Thonny IDE。它就跟其它編輯器一樣簡單,但有個基本的除錯器,能讓你更輕鬆的除錯你的程式,按CTRL+F5代替F5,讓程式進入Debug模式,不像許多其它功能強大的IDE(整合開發環境),還需要設置斷點。按F6來一次跑比較多行,按F7來跑每一行指令。非常適合創客,因為可以解決程式的問題,但又不會很難懂,很好上手,所以你可以繼續專注在你的專案。

 

22. GPIO Zero

有樹梅派,你一定要學會怎麼使用使用GPIO Zero Python的程式庫(現在的版本是1.5),這個程式庫是為了解決在樹梅派上使用電子元件或套件的麻煩,用了GPIO Zero只需要花一點時間了解如何讓元件套件運作,你可以花更多時間在做整合,詳細可以參考:gpiozero.readthedocs.io

 

23. 製作接線圖

你曾經想做一個電路圖像雜誌或書籍上的那樣嗎?那Fritzing能完全符合你的需求,他還在測試版,且大部分人都在使用Windows版本,這些都不重要,重點是它有支援 Raspberry Pi,一樣到terminal輸入指令來安裝它吧!

 

sudo apt-get update

sudo apt-get install fritzing

輸入後重新啟動你的樹梅派,然後就可以在Menu > Programming底下找到它。另外我們一般在樹梅派開啟parts bin時會遇到一些問題,如果讀者有發現怎麼修正它,麻煩告訴我們。

 

24. 樹莓派遇上Arduino

樹莓派搭配Arduino將會更完美,乍看之下他們倆個有點像,但其實功能非常不同,樹梅派是一個單板電腦,但Arduino只是一個微控制器。他們倆個一起用絕對更強大,因為樹梅派擅長於高階運算與應用,適合主控Arduino。你可以安裝這個套件在樹梅派上控制Arduino:

sudo apt-get upgrade

sudo apt-get install arduino

Arduino的程式叫做"sketches",它的語法是建立在C語言的基礎上,如果想了解更多資訊,可以參考我們的出版的書learning C(magpi.cc/learn-c-book),同時樹莓派雜誌第67期也有詳細的介紹樹莓派遇上Arduino (magpi.cc/67)

 

25. Codewars

要增加自己程式能力最好的方法,就是不斷的接受新的挑戰,如果你想接受這些挑戰,那就在樹莓派登入Codewars網址(codewars.com),它走線上遊戲的風格,當你完成挑戰可以得到點數跟升等。我們甚至看到有些工作的面試或程式訓練營塞選也開採用這種方式。

 

26. 學習焊接

這邊有個將兩線焊接在一起的技巧叫Western UnionLineman,如果你要連接兩線你一定要會(magpi.cc/mckKVW),最早用於電報機,他是將兩線互相纏繞,讓他們彼此互相拉住對方如圖,再加以焊接讓他更牢固。

27. 製作自己的材料包

我們建議每一個Maker都應該自己製作屬於自己的套件包。首先找到一個有分成很多格子的零件盒,在裡面放入一些常會用到的電子零件,像是電阻、電容、發光二極體(LED)、按鈕、電位器(可變電阻)、蜂鳴器、麵包板、杜邦線。你可以在樹梅派的經銷商找到這些零件或是前往劍橋的樹莓派商店,我們常用小尺寸麵包板來設計範例電路,若你也能有一個也可以更容易複製我們的專案。magpi.cc/dXHByV

 

28. 二手再生

如果你所在地區有一些二手商店或市集,你可以從裡面看到很多靈感,並運用樹梅派升級它們,是個現在很夯的活動,像知名創客Martin Mander就用回收舊的收音機、電視、玩具來改造,可以追蹤他的推特(Twitter)@MartinWMander獲得一些發想。

 

29. 不要吝嗇分享

要得到靈感跟幫助最好的方法就是將專案分享在Raspberry Pi community(樹梅派社群),上期我們在推特(Twitter)上發起了#MonthOfMaking的活動,促進讀者互相分享自己的作品。錯過沒關係,不用等到明年的活動了,分享你的作品在我們的討論會吧(magpi.cc/forum)、facebook(magpi.cc/facebook)、推特(@TheMagPi)。越多人在關注你的專案,你就會更有動力完成它。

 

30. 創客的小技巧資訊

E絡盟(Element14)整理了兩本電子書,紀錄一些創客會有興趣的內容,註冊帳號並登入E絡盟來免費下載magpi.cc/XQaCyC

 

網路小撇步

31. 有線或無線

樹莓派有兩種標準的連接網路方式:使用乙太網路或內建的無線網路(在較新的型號)。乙太網路線通常是使用 Cat5e或Cat6電纜(適用於快速的網路),每一端都有一個RJ45連接器。一端插頭插入路由器或集線器而另一端插入樹莓派。有線網路通常比無線網路來的更快,並在接頭插入後立即連接。使用無線網路可以從工作列圖示進行選定並輸入密碼進行連接-可參考magpi.cc/HiDkyk

32. 查詢自己的IP

樹莓派連上網路後會分配到一組數字的IP (網際網路協定) 位址,這組數字就像是門牌號碼可以讓其他電腦透過網路上找到它。有幾種方法可以找到樹梅派的目前 IP 位址。在終端機(Terminal)視窗中,有幾個命令可以使用。舊命令 (仍有效) 是 ifconfig。現在有一個新的且較短的命令,ip, 它將提供類似的資訊。IP 位址會是一組看起來像192.168.0.34 的號碼。你也可以停留在桌面的網路圖示(右上角)上找到你的 IP 位址。

 

33. IPv4與IPv6

所謂IPv4和IPv6是網際網路通訊協定和位址的描述。 IPv4使用32位元作為位址,看起來就像:192.168.1.23這樣。但可用的IPv4位址數量有限,隨著網際網路的迅速成長,已經不敷使用。而新版本的IP(IPv6) 使用128位元作為IP位址。儘管IPv6已經被使用了超過20年,直到 2017年7月才發布了這項協議的最終版本。IPv6位址類似於: fe80:94c:38c8:4600:7b33:64bb:baf7:e866。在家用網絡上,你通常還是會使用IPv4格式的位址,但請注意日後還是要更改。

 

34. 實用的指令

你可以在終端機中使用網路指令執行很多事情。某些命令執行前需要先安裝,而在預設情況下已有ping命令。如果你輸入ping,然後接著輸入IP位址或 網域名稱,它將告訴你從訊息發送到該電腦/伺服器所需的時間並得到回覆。cat也是預設下已有的指令,輸入cat /sys/class/net/wlan0/operstate可以確認你的無線網路連結狀態。使用sudo apt-get install whois來安裝whois套件,接輸入whois指令跟網域名稱即可看到註冊此網域名稱的細節。

 

35. 網路設定檔

在樹梅派上是用很多檔案來記錄或設定網路,當你需要更改一些細節的配置設定,知道這些會非常實用。/etc/host記錄所有名稱對應到的IP,你可以試試在裡面輸入”192.168.0.3 myserver”,會發現當你在網址中打入myserver,就會自動連接到192.168.0.3。另一個實用的檔案/etc/networks記載網路名稱與IP位址的配對;/etc/protocols列出所有可以用的網路協議;/etc/services包含所有可用的網路服務清單。

 

36. 網路封包

如果你想知道Pi與其他網路設備之間的傳輸狀況,這邊有幾個指令可以安裝並派得上用場。簡單的檢測可以用sudo apt-get install vnstat。當你執行這個指令,它會顯示出一些基本的傳輸狀況。如果想要更多功能可以嘗試安裝iptraf-ng,它有一個選單介面其中包含不同的功能,可以從中過濾並分析封包。若要看到即時的傳輸狀態可以安裝bmon,它會顯示每秒的傳輸量。

 

37. Telnet

儘管Telnet是一個非常古老的網路協定(最初創造於1969年),但直到現在還在使用,要在樹梅派上進行安裝可輸入指令sudo apt-get install telnet。當你安裝成功,你可以跟任何telnet 的伺服器連線,像是輸入telnet towel.blinkenlights.nl 23來看星際大戰的ASCII版本,或是輸入telnet mtrek.com 1701來玩星艦迷航記,更多資訊可以參考telnet.org/htm/places.htm

 

38. PiServer

PiServer是一個實用的工具,在不用SD卡的情況下,可以讓樹梅派透過網路互相連接,更多資訊與安裝教學請參考magpi.cc/RQDQXx

 

39. curl指令

你可以在終端機中使用curl工具來直接下載檔案,輸入curl -O <URL> ,更多資訊請參考magpi.cc/JrKoTA

 

40. 無頭(Headless)無線網路設定檔

你可以在不需進入樹梅派桌面的情況下,使用Headless無線網路設定檔來連接無線網路,只要去定義一個wpa_supplicant.conf設定檔,裡面寫入要連接的Wi-Fi網路,再將這個檔案放在SD Card的boot資料夾中,詳情請參考:magpi.cc/RHviuV。(譯註:我們過去上樹莓派課程在不接螢幕的情況就是用這種方式設定無線網路的喔!步驟有些繁瑣,但很實用!)

 

CLI指令小撇步

41. 流水線指令

Raspbian作業系統就像其他Linux作業系統中一樣,你和應用程式之間有三種通訊方式:標準輸入(stdin)、標準輸出(stdout)、標準錯誤輸出(stderr)。運用標準輸出(stdout)輸出至命令列的應用程式,可以打入"|"來把輸出直接傳送至另一個應用程式,像是:

ls -l | wc -l

ls -l這指令會從當前目錄得到很長的清單(檢視當前目錄下所有的檔案),然後直接把這個目錄傳送給"wc",一個用計數的指令,在它後面的 -l 代表,出現新的一行時計數,這樣就完成一個新的應用程序,來告訴我們這個目錄中,有多少個檔案。你串接多個命令來完成一些複雜的任務!

 

42. 輸出重導向

curl https://cataas.com/cat

輸入這個命令來下載貓的圖像,但你正在終端機視窗,無法顯示圖像。圖像在標準輸出(stdout)上是很荒謬的(會是亂碼)。我們可以利用重新導向把它存成檔案像這樣:

curl https://cataas.com/cat > cat.jpg

 ‘>’ 這項操作告訴Raspbian把所有東西用標準輸出(stdout)放在檔案裡,而不是你的螢幕上。你也可以使用‘>>’附加到現有文件,或用‘<’ 將文件的內容傳達給命令。

 

43. 執行多重指令

你可以將很多指令放在同一行,它會在接續著執行下一個指令,就像:

command1; command2; command3

只有在前一個命令成功時繼續執行:

command1 && command2 && command3

舉例來說:

mkdir ~/myDir && cd ~/myDir && nano myFile.txt

這會新增一個資料夾叫myDir,並進入它,然後新增一個名叫"myFile.txt"的檔案,並用nano text開啟編輯它。如果日後需要經常使用到,可以把這樣的指令記起來或創建成一個別名(別名的使用請參考第47點)。

 

44. 執行背景指令

在背景執行指令,能夠讓你在指令運行時,繼續執行其他指令。如果你是用圖形介面,當然直接再開一個終端機視窗最簡單。或者你可以在輸入指令時,加一個(&)符號在指令最後面,像是:

very-long-command &

這很好用,但有個小缺點,如果有標準輸出(stdout)或錯誤訊息(stderr)時,雖然在背景執行時,但還是會顯示這些訊息在視窗中,使用"nohup"即可忽略它:

nohup very-long-command &

這樣就不會顯示那些訊息,改成輸出到nohup.log這個檔案,存到你當前的目錄中。

 

45. 觀看記錄檔

有時候你在執行一個程式會有產生出一些訊息,你可能會需要追蹤執行的過程,看看發生了甚麼事。舉例來說伺服器運作異常,你就可以看它的運行紀錄來做除錯,要顯示所有文件內容:

cat text.txt

 如果你這文件內容太大,刷掉了你所有的指令紀錄,想讓它單獨顯示一個頁面:

less text.txt

只想看到文件內容最後幾行:

tail text.txt

看到文件內容最後幾行並且在有新資料時自動刷新:

tail -f text.txt

46. 快捷鍵

波浪號-波浪號(~),在環境變數中,永遠代表你系統中的home目錄,所以cd ~ 永遠會帶你回到home目錄(跟單純cd的功能一樣)。

TAB自動完成-只需要輸入一點字在終端機,Raspbian就會嘗試完成你輸入的東西,試著輸入whoa然後按TAB鍵,它就會變成whoami。這也能用在其他環境變數。

歷史紀錄-忘記了你之前輸入過甚麼指令嗎?你的樹梅派都有幫你記錄下來了,輸入上鍵就可以回到上一個指令。或你也可以輸入history來查看所有你輸入過的內容。

!!-兩個驚嘆號代表上一個指令。忘了加sudo(管理員權限)?不用這麼麻煩在重新輸入一次了,只需要輸入sudo !!即可。

47. 別名的使用

如果有一個很長的指令經常被使用到,取一個別名(alias)給它吧。在家目錄(home)目錄下建立一個.bash_aliases(預設不存在)檔案來設定別名。輸入以下指令來建立它或是瀏覽它的內容:

nano ~/.bash_aliases

輸入每個你想取的別名在裡面,在最前面先打alias再輸入你想命名的別名,最後等於你想取代的指令,就像這樣:

alias howmany="ls -l | wc -l"

現在你就可以輸入howmany來達到ls -l | wc -l的功能了。(譯註:必須要開新的終端機才會把剛建立或修改的.bash_aliases生效,或是直接在目前的終端機輸入source .bash_aliases來更新別名設定。)

48. 強制停止程式

螢幕被直錯誤的程式卡住了?想要強制關閉,回到正常的狀態,可以嘗試輸入CTRL+C來強制關閉執行緒,或輸入CTRL+Z把執行序放到背景,接著輸入killall <commandname>來強制移除它。你可以用ps ax查看所有執行中的執行序,如果它仍然再執行中沒有被停止,試試用管理員權限再執行一次sudo killall <commandname>。最後手段可以用sudo kill -9 <processid>來精準的停止執行序(process ID可以在ps ax中找到)。

49. 發掘更多

許多指令都有強大且複雜的功能,需要用不同的參數來改變或選擇它,而這些指令大部份都可以用指令man來查看(man來自manual的縮寫)詳細的說明,在你要在想要查看的指令前輸入man就像:

man command

你甚至可以查看man它自己的使用說明:

man man

或者很多指令也有支援--help(或可縮短為-h),來查看簡短的說明:

man -h

50. 遠端操作

你可能曾經有過這樣的經驗:在樹莓派的桌面環境工作著,忽然間似乎某些程式出錯了,導致你的桌面完全沒有反應,唯一的方法似乎只有冒著資料遺失的風險,將樹梅派的電源拔除。好吧,你可以試著透過遠端操作拯救它,如果你有開啟SSH(Secure Shell)這功能,從其他電腦輸入指令來登入樹莓派:

ssh raspberrypi.local

如果你成功,接著繼續輸入:

sudo shutdown -h now

現在你的樹莓派已經安全關機了!