這篇文章來源于DevicePlus.com英語網(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 庫。如果您以前寫過Python代碼,這對(duì)您來說將會(huì)很容易上手。
如果這是您第一次使用Python,您可能需要先學(xué)習(xí)一些介紹性的教程。如果您不打算學(xué)習(xí)這些教程,也可以直接使用下面的指令,但是您可能會(huì)理解不了。“用Python將枯燥的工作自動(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的引腳之間在水平方向有間隔,以避免短路。現(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)實(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文章
1667瀏覽量
52625 -
GPIO
+關(guān)注
關(guān)注
16文章
1279瀏覽量
53834 -
Raspberry Pi
+關(guān)注
關(guān)注
2文章
620瀏覽量
23030
發(fā)布評(píng)論請(qǐng)先 登錄
Raspberry Pi GPIO的編號(hào)規(guī)范(轉(zhuǎn))
基于Amazon?Echo?和?Raspberry?Pi?的自動(dòng)窗簾控制
Raspberry Pi Pico是什么
Raspberry Pi上的IO引腳編號(hào)有幾種方法
一個(gè)印有PINOUT的Raspberry Pi pico分線板
用于Raspberry Pi的DIN導(dǎo)軌安裝
帶超頻冷卻孔徑的Raspberry Pi GPIO帽
用于40針Raspberry Pi型號(hào)的GPIO分線板
樹莓派GPIO引腳的說明
Raspberry Pi GPIO帽開源分享

用于40針Raspberry Pi型號(hào)的GPIO分線板

使用Adafruit IO作為MQTT控制Raspberry Pi GPIO的AC設(shè)備

如何使用GPIO引腳將按鈕連接到Raspberry Pi

通過RPi.GPIO Python庫使用Raspberry Pi GPIO引腳

評(píng)論