樹莓派新手入門教程

阮一峰發表於2017-06-15

樹莓派(Raspberry Pi)是學習計算機知識、架設伺服器的好工具,價格低廉,可玩性高。

本文根據我的親身經驗,介紹如何從零開始,搭建一個樹莓派伺服器,控制 LED 燈。你會看到,樹莓派玩起來實在很容易。

我要感謝 100offer 對我提供贊助。100offer 是國內第一流的人力資源服務網站,本文結尾有他們的簡介,最近想換工作的朋友可以看一下

一、型號

樹莓派是一個迷你電腦,整合在一塊電路板。目前,最新的型號有兩個。

(1)Raspberry Pi 3代 B 型

(2)Raspberry Pi zero (含 zero w)

雖然後者便宜,但是少了許多介面(比如只有一個 USB 口),CPU 和記憶體都比較低,配件也少,因此推薦購買第3代的 B 型。以下都針對這個型號,但大部分內容對 zero 也適用。

二、配件

樹莓派本身只是一個主機。要執行起來,必須有配件。

(1)電源

Micro USB 介面的手機充電器,就可以充當電源,但輸出必須是 5V 電壓、至少 2A 電流。充電寶當電源也沒問題。

(2)Micro SD 卡

樹莓派不帶硬碟,Micro SD 卡就是硬碟。最小容量8G,推薦使用16G和32G的卡。

(3)顯示器

樹莓派有 HDMI 輸出,顯示器必須有該介面。如果有 HDMI 轉 VGA 的轉接線,那麼 VGA 顯示器也可以。我用的是一個 7 寸的液晶監視器。

不過,顯示器只在安裝系統時需要,後面可以 SSH 登入,就不需要了。

(4)無線鍵鼠

樹莓派內建藍芽,USB 或藍芽的無線鍵鼠都可以用。

就像顯示器一樣,如果樹莓派已經裝好系統,而且只當作伺服器,無線鍵鼠也可以不配。

三、電子元件

除了配件,下面的實驗還需要一些電子元件。

(1)麵包板(一塊)

(2)連線線(若干)

注意,連線線必須一端是公頭,一端是母頭。

另外,最好也備一些兩端都是公頭的連線線。

(3)LED 二極體(若干)

(4)270歐姆的電阻(若干)

四、安裝系統

如果商家已經裝好系統,可以跳過這一步,否則需要自己安裝作業系統。

官方提供的作業系統是 Raspbian,這是 Debian 系統的定製版。

官方還提供一個安裝器 NOOBS,建議通過它來安裝 Raspbian,相對簡單一點。

  1. 下載 NOOBS
  2. 格式化 Micro SD 卡為 FAT 格式(操作指導)。
  3. 解壓NOOBS.zip到 Micro SD 卡根目錄。
  4. 插入 Micro SD 卡到樹莓派底部的卡槽,接通電源,啟動系統。

正常情況下,按照螢幕上的提示,一路回車,就能裝好系統。

五、SSH 登入

安裝系統後,樹莓派就可以上網了(Wifi 或者網線)。這時,你要看一下它的區域網 IP 地址,可以使用下面的命令。


$ sudo ifconfig

然後,更改系統設定,開啟 SSH 登入(預設是禁止的)。

接著,從另一臺電腦 SSH 登入樹莓派。下面的命令是在區域網的另一臺電腦上執行的。


$ ssh pi@192.168.1.5

上面程式碼中,192.168.1.5是我的樹莓派的地址,你要換成你的地址。樹莓派的預設使用者是pi

樹莓派會提示你輸入密碼。pi的預設密碼是raspberry。正常情況下,這樣就可以登入樹莓派了。接著,就可以進行各種伺服器操作了,比如修改密碼。


$ passwd

後面的實驗需要將使用者加入gpio使用者組。


$ sudo adduser pi gpio

上面的程式碼表示將使用者pi加入gpio使用者組。

六、安裝 Node

為了執行 Node 指令碼,樹莓派必須安裝 Node,可以參考這篇文章


$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ sudo apt install nodejs

正常情況下,Node 8.x 版就已經安裝成功了。


$ node -v
v8.1.0

七、點亮 LED

樹莓派提供了一組對外的 IO 介面,稱為 GPIO( 通用 IO 介面,General-purpose input/output)。

它的 40 個腳的定義如下圖。

注意,左上角的第1針(3.3V)是一個方塊,其他針腳都是圓的。將樹莓派翻過來,背後可以看到 GPIO 有一個角是方的,通過這種方法就可以確認哪一個針眼是3.3V。

通過 GPIO ,樹莓派可以與其他電子元件連線。下面根據 Jonathan Perkin 的文章,使用樹莓派連線 LED 二極體。

這裡需要用到麵包板。本質上,麵包板就是幾根導線,上面開了許多可以連到導線的孔。

+極和-極是兩根垂直的導線,標著1510這些數字的行,每一行都是一根水平的導線。導線與導線之間互不連線,另外,麵包板的左右兩半也是互不連線的。

然後,按照下面的圖,將樹莓派、麵包板、LED 燈、電阻連起來。

上圖中,紅色導線表示電流的正極,從 GPIO 的第1針(3.3V)連到麵包板。黑色導線表示電流的負極,從 GPIO 第三排的第6針(ground)連到麵包板。它們連到麵包板的哪個眼並不重要,但必須保證能組成一個完整的電路(上圖的箭頭流向)。注意,LED 二極體也有正負極,長腳表示正極,短腳表示負極。電阻沒有正負極。

連線完成後,開啟樹莓派的電源,LED 應該就會亮起來了。

八、LED 控制指令碼

下面,我們使用 Node 指令碼控制 LED。

首先,將正極的導線從1號針腳(3.3V)拔出,插到第6排的11號針腳(上圖的 GPIO 17)。這個針腳的電流是指令碼可以控制的。

然後,在樹莓派上新建一個實驗目錄,並安裝控制 GPIO 的 Node 模組rpio。。


$ mkdir led-demo && cd led-demo
$ npm init -y
$ npm install -S rpio

接著,新建一個指令碼led-on.js


// led-on.js
var rpio = require('rpio');

// 開啟 11 號針腳(GPIO17) 作為輸出
rpio.open(11, rpio.OUTPUT);

// 指定 11 號針腳輸出電流(HIGH)
rpio.write(11, rpio.HIGH);

執行這個指令碼,應該就會看到 LED 燈泡變亮了。


$ node led-on.js

再新建一個led-off.js指令碼,只要改一行(完整程式碼看這裡)。


// led-off.js
//...

// 指定 11 號針腳停止輸出電流(LOW)
rpio.write(11, rpio.LOW);

執行這個指令碼,LED 燈泡應該就會熄滅了。


$ node led-off.js

有了這兩個指令碼,讓 LED 閃爍就輕而易舉了。新建一個led-blink.js指令碼。


// led-blink.js
var rpio = require('rpio');
rpio.open(11, rpio.OUTPUT);

function blink() {
  rpio.write(11, rpio.HIGH);
  setTimeout(function ledoff() {
    rpio.write(11, rpio.LOW);
  }, 50);
}

setInterval(blink, 100);

上面的指令碼讓 LED 每秒閃爍10次。


$ node led-blink.js

九、HTTP 伺服器

通過控制 LED 可以做很多事,比如架設一個 HTTP 伺服器,每當有人訪問,LED 就閃爍一下。

首先,在剛才的目錄裡面裝一個伺服器模組。


$ npm install -S server

然後,新建一個指令碼server.js(完整程式碼看這裡)。


// server.js
var server = require('server');
var { get } = server.router;

// ...

server({ port: 8080 }, [
  get('/' ,  ctx => {
    console.log('a request is coming...');
    blink();
  }),
]);

console.log('server starts on 8080 port');

執行這個指令碼。


$ node server.js

然後,再開啟一個命令列終端,訪問8080埠,LED 就會閃一下。


$ curl http://localhost:8080

好了,今天的教程就到這裡。接下來,你可以自己探索,做更多的嘗試,比如寫一個測試用例指令碼,只要測試失敗 LED 就會長亮,或者組裝一個8位的加法器

(正文完)

================================

下面是推廣時間,向大家推薦求職就業的好幫手----100offer

如果你對現在工作不甚滿意,希望尋找更好的職位,或者你已經有了很多工作邀請,感到無所適從,不知道哪個最合適自己,請嘗試一下 100offer。它能讓你節省精力,從海量機會中找到最適合自己的那個。

100offer 會對平臺上的人才和企業進行嚴格篩選,讓"最好的人才"和"最好的公司"相遇。點選這裡註冊,提交資料並通過網站對您的評估和配對後,就可以收穫 5~10 個滿足你要求的好機會。

(完)

相關文章