2015年2月27日 星期五

以 Serial Port 操作 Raspberry Pi A+

如果您手邊只有一台 NB ,沒有多餘的螢幕可以透過 HDMI 將 Raspberry Pi 上的畫面顯示出來,但又希望可以不須外接鍵盤滑鼠,就可以對 Raspberry Pi 進行直接操作,這時候您可以學習使用 Serial Port 的連接方式,就可以將 Raspberry Pi 的 terminal 畫面透過 Putty 等軟體顯示於 NB 的螢幕上了。

首先我們來看看這次的操作介紹需要些什麼基本需求:

* Raspberry Pi A+ (其他系列亦可)、microSD記憶卡(供作業系統使用)
* microUSB 電源線
* USB to Serial Port 轉接線
* EDIMAX 7811Un  Wifi Dongle
* NB 一台(此文採用 Ubuntu 14.04 為操作環境)
* Putty 軟體
* 了解基本 linux command line 操作指令(例如 cd、ls、ifconfig 等)



當上述設備與基本觀念都具備後,我們來稍微分析一下為什麼要挑選Raspberry Pi  A+ (以下簡稱 A+ ),USB to Serial Port 線該選哪一種,以及應該選擇哪一套 Pi 的作業系統:

1. 為什麼要選擇 A+ ?
雖然很想說:因為便宜,但這個聲明已經不具說服力。因為我在撰寫這篇文章的前兩天已經看到有店家將 Raspberry Pi  model B 為了因應 Pi 2 的上市,而降價求售到只要 $500 就可以買到。

會選擇 A+ 其實最看中的是他的體積。A+ 大約是 Model B 的一半面積。雖然在板子上不具備網路晶片,以及只有一個 USB 孔,但對於低階且不太需要外部輸入設備的應用來說,這是一個極具奢侈的硬體平台了。因為甚至多數應用只需要 Arduino 就可以完成。

但 A+ 比起 Arduino 更吸引人的特點有:

* 具有 32 個 GPIO
* 若需要網路功能,只要插上 USB Wifi dongle 即可
* 運算速度以及具備作業系統功能
* 可直接於 Pi 上以 Python 撰寫相關程式
* etc.

正因為有了這些體積、耗電、運算、上網等需求,所以我傾向選擇 A+ 而非 Model B 系列與 Arduino 。


2. USB to Serial Port 線
USB to Serial Port 線材其實有很多種,而且會因為內建的晶片價格而有相當大的價格差異。我所選擇的是國內拍賣網站上的平價轉接線。其採用晶片是國內旺玖科技的 PL2303 晶片,線材外觀如下



3. 作業系統
這部份就比較見仁見智,看個人需求與使用習慣來選擇即可。因為我多數時間都是使用 Ubuntu,加上有點懶惰不想再多記憶其他作業系統的操作指令,所以我推薦 Debian 和 Ubuntu 使用者可以選擇 Raspberry Pi 官方推出的:Raspbian 。這套作業系統的操作指令與 Debian 沒有太大差別。




開始動手

安裝 USB to Serial 線
假設你已經在 Raspberry Pi 上下載了作業系統的 image 檔,並正確燒錄到 SD 卡上,這時就可以將 SD 卡安裝至 A+ 上。接著請參考 A+ GPIO 腳位,並依照下圖將 USB to Serial  線接至 A+ GPIO 。

USB to Serial 與 A+ 連接的腳位對應如下:

USB 黑線 <--->  A+ 6號 Ground Pin

USB 白線 <--->  A+ 8號 TXD Pin


USB 綠線 <--->  A+ 10號 RXD Pin






上述步驟做完後,接著就可將 USB 插入電腦端 USB ,並開啟終端機(terminal )查詢目前接上的 USB to Serial  線路所使用的是哪個裝置名稱,請輸入:ls /dev/ttyUSB*

若你的 USB to Serial 線可被正確讀取,你應該能看到如下圖的顯示畫面



安裝 Putty 
USB to Serial 線安裝好後,請先確認你的電腦已經安裝好 Putty 這套軟體,因為我們將透過這套軟體進入 Raspberry Pi A+ 進行一些設定。如果你尚未安裝,請直接在終端機中輸入:
sudo apt-get install putty

安裝完成後,請將 Putty 開啟,開啟後畫面如下


因為待會我們是要透過 Serial 連入,因此請點選 Serial 選項。點選後會發現 Serial line 的連接埠與我們稍早所查詢的名稱不同,Speed 也僅只有 9600 ,因此我們需要修正一下。



將 Serial line 的連接埠修改為 /dev/ttyUSB0 ,並將 Speed 改為 115200 後就完成了這部份的設定,待會連接時就可以正常連入與顯示



在正式連線進入 A+ 前,這邊我會建議你調整一下字型與字體大小,這會讓你的操作過程感覺更加舒適。請先點選 Fonts ,並點選第一個欄位旁(寫著 server:fixed) 的 Change 按鈕


按下 Change 鍵後,會跳出一個小視窗,建議選擇以下字型與字體大小:
Nimbus Mono L ,大小 12 ,選擇完成後,請按下確定


完成了連接埠、傳輸速率、字型與字體大小的修正後,請回到 Session 頁面中,我們準備正式連線進入 A+ 。



開始連線
在正式為 A+ 接上電源開機前,請再次檢查你的 USB to Serial 是否已經正確接上、Putty 設定是否完成、microSD 卡是否也已經安裝完成。如果以上都準備好了,那就開始連線吧!


一開始的連線過程,可能會遭遇以下情況

狀況一:無法開啟通訊埠
如果你的 Putty 是透過 Ubuntu 左側欄位搜尋、執行的話,此時你所執行 Putty 的身份僅是一般 User,並非 root ,而且近年來 Ubuntu 對於 USB、Serial Port 等通訊埠的「存取權限」限制的更嚴格,以防 USB 埠被惡意感染或攻擊。



解決方案:直接至 /usr/bin 資料夾中,以 sudo 指令執行 putty 




狀況二:沒有任何畫面
若已經透過 sudo 執行 Putty ,雖然沒有蹦出錯誤訊息,但畫面一片黑,這時只需要重新拔掉 A+ 上的電源線,重新插上即可正常顯示畫面。

註:若重新上電,Putty 依舊沒有畫面,請檢查 microSD 是否有正確安裝


重新插上 microUSB 線,讓 A+ 重新上電開機


順利開機後,即可在 Putty 上看見 login 畫面。如果你是第一次使用,Raspberry Pi 的作業系統帳號、密碼預設為:

帳號:pi
密碼:raspberry




修改密碼
為求安全起見與個人使用習慣,建議登入 A+ 後,盡快修改密碼,避免有心人士隨意登入取得操作權限

請輸入:sudo passwd
輸入完成後,系統會請你輸入目前舊有密碼,接著再請你輸入兩次新密碼,就完成了密碼修正,記得下次登入系統時,就要使用新的密碼囉!





網路設定
這篇教學主要是分享如何在沒有多餘的螢幕、鍵盤滑鼠的情況下,依舊可以透過 Serial Port 連線至 Raspberry Pi 中進行設定、調整。尤其像 A+ ,他的 USB Port 只有「一個」,當 Wifi Dongle 接上且還沒設定好上網功能,更無法連接鍵盤滑鼠的情況下,只剩 Serial Port 一途可以進行操作了。讓我們來學習如何不依賴 USB to Serial 線也能操作 A+ 吧!


Wifi Dongle 設定
若你已依照本篇所有步驟完成了基本操作,請先保留 USB to Serial 線依舊連接於 A+ GPIO 腳位,並請將 EDIMAX 7811Un  Wifi Dongle 接至 Raspberry Pi A+ 上的 USB Port ,並請參考以下文章 學習設定 Wifi Dongle 。


SSH 連線
有時候透過 USB to Serial 線操作久了,Putty 上的畫面開始會呈現刷新過慢、停頓等問題,而且 Raspberry Pi 若已經設定好 Wifi 或乙太網路埠的連線功能,那我們就可以考慮透過遠端連線的方式,連入 Raspberry Pi ,不需要再拖著一條尾巴進行操作。

遠端連線最常聽見的不外乎是 Telnet 和 SSH ,但是 Telnet 的封包是採用明文傳輸,是相當不安全的一種通訊協定,因此我們只要將 Raspberry Pi 上的 SSH Server 給打開,就可以透過 SSH 從遠端連線 Raspberrt Pi 了。

假若你已經使用 Serial Port 完成了 Wifi Dongle 設定,Raspberry Pi 也可以正常上網後,為了能使用 SSH,請輸入:sudo raspi-config



進入 raspi-config 後,請選擇第 8 個選項 Advanced Options


選擇 A4  SSH ,並選擇 Enable

當 SSH 正確 Enable 後,會出現 OK 畫面,此時已經完成 SSH Server 的開啟了。


SSH 設定完成後,如何離開 raspi-config ? 只需要按下 TAB 鍵,讓游標跳至下方,並選擇 Finish 就可以完成設定並離開。


這時候可以查詢自己的 IP ,並嘗試使用 SSH 連線登入,如何查詢自己的 IP 呢?請輸入:ifconfig ,你將可以查詢到 wlan0 目前所使用的 IP 為何。

註:這裡是使用了 192.168.0.102 的區網 IP,並非由外部可連入的實際 IP,若需取得實際 IP,可自行查詢如何開啟無線 AP 設定頁面中的 forwarder ,以及透過 no-ip 設定一個實際 IP

當 IP 正確,並可登入時,將會要求輸入


如果正確登入,將可看到以下命令列顯示: pi@raspberrypi ~ $
操作到這裡,恭喜你,終於可以擺脫 USB to Serial 線,以後都可以透過網路方式連線到 Raspberry Pi ,享受更快速、穩定的遠端操作畫面。




以上介紹,是基於希望能把 A+ 發揮最大效用,因此先採用 USB to Serial 線連線設定 Wifi Dongle 與開啟 SSH 功能,最後就可將 Pi 繼續進行更多有趣的實驗!希望今天的介紹對你有幫助!

沒有留言:

張貼留言