這篇文章來源于DevicePlus.com英語網(wǎng)站的翻譯稿。近年來,Raspberry Pi因其可以用作可用于媒體和復(fù)古視頻游戲的廉價、兼容的Linux機(jī)器以及網(wǎng)絡(luò)設(shè)備而備受喜愛。多年來,一些業(yè)余愛好者一直以這些方式來使用他們的Pi,但是有些人并不清楚設(shè)備側(cè)面的引腳到底是做什么的。
其實,正是這些引腳發(fā)揮著Pi的真實功用。它們可以控制家居設(shè)備、機(jī)器、新的發(fā)明,甚至機(jī)器人。那么,為什么這么多人都對這些引腳不甚了解呢?
這些引腳的實際作用是什么?
這40個(或26個,取決于您的Pi型號)引腳是所謂的“GPIO接口”的一部分。在這些接口中,有四種主要的引腳:
? 電源: 提供3.3V和5V的直流電源
? 接地(GND): 連接到地端,以閉合電路
? DNC: 代表“不連接”,所以可以忽略
? GPIO: 可以設(shè)置為發(fā)送或接收控制電壓
GPIO代表“通用輸入/輸出”,正是這些引腳讓Raspberry Pi發(fā)揮了其功效。因為這些引腳沒有特定的功能,所以可以設(shè)置為某個專用功能,例如控制信號。
設(shè)置為輸出的GPIO引腳可以提供3.3V(高電平信號)或0V(低電平信號)的電壓。當(dāng)設(shè)置為輸入時,該引腳可以讀取相同數(shù)值的電壓。
GPIO引腳不能提供過多電源
需要謹(jǐn)記的很重要的一點(diǎn)是GPIO引腳(以及3.3V電源引腳)是用于控制其他組件并與之通信的。
您可以從組合的3.3V引腳中獲取約51mA的電流,但是在連接的時候需要小心;如果您試圖讓電路從這些3.3V引腳獲取過大的電流,這可能會燒壞整個電路板。
而5V電源引腳則可以為您獲取電源提供的所有電流,其中要減去Raspberry Pi本身使用的電源。
將GPIO引腳連接到面包板
當(dāng)您第一次使用這些GPIO引腳時,最好使用一個面包板。這樣的話可以在不進(jìn)行焊接的情況下構(gòu)建電路并對其進(jìn)行修改。
如果您以前從來沒有使用過面包板,請通過以下視頻了解其基礎(chǔ)知識:
GPIO擴(kuò)展板也會起到很大的作用,可以通過引線將其連接到GPIO接口,并將引腳直接放置在面包板上,這些引腳帶有明確的標(biāo)記。
不過這需要一些空間:面包板每側(cè)需要20行。一個小的板子幾乎就只有20行!有多余的40行左右的面包板可以為初學(xué)者提供充足的空間。
具有特殊用途的GPIO引腳
每個GPIO引腳都可以設(shè)置為用于發(fā)送和接收高電平和低電平信號。有些引腳也會有一些特殊用途。
我們不會在這里進(jìn)行深入探究,只需要了解大概就好。
硬件 PWM
GPIO引腳輸出3.3V或0V:一個高電平信號或低電平信號。脈寬調(diào)制或PWM,是一種通過快速打開和關(guān)閉引腳來模擬介于兩者之間電壓的方法。
這不是真正的模擬信號,但是可以用于調(diào)暗LED光線之類的功能。它的閃爍速度要大于您的視覺敏感頻率,所以您看到的只是燈光變暗了而已。
您可以使用低通濾波器將PWM平滑為模擬信號。如果您對音質(zhì)不是很挑剔的話,可將其用于模擬音頻,比如用于門鈴或者玩具就不錯。
您可以使用軟件通過任意GPIO引腳生成PWM信號,但是操作系統(tǒng)會將其與其他任務(wù)并行處理,所以該信號可能會發(fā)生振動。
GPIO引腳18和19上有可用的硬件PWM。硬件PWM和耳機(jī)插孔使用相同的電路,所以不能同時使用。
串行總線引腳
當(dāng)您查看下面的圖表時(被稱作Raspberry Pi“引腳圖”),您會看到一些引腳是I2C、 SPI以及UART串行。這些是可用于與其他組件之間進(jìn)行數(shù)據(jù)發(fā)送和接收的串行總線協(xié)議。
您可以將這些與模擬轉(zhuǎn)換器或DAC結(jié)合使用,以輸出模擬信號。如果想要高質(zhì)量的音頻或者想要控制許多組件,這種方式可能比使用PWM方式更可取。
上拉和下拉電阻
通常,您會希望Raspberry Pi GPIO引腳可以讀取按鈕或者開關(guān)的位置。這通過接線可以很容易實現(xiàn),因為接線之后,被連接于控制電壓以讀取高電平信號或接地以讀取低電平信號的電路將會閉合。
問題是當(dāng)這個電路斷路而沒有任何信號連接到引腳時,它可能會返回任何值,這被稱為“浮動”,是完全沒有任何作用的。
您可以使用“上拉”或“下拉”電阻來防止浮動。
將一個上拉電阻連接到您的控制電壓,當(dāng)沒有其他任何連接時,引腳將讀取高電平信號。將一個下拉電阻接地,引腳將讀取低電平信號。使用任何一個都會為您提供您的開關(guān)或按鈕的相反值。
您不需要將這些電阻連接到電路中。它們已經(jīng)內(nèi)置在Raspberry Pi中,您可以通過軟件控制它們。
使用軟件控制GPIO引腳
控制GPIO引腳的最簡單方法之一是使用Python中的GPIO Zero 庫。如果您以前寫過Python代碼,這對您來說將會很容易上手。
如果這是您第一次使用Python,您可能需要先學(xué)習(xí)一些介紹性的教程。如果您不打算學(xué)習(xí)這些教程,也可以直接使用下面的指令,但是您可能會理解不了?!坝肞ython將枯燥的工作自動化(utomate the Boring Stuff With Python)”的網(wǎng)絡(luò)版本是個不錯的選擇,而且是免費(fèi)的。
GPIO Zero是默認(rèn)安裝在Raspbia Desktop映像上的。如果您使用的是Raspbian Lite或其他操作系統(tǒng),那么可能需要另行安裝。
讓我們使用它來開啟燈光
現(xiàn)在,讓我們來試試打開LED吧!這么簡單的工作其實不需要使用計算機(jī),但我們將在GPIO引腳中加入Raspberry Pi。
為此,您將需要:
一個帶電源的Raspberry Pi以及一個安裝了Raspbian的SD卡 | |
一個面包板 | |
一個GPIO擴(kuò)展板(可選,但是推薦使用) | |
一個LED |
您還會需要一些通用設(shè)備,例如:
? 電阻值在220Ω~1000Ω之間的電阻
? 一個USB鍵盤,或者SSH連接:可以讓您輸入指令的設(shè)備
? 跨接電纜或電線
? 一個下推按鈕
連接電源軌
如果您使用的是擴(kuò)展板,請將其連接到Raspberry Pi和面包板上。然后將3.3V電源引腳連接到穿過面包板底部的正電源軌,并將接地引腳連接到負(fù)電源軌。
連接并測試按鈕
現(xiàn)在將您的按鈕添加到面包板的中間。將按鈕的一個引腳連接到一個Raspberry Pi GPIO引腳。我用的是13,因為這是我的幸運(yùn)數(shù)字。
然后,將按鈕對角相對的引腳連接到負(fù)電源軌。當(dāng)您按下此按鈕時,電路將會閉合。
最后,我們需要讓Pi注意這個引腳,所以我們需要打開Python解釋器。在命令行中輸入:
python3
然后在解釋器中輸入:
from gpiozero import Button
如果您收到一條消息說“ImportError”,就檢查一下字母的大小寫是否正確。如果顯示“ModuleNotFoundError”,則需要安裝GPIO Zero。
如果沒有以上情況發(fā)生,那么就可以將引腳指定給按鈕了:
button = Button(13)
這個Button類負(fù)責(zé)分配上拉電阻。現(xiàn)在讓我們通過輸入以下指令來測試其是否有效:
while True:
if button.is_pressed:
print(‘Sweet, the button works!’)
break
Python對縮進(jìn)很敏感,所以一定要對空格嚴(yán)加控制。然后再次按下Enter鍵運(yùn)行循環(huán)代碼。
這個循環(huán)代碼會一直運(yùn)行,直到有人按下按鈕。這時候按下按鈕,應(yīng)該會產(chǎn)生一條說明按鈕有效的消息。這就意味著您已經(jīng)成功構(gòu)建了一個可以向您的Raspberry Pi發(fā)送消息的簡單電路。太棒了!
如果沒有產(chǎn)生這個結(jié)果,請檢查所有連接是否正確,然后重試。
連接并測試LED
LED中的D代表“二極管”,也就是說LED只能往一個方向?qū)ā?br />
您會注意到LED有一個引腳稍長:這將會被連接到正極。在本項目中,正極就是GPIO引腳。我使用的是引腳26,沒有什么特別的原因。
將LED放在面包板上,確保LED的引腳之間在水平方向有間隔,以避免短路?,F(xiàn)在將正極引腳連接到您的GPIO引腳。
LED應(yīng)與電阻串聯(lián),所以將電阻的一端連接到LED的短引腳上,另一端連接到負(fù)電源軌上。電阻沒有方向性,可以與任意端連接。
現(xiàn)在讓我們告訴Raspberry Pi發(fā)生了什么。類型:鏡像 Pi & Breadboard
from gpiozero import LED
led = LED(26)
如果一切連接正確,您將能夠使用以下指令打開和關(guān)閉LED:
led.on()
led.off()
使用按鈕控制LED
現(xiàn)在已經(jīng)完成了連接,并且經(jīng)檢查一切正常,輸入:
button.when_pressed = led.on
然后按下按鈕。LED應(yīng)亮起并保持亮起的狀態(tài)。現(xiàn)在輸入:
button.when_released = led.off
再次按下按鈕。松開按鈕后LED應(yīng)關(guān)閉。
恭喜!您已經(jīng)實現(xiàn)了GPIO引腳的使用!
雖然這些原理看起來很簡單,但是它們可以作為基礎(chǔ)來構(gòu)建數(shù)千個現(xiàn)目,甚至可以構(gòu)建您自己的項目。請注意安全,謹(jǐn)慎操作,但是最重要的一點(diǎn)是,一定要玩得開心!
DevicePlus 編輯團(tuán)隊
設(shè)備升級版適用于所有熱愛電子和機(jī)電一體化的人。
審核編輯黃宇
-
引腳
+關(guān)注
關(guān)注
16文章
1197瀏覽量
50578 -
GPIO
+關(guān)注
關(guān)注
16文章
1205瀏覽量
52145 -
Raspberry Pi
+關(guān)注
關(guān)注
2文章
559瀏覽量
22285
發(fā)布評論請先 登錄
相關(guān)推薦
評論