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