樹莓派3 By Pony Jiang
文章推薦指數: 80 %
不管是NOOBS 或NOOBS Lite,當它開機後,都會嘗試連上Raspberry 的官網,尋找可安裝的作業系統清單,. 然後列表給使用者選擇安裝,而被選擇的作業系統如果不在SD 卡上, ...
樹莓派3 RaspberryPi3 完整教學
<>
本篇是寫給沒玩過樹莓派又想學習的人看的,若是熟手、高手、高高手,也歡迎瀏覽指教,
若有錯誤或建議,請用
[email protected]與我連絡,謝謝。
<>
樹莓派3ModelB長像:
樹莓派官網、樹莓派wiki
(一)樹莓派硬體說明及準備
上圖是樹霉派3ModelB的正面,樹莓派3Model
B是「一台」電腦,
它是all-in-one的主機板,主機板上的介面說明如下:
1.4個USB2.0連接埠。
2.10/100EthernetRJ45接頭。
3.音源輸出--3.5mm立體聲接頭。
4.CSIS5(Socket5)攝影機接頭(CSI-CameraSerial
Interface)。
5.HDMI輸出端子。
6.microUSB5V2A電源接頭。
7.DSIS2(Socket2)螢幕端子(DSI-DisplaySerial
Interface)。
8.GPIO接腳,GPIO各腳位及使用方式,在後面會有詳細介紹。
上圖是樹莓派3ModelB的背面,樹莓派有一個microSD
插槽,位置就在樹莓派的背面。
樹莓派3ModelB採用64bit四核心的ARM
Cortex-A53CPU,RAM為1Gb,
GPU則是VideoCoreIV,只支援較舊的OpenGLES2.0繪圖,硬體影像解碼只支援H.264
(FullHD30phigh-profile),
並不支援H.265;樹莓派內建IEEE802.11b/g/n無線網路及藍牙4.1。
就硬體規格來看,樹莓派在IoT(Internetof
Things,物聯網)的運用,具有很高的優勢,因為:
1.樹莓派內建wifi、藍牙及有線網路。
2.樹莓派體積小,不到香煙盒大小(吸煙有礙健康)。
3.就IoT的運用,樹莓派不用特別處理散熱問題。
4.樹莓派使用5V2A的電源,屬於低功耗。
樹莓派3官方公佈的售價是
35美金,但在台灣是買不到這個價錢,若由國外買回來,則要再加上運費,
除非一次購買很多東西來分攤運費,否則還是在國內買比較不那麼麻煩,國內價格NT$1500以內,就可以購買,
本人由Adafruit或
PIMORONI購買,攤了運費之後,價格大概在NT$1200左右,但要等待約兩週的運送時間。
在開始使用樹莓派3(後面用RPI3
稱呼)之前,有一些周邊要準備:
1.SD卡,RPI3用SD卡取代硬碟,所以SD卡必備,目前我在樹莓上使用過最大的SD卡是用到256G,
但RPI3用8GSD卡就能運作,給初學者建議是8G
或16G。
2.USB電源線,RPI3用的是microUSB的接頭,就是一般Android手機用的USB
電源接頭,
但要注意的是,RPI3本身沒有電源開關,當它插上電源就開始開機,拔掉電源就沒電,
所以可以找找看有附開關的USB線材(參考),或是有附開關的
USB電源插座。
3.螢幕,RPI3沒有特別要求什麼螢幕,但是它的顯示輸出端子是HDMI,所以如果要接VGA螢幕,
那需要準備HDMI轉VGA
的轉換頭,RPI3沒有螢幕也能運作,但RPI3在網路功能設定好之前,螢幕是必備。
4.滑鼠及鍵盤,滑鼠非必備,但接上滑鼠會比較方便,在初期設定階段,鍵盤則是必需;
設定好的RPI3可以不用滑鼠及鍵盤,滑鼠必須是有線滑鼠,雖然RPI3
有藍牙,但是在系統設定好之前,
光有藍牙滑鼠也無法操作RPI3進行配對。
5.網路:樹莓派有wifi及EthernetRJ45接頭,在網路設定好之前,最好有
DHCP的網路環境。
6.最後,當然要有一片樹莓派3,目前最新的樹莓派型號是
RaspberryPi3ModelB+(2018/3/14公佈)。
以上若準備妥善,就可開始樹莓派的作業系統安裝及設定。
(二)樹莓派RaspbianOS系統安裝
樹莓派官方指定與建議使用的作業系統是Raspbian,它是Linux
作業系統,安裝Raspbian有兩種方式,
第一種,使用Raspberry官方提供的NOOBS(NewOutOfBox
Software)來安裝作業系統,
NOOBS是個簡易的開機系統,開機後再選擇要安裝的目的作業系統。
NOOBS可以在Raspbarry的官網下載取得,在下載頁面中,有兩組(四個)下載供選擇:
我各人喜好是選擇ZIP檔案下載,用Torrent
下載或許速度比較快,但我感覺要做很多的操作(我承認...我懶XD),
而ZIP下載就滑鼠按一下就開始下載會比較方便。
Noobs及Noobs
Lite,兩個的差異在官網下載頁面的上方已經清楚的說明,左邊的下載,
就是已經預先載入了Raspbian作業系統的Image,所以用左邊的下載來開機,會如下圖:
如果用右邊的下載來開機,會如下圖:
Lite就是只有NOOBS空殼;所以左邊的連結下載下來的檔案有1.26Gb
大,右邊的連結下載後只有33Mb。
NOOBSLite是個空殼?那我下載它做什麼?
不管是NOOBS或NOOBSLite,當它開機後,都會嘗試連上Raspberry
的官網,尋找可安裝的作業系統清單,
然後列表給使用者選擇安裝,而被選擇的作業系統如果不在SD卡上,NOOBS則會先下載該作業系統的Image
再進行安裝。
所以要用NOOBSLite,最好要有DHCP
的環境,如果沒有DHCP,那還是建議使用1.26Gb的NOOBS比較方便,
因為Raspbian的Image已經預載在SD卡上了。
用左邊還是右邊的下載,端看個人,不過上面有說過,Raspbian
的安裝方式有兩種,
我是建議用第二種安裝方式,所以這邊請自行選擇,其實用NOOBS安裝樹莓派,
最主要的目標作業系統並不是Raspbian,下面會說明原因。
現在請將下載下來的檔案解壓縮,將它解到一個叫NOOBS的目錄,解壓縮後看起來應該長這樣:
在上面的檔案中,有一個檔案值的關注一下,就是INSTRUCTIONS-README.txt,這個檔案是安裝說明,
該檔案提到SD卡需要8GB以上,但若你使用的是高容量的SD卡,將會遇到一個問題:
全新的高容量SD卡,它的Partition 是用exFAT格式,但是RPI3並不認識這種Partition!
所以該文件中也告訴使用者,去哪裡下載SD卡Format的工具;在繼續操作之前,
請先檢查一下你的SD卡的Partition是哪一種格式?如果是FAT或FAT32那沒有問題,如果不是這兩種格式的Partition,
那請依文件中的說明,到這裡(可變更為繁中介面)下載
SD卡Format程式,並將你的SDFormat成FAT或FAT32格式。
以上準備完成後請將這些檔案複製到SD卡的根目錄下,接著將SD卡插進RPI3再接好鍵盤、滑鼠、螢幕、網路,
最後將USB電源插上,RPI3就會開機了。
開機後,所看到的畫面一定跟剛剛上圖不一樣,應該長的像這樣:
這是因為RPI3只要連上Internet,NOOBS就會去搜尋被樹莓派官方放進NOOBS
的作業系統,
移動Scrollbar,就可以看到可透過NOOBS安裝的作業系統;其中比較有趣的:
OSMC-->安裝它,可以讓樹莓派變成一台多媒體播放器,網路上有中文教學,請自行搜尋"樹莓派
OSMC"。
recalboxOS
-->安裝它,可以讓數莓派變成一台遊戲機模擬器!這在國外的青少年間非常流行,一樣的請自行上網搜尋相關教學。
Windows10IoTCore-->Microsoft
也在樹莓派上出了Windows10的核心,不過真的是核心,裝起來後,連檔案總管都沒有,
這是MicrosoftIoT的Solution,給熟悉Microsoft平台的開發族群(MSVS.net)使用。
所以,會用NOOBS來安裝作業系統,就是針對上述三個作業系統比較多,
但OSMC、recalboxOS也有單一的image檔可下載安裝,並非一定要透過
NOOBS,若有興趣就請自行上網尋找。
若對OSMC有興趣,請自行Google「樹莓派多媒體播放器」「樹莓派OSMC」等,
若對遊戲機模擬器有興趣,請Google「樹莓派月光寶盒」「樹莓派潘多拉盒」但記得,自己動手做才有樂趣!
再來就選擇我們要裝的目標作業系統--Raspbian;請看下圖:
請選擇要安裝的作業系統,再點選
左上角的「Install」,Noobs就會進行安裝。
但是眼尖的你可能會注意到:Raspbian有兩個耶!一個上面有[RECOMMENDED](推薦),一個是
RaspbinaLite;
Recommended是官方建議的做業系統,而Lite則是裝起來後,沒有X-Window,它是純文字模式的
Raspbian;
其實在RPI3上面,使用X-Windows的機會並不大,因為做為一台IoT電腦,當你將你的IoT
架設起來後,
也不大有機會再去使用這台電腦,所以,安不安裝X-Window端看個人。
NOOBS的安裝方式,就介紹到此,因為安裝之後,就跟用
Image安裝之後完全一樣。
接下來就講解怎麼用
Image來安裝Raspbian。
Raspbian的Image檔可以由
官網下載取得。
下載頁面裡,一樣有兩個選擇四個連結,兩個選則分別是:
RASPBIANSTRETCHWITHDESKTOP
RASPBIANSTRETCHLITE
它的差別就是->Lite為純文字模式,而WithDesktop就是包含
X-Window,並且開機後會進入X-Window,
在還沒熟悉Linux的操作前,我們就先下載有X-Window的版本,所以點選左邊的下載連結,
要直接用網頁下載,就點「DownloadZIP」,要用Torrent下載,就選「Download
Torrent」。
完成下載後,將檔案解開,會得到一個.img的Image
檔,而這次的下載得到的是:
2018-03-13-raspbian-stretch.img這個檔案,因為Raspbian
是隨時在維護、更新這個系統,
所以在官網的下載頁面中看到的下載內容會隨著時間而有所不同,例如RaspbianStretch這個版本,
是2017年底才推出的,之前的版本叫做RaspbianJessie,並且Jessie也有好幾個不同日期的版本!
解開的Image檔要用「燒錄」的方式燒到SD卡裡,用Copy
的是沒用的,所以我們要準備燒錄軟體,
我用的是Win32DiskImager這套軟體來將Image寫到SD卡,這個軟體可以由這裡下載
或是由這裡下載,
下載完成後,請進行安裝,之後將程式開啟,畫面如下:
在裝置的地方,它應該會自己抓你的SD卡磁碟機代號,但為了保險起見,要檢查一下是否正確,
映像檔欄位,請選擇剛剛下載並解開的映像檔,選好之後應該像下圖:
確認沒有問題後,按下『寫資料到「裝置」』按鈕,確認寫入後,程式就會開始將Image檔寫到SD卡。
完成如下圖:
Win32DiskImager還有一個功能,它能把SD卡內容讀取出來,建立成Image檔,
所以當一個系統建立後,可以用這套軟體來備份,若是要發佈一套已建置的系統,
也可以透過這個功能來達到。
樹莓官方在Image檔的安裝方式也有說明, 它也針對SD
卡燒錄做出了建議:
官方建議使用Etcher
這套軟體,我個人是沒使用過所以就不搬門弄斧,
如果要用Etcher請自行使用、測試。
將Raspbian寫到SD卡後,請把SD卡插入
RPI3:
並將RPI3接上Keyboard、Mouse、Monitor、網路線後,插上電源便會開始開機,開機完成畫面應該如下:
看到上圖,那就是RPI3已經裝好RaspbianLinux。
我們接下來要進行作業系統的設定。
(三)樹莓派3 Raspbian更新與網路設定
剛裝好的Raspbian
要做的第一件事就是更新系統;如上面所說的,樹莓派隨時都有可能在維護系統,
所以下載下來的Image有些元件可能已經不是最新的,因此我們安裝好Raspbian後,就先更新系統,
更新要用命令列來進行,所以我們要先開一個Terminal,請參考下圖:
點擊上圖標示的地方後,會開啟一個Terminal,出現命令列模式:
pi@raspberrypi:~$
進行更新請輸入下列指令:
sudoapt-getupdate
輸入完按下Enter後,Raspbian將下載元件清單準備更新,當下載完成,又會出現命令列,這時請下:
sudoapt-getupgrade
按下Enter後,將開始進行upgrade更新,當它問你
Doyouwanttocontinue[Y/n]
請回答大寫的Y及Enter,更新就正式開始,更新完成後,會再出現命令列等待指令,
我個人習慣是更新完,讓它重新開機,如果要重新開機,請用下列指令:
sudoreboot
系統完成更新重新啟動後, 接下來我們要設定
SSH登入,能夠SSH登入後,
我們的RPI3就不再需要Keyboard、Mouse及
Monitor,並且後續所有的設定、控制都能在遠端進行,
包括寫Code、Compiler等,也就是說,設定好SSH後,就可以回到你熟悉的Windows操作
RPI3。
大部分的Linux操作模式就是在Windows裡開
Terminal來進行,
使用Linux很少很少會需要到本機端進行操作,這也是為什麼官網的Raspbian會有Lite版,
因為X-Window幾乎用不到啊!當然世事無絕對,你要在X-Window安裝中文字型、注音輸入法、
用LibreOffice來寫文件等,也無不可;在國外網站也有很多教學文,教你如何將RPI3變成一台
PDA。
所以你當然也可以這樣用。
要完成RPI3SSH的設定,有三個步驟要做:
1.啟用RPI3的SSH服務。
2.設定帳號密碼。
3.設定RPI3的網路環境。
要啟用RPI3的SSH,可用命令列或圖型介面進行;命令列:
sudoraspi-config
用鍵盤的上下鍵選擇「InterfacingOptions」按Enter。
選擇「SSH」按Enter。
當然Yes...
告知你SSH已經開啟,請按Enter。
用鍵盤的左右方向鍵,選擇「Finish」然後按下Enter。
圖型介面操作方式:
點擊畫面左上角「樹莓派」圖示->「Preferences」->「RaspberryPiConfiguration」,
啟動RaspberryPiConfig後畫面如下圖:
點選「Interfaces」頁籤。
不管圖型或命令列,經過上面操作就開啟了RPI3的SSH服務。
接下來就設定RPI3的帳號與密碼,本篇教學文只會簡單的教你設定、更改帳號密碼,
但是Linux的帳密與權限是一門學問,在這裡建議你搜尋「鳥哥的Linux私房菜」!
在台灣本土學習Linux的人一定都知道鳥哥的Linux私房菜,大家或多或少一定在那裡找過資料,
我個人對這個網站是極力推薦,我也認為「鳥哥的Linux私房菜」對台灣的資訊發展絕對功不可沒!
在台灣要學Linux,其實不用買書,只要上鳥哥的Linux私房菜,什麼都學的到,
並且裡面一些原理講述會比市面上的書籍還要深入,他是台灣最優質的網站,
Linux的帳號與權限就請自行學習!
Raspbian內建了一個使用者帳號「pi」並且將root帳號關閉,是否要啟用root
帳號就端看個人,
我是沒有啟用過,因為用pi登入時,只要加上sudo就可以用root權限來執行指令,
並且一般Linux的使用上,是禁止root用SSH登入的,所以我認為沒必要啟用root。
Linux裡權限最高的使用者就是root,它是Linux的管理者帳號,無法更名,所以為什麼要限制root用SSH
登入,
就是防止駭客暴力侵入。
pi的內建密碼是「raspberry」,這個密碼是地球上60億人口玩過樹莓派的人都知道的,
所以啟用了SSH後,在設定好網路環境前,就要先將pi的密碼改掉,Linux更改密碼的指令是:passwd
下完指令,Raspbian會告訴你,你要更改的是pi這個使用者的密碼,並且會要求你輸入現在的密碼,
所以就輸入pi預設的密碼「raspberry」;對第一次使用Linux的人來說,一定非常不習慣Linux輸入密碼的方式,
因為你會發現,不管你在鍵盤上敲了幾個鍵,那游標都不會動!請習慣它吧,這就是Linux!
輸入完原本的密碼按下Enter後,Raspbian會請你輸入新的密碼。
要求你再輸入一次,兩次的新密碼輸入一樣,那就完成密碼變更,至於如何變更使用者名稱或建立新的使用者,
請自行學習,因為那不是本篇的重點,到此,帳密的設定部份就已經完成。
Raspbian網路內建是用DHCP來取得動態IP,所以剛裝好Raspbian的RPI3
就能上網,
用DHCP上網對家用電腦來說是沒有問題的,但是我們的RPI3將會是IoT控制器,或是當Server來使用,
所以RPI3必須是固定IP,這樣才方便操作;我們接著就設定RPI3的網路環境,讓它使用固定IP。
Raspbian有X-Window所以就有圖形介面來設定,如果要用圖形介面來設定,請自行嘗試,因為不難,
本文教學主要是以命令列為主,我們就以命令列來設定與教學。
在開始講解如何更改網路設定前,有些觀念要先讓初次使用Linux的使用者知道,這樣比較有利後面的教學;
Linux是「類Unix」(Unix-like)(Linux
wiki)作業系統,而UnixBase的作業系統下是沒有「磁碟機」這樣東西的,
它不像Windows有C:或D:等,或是插上USB隨身碟後就會多一個G:或I:!
Linux只有「目錄」,所有的儲存裝置都要經過「掛載」(Mount)這個動作才能使用。
如果像是USB隨身碟或外接光碟機被插入Linux的機器,Linux是在「/dev」目錄下多出一個Device,
而要使用這個Device則要經過mount這個動作,將Devicemount成某個目錄,然後才針對那個目錄來存取相對的磁碟機。
我們先介紹一個簡單的Linux指令「pwd」,pwd這個指令會顯示使用者目前所在的目錄,
我們先開一個Terminal(後面簡稱為Term),然後我們在命令列上輸入pwd:
可以看到Raspbian回應的是「/home/pi」,所以/home/pi就是我們所在的目錄。
承上所說,如果我們在Raspbian加掛一顆硬碟,並且把硬碟掛載到/home/pi/newdisk
目錄,
那當我們對/home/pi/newdisk做存取,就是在使用這顆新加載的硬碟。
Linux沒有磁碟機代號,只有目錄。
至於真實上要怎麼掛載硬碟或隨身碟?在後面我會詳解並實做。
Linux的根目錄就是「/」,所以可以用「ls-l/」來查看根目錄:
可以看到根目錄下有很多資料夾,其中一個資料夾叫做「home」,home就是使用者資料夾,
每當Linux建立一個使用者,Linux就會自動在/home/下面建立一個該使用者名稱的資料夾,
例如你在Raspbian建立一個「abc」的使用者,那Raspbian就會自動建立一個「/home/abc」的資料夾,
當abc這個使用者登入系統後,其所在的目錄就是「/home/abc」,並且abc將無法存取/home/pi,
一樣的,pi這個使用者也無權存取/home/abc目錄,
所以「/home/pi」這個資料夾就是pi這個使用者專用的目錄。
在根目錄下面看到的那麼多資料夾,除了/home以外,其他都是Linux系統特定在使用,
所以系統既然給了使用者專用的資料夾,那我們在使用上,就不應該任意的將資料放置到使用者目錄以外的地方,
而未來所有產出的資料,都不應該離開使用者自己的資料夾,除非你是Linux的熟手、高手、高高手,知道自己在做什麼。
Linux的Path符號與MSWindows是相反的,Linux的Path符號是「/」與Internet
上的是一樣的。
Linux的根目錄與Windows也不同,Windows的根目錄,會是「C:\」或是「D:\」,
Linux的根目錄只有一個,就是「/」,所以「cd/」就是回到根目錄;Raspian也貼心的把使用者目錄定義為「~」,
以pi這個帳號而言,不管在任何地方,只要「cd~」就是會回到「/home/pi」目錄,這個「~」有的Linux有,
有的Linux沒有「~」而是使用「$HOME」。
未來在RPI3上面寫程式,我建議檔案的放法應該依專案建立目錄,例如我要寫一個LED的專案,
就應該建立「/home/pi/led」然後該專案用到的相關資料再往下發展,其目錄架構應該像這樣:
這樣的目錄分配與放法,也是我們目前在專案執行上的實際做法。
回來講Raspbian的網路設定,Linux設定網路的方法有很多種,我下面要介紹的設法並不是唯一的方式,
這只是我個人習慣這樣使用。
RPI3有兩組網路可以使用,無線及有線,這是RPI3讓我非常喜歡的其中一個設計,因為這樣的設計,
讓RPI3可以當橋接器(Bridge)來使用:有線網路接中華電信的ADSLMODEM撥接上網(Internet),無線網路連接家裡的無線AP,
這樣,我在地球上(中國大陸除外,因為中國封鎖台灣IP),只要能上Internet,我就能透過RPI3存取我家裡的網路,
這樣是不是很酷!?是不是好棒棒!?
事實上,我人在外面就能透過手機控制家裡的客廳、房間及浴廁的燈、大門及房間鎖頭,IoT在我家裡早就落實,而不是口號。
怎麼做到的?後面的教學,慢慢的將會串起來。
在Linux下要查看目前的網路狀態,可以使用「ifconfig」這個指令來查看:
我們可以看到剛裝好Raspbian的RPI3目前的網路狀態:
eth0--就是有線網路。
wlan0--就是wifi。
lo--這是Linux內部網路迴路(Loopback),千萬不要去動它!
目前我們尚未設定wifi網路,所以它並沒有IP位置,而eth0藉由DHCP得到192.168.1.106的IP,
這個IP是中華電信的ADSLMODEM所給的IP。
要更改網路設定可由/etc/network/interfaces
這個檔案來變更,/etc/network/interfaces這個檔案是系統檔案,
所以pi這個帳號只能看它,沒有權限去修改它,要用pi去修改上述檔案,需要用
sudo來進行修改。
這邊...再離題一次,Raspbian內建有兩個命令列的文字編輯軟體,一個叫nano,一個叫vi,
等會我們修改/etc/network/interfaces將用到文字編輯器;有國外網站指出,對初學者來說nano親合力較強,
適合初學者使用;vi是較老派的編輯器,功能較強大,甚至有些Linux熟手,整個軟體開發都在vi內進行,
我就遇過一個軟工,在windows裡灌viforwindows版本進行軟體開發,他說他只會vi。
vi後來又有一個改良版叫做vim,vim
除了繼承vi的功能外,更將一些電腦語言的語法加入檢查,
讓vim可以當成電腦語言編輯器來使用;Raspberry內建並沒有vim這個強大的文字編輯器,
所以我們先安裝vim(vim指令說明):
指令行:sudoapt-getinstallvim-y
其中的參數-y的意義是告訴apt-get在安裝過程中,不要再問我要不要之類的問題,直接都是用「接受」,來進行安裝。
安裝過程與結果:
安裝完成後,我們用sudo來取得系統權限,並用vim來修改/etc/network/interfaces:
按下Enter後,vim會開啟/etc/network/interfaces檔:
在vim裡,可以用方向鍵來移動游標,按下i會進入Insert編輯模式;
網路的
設定方法請看這裡。
若修改完成,要將檔案存檔,並將Raspbian重新啟動才會生效;因為vim目前在編輯模式,
所以先按「ESC」鍵離開編輯模式,然後按組合鍵「SHIFT」+「:」這時會跳到vim最下方,進入命令模式,
接著輸入wq:
wq-w為write,q為quit,就是寫入並離開;
上圖,我將Raspbian的IP設為192.168.1.123,網路遮罩255.255.255.0,gateway為192.168.1.1;
gateway的部分因人而異,我的中華電信ADSLMODEM是192.168.1.1,但一般多數是254,所以這部分要注意。
Linux要看文字檔可以用「cat」指令,所以我們就用cat
/etc/network/interfaces來看一看剛才的編輯是否有存檔:
沒有問題後,sudoreboot讓系統重新啟動:
系統重新啟動後,可以用ifconfig來看看目前設定是否為剛剛修改的設定:
可以看到eth0確實變為我所設定的IP位置,gateway的部分可介由「ping」來確認是否正確:
我去ping中華電信「www.hinet.net」,可以看到中華電信的WEB主機給了回應。
若下了ping指令,你會發現Linux它會一直ping下去,與MSWindows不同,
Linux的ping要用「Ctrl」+「C」鍵來中斷它。
到這邊,RPI3的SSH已經完成了準備,但還缺少Clinet端的SSH軟體,所以必須安裝MS
Windows端的SSH軟體,
如果在Google上搜尋SSH,可找到很多不用錢的SSHClient端可下載使用,我個人是習慣使用「pietty」這套SSHClient,
pietty的下載頁面在這裡,它是免費軟體,自由捐款...
下載安裝完成後,開啟pietty:
在「主機名稱或IP位址(N)」輸入RPI3的IP位置,因為RPI3使用的是SSH,所以Port不要改,SSH就是用Port22,
按下連線後畫面如下:
其意思是說收到Server丟過來加密的Key,你是否接受?回答「是」之後就進入RPI3的登入畫面:
輸入帳號pi後,會問密碼:
輸入正確的密碼後就能登入RPI3:
到此,RPI3的SSH已經完全可以運作,RPI3後續操作都可以在pietty裡進行,
所以RPI3的Keyboard、Mouse、Monitor
都可以移除。
(四)使用者環境變數
在Term裡可以用ls來查看目前目錄下的檔案:
用ls來查看檔案清單,它的排列方式是橫的排列,我個人並不習慣這樣的排列法,所以可以用ls-l來查看:
可以看到ls-l的結果,改為直的顯示,並且多了一些資訊,其實ls-l在有的Linux已經被設定為ll這個別名,
我個人比較習慣用ll來查看檔案清單,但Raspbian並未設定ls-l的別名,在這裡我們就設定ll為ls-l的別名,
並將它設定在使用者環境檔裡,這樣每次用pi這個使用者登入,就能使用ll。
用vim.profile指令:
按下Enter後會進入vim並開啟.profile這個檔案:
按下i會進入編輯模式,之後在最後面加入:aliasll='ls-l':
新增完畢後,按下「Esc」,然後「Shift」+「:」,再wq,Enter後存檔離開。
接著下:exit離開並結束Term,然後重開pietty再次登入RPI3。
這次登入會載入環境變數,ll就會生效:
.profile就是使用者環境變數設定檔,它在每個使用者的使用者根目錄下,它是個隱藏檔,
現在我們可以用ll-a來查看,就可以看到它。
使用者環境變數的設定,可參閱「鳥哥的Linux私房菜」裡面有詳細的介紹。
(五)gcc及HelloWorld
後面要進行RPI3的GPIO,會用到C語言,所以我們先確認C的Compiler:gcc
是否已經安裝與存在,
我們用whereis這個指令來找找看gcc:
可以看到whereisgcc之後系統告訴你gcc在哪裡,
之後可以用gcc--version來查看gcc的版本,得到上圖的回應,那就確認gcc是已經存在,並可以運作。
我們到/home/pi/Templates/目錄下:
用vim編輯一個hello.c檔案vimhello.c:
編輯好了之後「Esc」然後「Shift」+「:」接著wq&Enter存檔離開,我們先用ll查看,
就可以看到/home/pi/Templates目錄下已經產生一個hello.c檔案,
接著我們用gcc-ohellohello.c來將hello.cCompiler成hello的檔案:
按下Enter後,gcc就會將hello.cCompiler成hello,之後可透過ll看到:
用./hello就可執行剛剛我們寫的並Compiler的hello檔:
這就是我們的第一隻程式,HelloWorld!
(六)RPI3的GPIO及點亮LED
樹莓派與一般的電腦最大不同的地方,就是樹莓派有GPIO接腳,這也是樹莓派常常被拿來跟Arduino相互比較的地方,
但樹莓派與Arduino本質上是兩個不同的東西,Arduino 是微控制器,而樹莓派是一台電腦,只是附帶有GPIO的電腦,
樹莓派上面可以安裝資料庫,可以在XWindow上做文書處理、試算表、繪圖,甚至於能在上面玩
Games;
所以拿Arduino與樹莓派做比較,是很奇怪的想法!應該換個角度:當我有微控制的需求時,
在什麼環境下適合用Arduino?什麼環境下用樹莓派比較洽當?
這裡讓你有個觀念,一般我們在家使用的PC一樣可以加裝
I/O卡,讓一般PC可以控制一些接點,
市面上更有一些
I/O控制盒,只要透過Ethernet網路,就能讓一般電腦控制I/O接點,
只是這樣的做法其「總成本」與「效益」不見得比PLC來的便宜。
樹莓派的出現,讓電腦控制I/O有了一個簡單、多元、低成本的Solution。
接著我們來講解RPI3上面的GPIO,並做幾個簡單的範例來了解GPIO的控制與應用,
下圖是RPI3的GPIO接腳:
RPI3的GPIO接腳共有40pin,我們在Term中下gpioreadall指令可以得到下圖:
這個表是RPI3目前GPIO的狀態與說明,這裡就帶大家來讀這張表,首先要看該表最中間那排:
可以看到它有1~40實體(Physical)接腳,而要對照到這張表,RPI3需要這樣擺放:
其實只要這樣對應,應該就一目了然!但對初次接觸的使用者來說,接下來還是一一說明。
實體接腳的腳位命名,單號在左邊,雙號在右邊,依序排列1~40腳。
看完中間那排,並了解其表示什麼後,再來是由中間算來第二排:
V的就是Value,也就是說若寫程式去讀取將會讀到的值;在DigitalI/O接點上,一般我們有兩種表示方式:
1或High就表示「開」、「On」、「接通」或「輸出」...
0或Low就表示「關」、「Off」、「關閉」或「不輸出」...
所以,看上表的「V」欄位,那就知道什麼意思了。
接著是由中間算來的第三排:
Mode就是模式;GPIO、GPIO,都說是I/O了,所以它會有Input跟Ouput兩種模式;
Mode中的IN就是Input,表示該腳位在接收訊號,
若是出現OUT就表示該腳位在輸出訊號;
RPI3的I/O接腳要IN還是OUT,是可以被改變的,後面會有教學。
接著是由中間算來的第四排:
Name是名子、名稱,但實際上這裡是標註每個角位的用途,它的名子是最中間那排,或是最外側那兩排。
其實我們在稱呼RPI3的GPIO接腳,為了不會產生混淆,還是以實體接腳來稱呼比較多,最外面那兩排有其它用途,
後面會解釋。
RPI3的GPIO接腳可分為兩大類,第一類就是電源輸出,RPI3的電源輸出是DC電源,也就是直流電源,
共有兩種直流電源輸出,一種是5V電源,分別為實體接腳的第2、4兩腳,另外就是3.3V,分別為實體接腳的1及17兩腳,
由上圖還可以找到實體接腳的第9、25、39、6、14、20、30及34共8隻接腳為0V;
0V就是接地:Ground(Gnd)或稱負極,上面講到的5V及3.3V就是正極;正負極就成為一個電源迴路,
上面的5V 可以跟任何的0V接成迴路,3.3V也可跟任何0V接成回路。
所以RPI3的電源接腳共有12隻腳,
其他的才是GPIO接腳。
RPI3上的40隻腳扣掉電源12隻腳後,還有28隻接腳,這28隻腳都可以當Digital
I/O來使用;
這28隻腳中有兩組I2CBus,第一組是實體腳位的第27及28接腳,但是這一組
I2C只能給EEPROM使用,
也就是說若把27、28腳當I2C來用時,只能接EEPROM,反過來說,RPI3要接EEPROM時,只能接這兩腳;
另一組就是實體接腳的3、5兩隻接腳,這一組才能接其他I2CBus的I/O裝置,I2C是由SDA及SCL兩腳構成,
所以可以看到上述的腳位在Name欄位被標為SDA或SCL。
RPI3提供一組
SPIBus,SPI接腳為實體腳位的
19-MOSI、21-MISO、23-SCLK、24-CE0、26-CE1。
RPI3提供有一組
UART腳位,又稱為SerialPort,它分别為實體接腳的8-TX(傳送)、10-RX(接收)。
RPI3實體接腳的第12腳可以做
PWM輸出,但是RPI3並沒有類比(Analog)
接腳,所以RPI3的PWM是由軟體模擬出來的,
但是別擔心,即使是模擬的PWM,也一樣能控制PWM裝置,例如:伺服馬達。
最後兩欄:一欄為wPi,另一欄則為BCM,兩個欄位一起做說明,這兩欄分別是兩套Library的腳位名稱,
BCM是廣泛的通用於自動控制的Library,它早在樹莓派前就已經存在,所以在工業開發領域較資深的工程師比較習慣使用BCM,
而BCM欄位就告訴使用者,若你使用BCMLibrary時,它的腳位名稱;wPi則是樹莓的另一套Library「WiringPi」使用的腳位名稱,
在後續的教學裡,我們就是使用WiringPi這套Library,它是內建的,若要用BCM則需要另外安裝。
最後就是整張表的讀法:
它的閱讀方式如上圖框框,應該是要橫著看,例如:
實體第11腳,它目前是輸入,它的值是0,若是用WiringPi來開發,它在程式裡的腳位是0;
實體第32腳,它目前是輸入,它的值是0,若是用BCM來開發,它在程式裡的腳位是12。
最後附上下圖,那是自己畫的簡圖,方便開發時使用:
上面講解完RPI3的接腳後,接著我們要來實做,而第一課就是點LED燈,這個實做我們要用到:
上面的物品,就LED及麵包板做說明:LED有正負腳,長的那隻要接正極,短的那隻要接負極。
麵包板是個簡易的萬用電路板,它的電路如下圖說明:
左右兩邊有標示+、-者為整條相通,中間黃線部分則橫條相通,但兩個區塊並不貫穿,如果依上面的英文字母來看,
abcde為互通,fghij互通,但e及f則不通。
上圖是麵包板與洞洞板之合體產品,介由此產品就能看出麵包板的孔洞間電路相連方式。
我們開始實做,先將LED插在麵包板上:
然後用杜邦線連接麵包板與RPI3,在連接杜邦線與RPI3前,請先確認RPI3已經關機,並拔掉電源:
這裡使用RPI3實體接腳的第14腳0v連接LED的負極,RPI3實體接腳的16DigitalI/O連接LED的正極。
這裡初學者應該會有一個疑問,LED的正極為什麼不是接5V或3.3V的電源輸出?而是接GPIO?
那是因為RPI3的GPIO接腳當On的時候,本身就是用3.3V的電壓輸出,GPIO接腳就是正極輸出。
在此做一個提醒,在這個範例中,我所用的LED最大可以接受6VDC電源的LED,若是使用較小的LED:
就要加上電阻,否則3.3V可能會燒掉上面圖片中的LED。
上圖:用一般的LED正極端要先接電阻,我用的是510
Ω(歐姆)的電阻(電阻本身沒有正負極之分)。
完成硬體的連接後,接著我們要寫軟體,所以先將RPI3插上電源開機,之後開Term,
登入之後進入/home/pi/Templates目錄,接著用vim編輯一個led.c檔:
編輯程式:
就程式碼來說明:
2#include
3#include
4#include
5#include
7intmain()->c的起頭函數,因為程式會用exit()來離開程式,會傳回值給系統,所以會回傳int。
9宣告一個integeri,當迴圈的控制子,因為程式簡單,所以就宣告為i。
11if(wiringPiSetup()==-1)要使用RaspberryPi的GPIO函數前,一定要先呼叫Setup,若傳回-1
表示失敗。
12~15當呼叫wiringPiSetup失敗時的處理。
17pinMode(4,OUTPUT);->設定GPIO實體腳位第16腳,wPi腳位第4腳為輸出。
19一個執行3次的迴圈。
21digitalWrite(4,HIGH);->將實體腳位第16腳On起來,LED就會亮。
22usleep(1000000);->停一秒,usleep()是LinuxC特有的函數,它能控制到1/1000000秒(微秒10-6
次方)。
24digitalWrite(4,LOW);->將實體腳位第16腳Off掉,LED就會熄滅。
25usleep(1000000);->停一秒。
28exit(0);->程式結束,傳0給系統(正常結束)。
程式寫好後,存檔離開,/home/pi/Templates目錄看起來應該長這樣:
我們來編譯剛剛寫的led.c,編譯命令:「gcc-oledled.c-lwiringPi」:
如果編譯過程程式沒有出錯,就什麼都沒顯示,所以我們用ll來查看,會看到多出了一個led的執行檔,
用./led來執行,就可以看到LED依我們的程式做閃爍。
ˊ
執行結果,程式碼。
聰明的你,依照我的範例點亮LED後,就可以嘗試更改LED閃爍次數,閃爍頻率等,
甚至讓LED由慢到快的閃爍,然後再慢慢的越閃越慢。
學習程式,就是要多寫,無其他加快學習的方法。
接著我們要由上面的範例再加上一個 「光遮斷開關」,利用光遮斷開關來控制LED的明滅。
光遮斷開關:
上圖兩個都是光遮斷開關,兩者除了Size不同外,其餘的完全一樣,我們就用你手邊有的光遮斷開關來做範例。
我們先看一下光遮斷開關的背面:
可以看到右方有標示「-」,左方標示「S」,-就是負極也就是負極接腳,S就是Signal也就是訊號接腳,
中間未標示,當然就是正極接腳,所以從正面看,左邊接腳為負極,中間接腳為正極,右邊接腳為訊號輸出,
這次我們要用到RPI3的實體腳位的2(5v)、14(Gnd)、16、18共4隻腳,接法如下圖:
1接RPI3實體腳位14;2接RPI3實體腳位2;3接RPI3實體腳位18;4接RPI3實體腳位16,對應下圖。
硬體連線接好後,一樣的在/home/pi/Templates目錄下用vim建立一個led2.c檔
「vimled2.c」:
編輯程式:
程式碼說明:
7#defineSin 5->定義"Sin"為5,5為RPI3實體腳位18的wPi編號,就是光遮斷開關的訊息接腳。
8#defineLout 4->定義"Lout"為4,4為RPI3實體腳位16的wPi編號,就是LED燈的正極輸出。
20pinMode(Sin,INPUT);->將wPi編號5腳位設為輸入。
26value=digitalRead(Sin);->用value變數去讀取Sin接腳的訊號。
28~31當讀到的值為1時,亮LED;讀到的值為0時,將LEDOff。
存檔離開後,進行編譯gcc-oled2led2.c-lwiringPi:
之後,可看到多了一個led2的執行檔,執行結果,程式碼,
因為我們用的是while迴圈,並且迴圈判斷式永遠為1,也就是無窮迴圈,
所以要離開程式只能用「Ctl」+「C」來中斷程式。
之前一直忘了說明,要離開Term請用exit指令;在Term中要關掉RPI3請用sudo
shutdownnow。
(七)用RPI3控制電器
這是很精彩的一個實做範例,我們將實做用RPI3控制家電;能用RPI3控制家電後,
接著就能IoT的實踐。
這個實做我們將用到下列物品:
1.電線與插頭
2.Relay
上面的物品:電線、插頭座、Relay在一般的電料行都有賣,電線與插頭的部分,要買現成的延長線也可以,
但是我們必需在電線上面做加工,用延長線在加工這部分就比較困難,並且上述電線在電料行買應該在30~40元之間。
首先我們先將電線與插頭座合體:
絕緣體剝開約1~1.5公分。
電線鎖上時要注意兩邊的電線不能相互碰觸到另一邊的銅座!若兩邊相互碰觸,在插上電源時就會發生短路。
電線部分處理好之後,我們來說明Relay,Relay中文叫「繼電器」,一個
Relay能控制一路電路迴路,
目前市面上容易買到的有一路、兩路、四路及八路的Relay,
Relay可以控制的電路,在中間四方型的上面都會清楚告知,我們等一下拿來實做的這顆1路Relay,
上面就寫著3A250V AC及3A30VDC,這就是它能接受的最大AC/DC電壓及電流。
1個Relay在輸出迴路上都有三個接點,下圖就是這三個接點的說明:
當DAT被On起來時,上圖的中間與左邊兩個接點將接通,
當DAT被Off時,中間與右邊的接點會接通。
但這不是通則,所以拿到Relay時,最好接上VCC(5v)及GND,然後用三用電表量一下三個接點之間的接通關係,
而不是直接接上輸出迴路;電這種東西,輕則人被電到或燒壞東西,重則會出人命,所以再小心都不為過,切記!
講完Relay之後,我們要將剛才那條電線接到Relay的輸出迴路,來朋友,我們看圖說故事:
量出適當長度,這個長度,是由插頭端插上電源插座之後再拉到RPI3所在位置的長度。
剪斷單邊電線;上面有提到,若是用一般的延長線,那這裡就費工了!
將剪斷的電線兩頭都剝開,約0.5公分。
鬆開Relay上面的端子螺絲。
電線插入端子頭,我們要讓RelayOn的時候電線通電,所以是用中間及左邊的端子孔,然後將螺絲鎖緊。
完工後,整條電線看起來長這樣。
將Relay接到RPI3 :
程式部分:
pi@raspberrypi:~$cdTemplates/
pi@raspberrypi:~/Templates$vimwonoff.c
編輯程式:
程式碼說明:
#include
intpin,value;
//宣告變數pin用來接收腳位;變數value用來接收腳位的值
if(wiringPiSetup()==-1)
//初始wiringPi函數,若失敗將傳回-1
{
printf("SetupGPIOFail!\n");
//在畫面上Show啟動GPIO失敗
exit(1);
//程式結束,傳回1給作業系統,告知非正常結束
}
if(argc<3)
//如果傳入的參數個數小於3
{
printf("Usage:\n");
//顯示程式的用法
printf("wonoff[wpiPinNumber][Value1/0]\n");
//顯示程式的用法
exit(0);
//結束程式
}
pin=atoi(argv[1]);
//將傳入的第一個參數轉為數字型態,並且用pin變數接收
value=atoi(argv[2]);
//將傳入的第二個參數轉為數字型態,並且用value變數接收
pinMode(pin,OUTPUT);
//將傳入的腳位編號設定為輸出
if(value==1)
//如果傳入的value為1
{
printf("SetPin:%dtoON...\n",pin);
// 畫面顯示將傳入的腳位設為ON
digitalWrite(pin,HIGH);
// 將傳入的腳位設為ON
}
elseif(value==0)
//如果傳入的value不是1而是0
{
printf("SetPin:%dtoOFF...\n",pin);
// 畫面顯示將傳入的腳位設為OFF
digitalWrite(pin,LOW);
// 將傳入的腳位設為OFF
}
else
//傳入的value不是0也不是1
{
printf("InputValueerror!\n");
//畫面顯示輸入的值錯誤
exit(1);
//結束程式
}
exit(0);
//結束程式
stdlib.h、stdio.h這兩個檔頭幾乎在寫C程式是必須include的。
編輯好程式,存檔離開後,進行編譯gcc-owonoff
wonoff.c-lwiringPi:
編譯完成,可以看到多了wonoff的執行檔,因為我們這隻程式沒有將腳位與on/off寫死,
所以這隻程式可以用來啟動或關閉任何一腳的GPIO接點,也就是能拿來當一個GPIO的開關程式用;
依照上面我們Relay與RPI3的腳位接法,要啟動Relay的話就用「./wonoff1
1」,要關掉Relay就用「./wonoff10」。
我將我們製作的延長線接上電源,再將電風扇接上延長線插座:
把電風扇的開關打開後,當我們對RPI3下「./wonoff1
1」時,電風扇就開始轉動;
對RPI3下「./wonoff10」電風扇就停止轉動,這就是用RPI3來控制家電。
注意,在一般電子材料行買的這種電線,應該是
SPT1或SPT2的規格,
也就是說最大能承受1100~1320瓦的電流,我們用的Relay則只到750瓦,
所以在接電器時要注意,只能用750瓦以下的電器,一些高用電量的電器產品如:
電鍋、吹風機、微波爐、電冰箱、冷氣機..等,它們的用電量都是1500瓦以上,如果接上SPT1、SPT2
的電線,電線及Relay是有燒掉的可能!所以我們做出來的程控電源線只能提供:電風扇、檯燈這類小電流的電器用電。
wonoff
程式碼,下面說明Raspbian內建驅動
GPIO的函數庫wiringPi常用的函數:
#include
延伸文章資訊
- 1Raspberry Pi
- 2Teach, Learn, and Make with Raspberry Pi
- 3樹莓派第4代Raspberry Pi 4 Model B單板電腦4GB RAM
樹莓派第4代Raspberry Pi 4 Model B單板電腦4GB RAM - ▻ 創客專區, 樹莓派第4 ... 智慧型自動省電休眠模式□免費下載專屬軟體SP Widget (需至官網下載...
- 4樹莓派官網相關Raspberry Pi 產品購買並報價
Raspberry Pi 樹莓派具有與外界互動的能力,並已被廣泛應用於各種數字製造商項目,從音樂機器和父母探測器到氣象站和帶有紅外線攝像頭的推特鳥巢。它是一個功能強大的小 ...
- 5樹莓派3 By Pony Jiang
不管是NOOBS 或NOOBS Lite,當它開機後,都會嘗試連上Raspberry 的官網,尋找可安裝的作業系統清單,. 然後列表給使用者選擇安裝,而被選擇的作業系統如果不在SD 卡上, ...