0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎樣用鍵盤控制樹莓派RC汽車

454398 ? 來源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-11-15 16:50 ? 次閱讀

步驟1:組件

在繼續(xù)本教程之前,請(qǐng)確保您具有以下組件:

?Raspberry Pi Model B(http://www.adafruit.com/products/998)

?MicroSD卡(http://www.adafruit.com/products/102)

?Pi補(bǔ)鞋匠的分線和電纜(http://www.adafruit.com/products/914)

?任意尺寸的面包板(http://www.adafruit.com/products/239)

?M/M電線(http://www.adafruit.com/products/153) Wires(http://www.adafruit.com/products/266)

?原型Pi板(http://www.adafruit.com/produ cts/801)

?L293D芯片(http://www.adafruit.com/products/807)

?帶直流電動(dòng)機(jī)的中型RC汽車

?藍(lán)牙鍵盤

?烙鐵和電線

步驟2:先決條件

在繼續(xù)本教程之前,請(qǐng)確保滿足以下先決條件:

?帶有GPIO電纜和面包板的組裝式補(bǔ)鞋匠

?烙鐵體驗(yàn)

?升級(jí)的操作系統(tǒng)。您可以通過進(jìn)入終端來實(shí)現(xiàn)此目的:

sudo apt-get upgrade

?最新的GPIO庫。您可以通過進(jìn)入終端來實(shí)現(xiàn)此目的:

sudo apt-get update

sudo apt-get install python-dev

sudo apt-get install python-rpi.gpio

步驟3:L293D芯片

硬件設(shè)置中最重要的部分是L293D芯片。使用適當(dāng)?shù)拇a,該芯片可讓您控制兩個(gè)獨(dú)立的直流電動(dòng)機(jī)的速度和方向。了解該芯片的工作方式及其每個(gè)引腳的功能對(duì)您至關(guān)重要。 “ + V”引腳(8)為電動(dòng)機(jī)供電,而“ + V”引腳(16)為芯片邏輯供電。每個(gè)“ IN”引腳(2、7、10、15)都需要連接到GPIO引腳,而“ OUT”引腳(3、6、11、14)則為兩個(gè)直流電動(dòng)機(jī)提供輸出。

第4步:硬件

了解了L293D芯片的原理之后,就該將其與其他組件一起組裝了,放在面包板上。已為您提供了原理圖。請(qǐng)注意L293D芯片的方向。

您可能會(huì)注意到圖中的LED。這些代表遙控車上的前燈或霓虹燈底燈。如果您的汽車缺少這些功能,請(qǐng)忽略原理圖的這一部分。

第5步:軟件

下面是您需要的python代碼這個(gè)程序工作。完成后將程序另存為rc_car.py。

將RPi.GPIO導(dǎo)入為io

io.setmode(io.BCM)

import sys,tty,termios,time

#這兩個(gè)代碼塊為RC車上的兩個(gè)直流電動(dòng)機(jī)配置PWM設(shè)置。它定義用于輸入的兩個(gè)GPIO

#引腳,啟動(dòng)PWM并將

#電動(dòng)機(jī)的速度設(shè)置為0

motor1_in1_pin = 4

motor1_in2_pin = 17 setup(motor1_in1_pin ,io.OUT)

io.setup(motor1_in2_pin,io.OUT)

motor1 = io.PWM(4,100)

motor1.start(0)

motor1.ChangeDutyCycle(0)

motor2_in1_pin = 24

motor2_in2_pin = 25

io.setup(motor2_in1_pin,io.OUT)

io.setup(motor2_in2_pin,io.OUT)

motor2 = io.PWM(4,100)

motor2 .start(0)

motor2.ChangeDutyCycle(0)

#定義將用于RC車上LED的GPIO引腳,并將輸出設(shè)置為false .setup( 18,io.OUT)

io.output(18,F(xiàn)alse)

io.setup(23,io.OUT)

io.output(23,F(xiàn)alse)

#getch方法可以確定用戶通過訪問系統(tǒng)文件在鍵盤上按下了哪個(gè)鍵

#然后它將作為變量返回按下的鍵

def getch():

fd = sys.stdin .fileno()

old_settings = termios.tcgetattr(fd)

試試:

tty.setraw(sys.stdin.filen o())

ch = sys.stdin.read(1)

最后:

termios.tcsetattr(fd,termios.TCSADRAIN,old_settings)

return ch

#此部分代碼定義用于確定電動(dòng)機(jī)是否需要正轉(zhuǎn)或反轉(zhuǎn)的方法。通過將

#GPIO引腳之一設(shè)置為true,將另一個(gè)設(shè)置為false,可以實(shí)現(xiàn)不同的方向。如果

#兩個(gè)引腳的狀態(tài)都匹配,則電動(dòng)機(jī)將不會(huì)旋轉(zhuǎn)。

def motor1_forward():

io.output(電動(dòng)機(jī)1_in1_pin,True)

io.output(電動(dòng)機(jī)1_in2_pin,F(xiàn)alse)

def motor1_reverse():

io.output(motor1_in1_pin,F(xiàn)alse)

io.output(motor1_in2_pin,True)

def motor2_forward():

io.output(motor2_in1_pin,True)

io.output(motor2_in2_pin,F(xiàn)alse)

def io.output(motor2_in1_pin,F(xiàn)alse)

io.output(motor2_in2_pin,True)

#此方法將打開/關(guān)閉燈用戶

#按下特定鍵時(shí)關(guān)閉。然后它將更改燈的狀態(tài)

#,以便在下次調(diào)用時(shí)知道是打開還是關(guān)閉燈。

def toggleLights():

全局lightStatus

if(lightStatus == False):

io.output(18,True)

io.output(23,True)

lightStatus = True

else:

io.output(18, False)

io.output(23,F(xiàn)alse)

lightStatus = False

#此方法將切換轉(zhuǎn)向

電機(jī)的方向。該方法將根據(jù)用戶按下的鍵確定用戶是否要

#向左或向右轉(zhuǎn),然后

#然后進(jìn)行適當(dāng)?shù)恼{(diào)整。它可以用作toggle

#,因?yàn)槌绦驘o法同時(shí)讀取

#上的多個(gè)按鍵。車輪的可能位置是?!坝摇保?a target="_blank">中心”和“左”。然后它將更新輪子的

#狀態(tài)以在下次調(diào)用它時(shí)進(jìn)行訪問。

def toggleSteering(direction):

global wheelStatus

if(direction ==“ right”):

if(wheelStatus ==“ centre”):

motor1_forward()

motor1.ChangeDutyCycle(99)

wheelStatus =“ right”

elif(wheelStatus ==“ left”):

motor1.ChangeDutyCycle(0)

wheelStatus =“中心”

if(方向==“左”):

if(wheelStatus ==“中心”):

motor1_reverse()

motor1 .ChangeDutyCycle(99)

wheelStatus =“左”

elif(wheelStatus ==“右”):

motor1.ChangeDutyCycle(0)

wheelStatus =“ centre”

#設(shè)置PWM固定為false,以便電動(dòng)機(jī)在用戶按下第一個(gè)鍵之前不會(huì)移動(dòng)

#。io.output(電動(dòng)機(jī)1_in1_pin,F(xiàn)alse)

io.output(電動(dòng)機(jī)1_in2_pin,F(xiàn)alse)

io.output(電動(dòng)機(jī)2_in1_pin ,F(xiàn)alse)

io.output(motor2_in2_pin,F(xiàn)alse)

#燈光和轉(zhuǎn)向狀態(tài)的全局變量

lightStatus = False

wheelStatus =“ centre” 《#》用戶h作為界面

print(“ w/s:加速”)

print(“ a/d:轉(zhuǎn)向”)

print(“ l:燈”)

print(“ x:退出” )

#無限循環(huán)直到用戶按下

#退出鍵

而True時(shí)才結(jié)束:

#調(diào)用鍵盤字符檢索方法并將其保存

#放入變量

= getch()

#按下“ w”鍵時(shí)汽車將向前行駛

if(char ==“ w”):

motor2_forward()

motor2.ChangeDutyCycle(99)

#按下“ s”鍵時(shí)汽車將倒車

if(char ==“ s”):

motor2_reverse()

motor2.ChangeDutyCycle(99)

?!?a “鍵將向左轉(zhuǎn)向

if(char ==” a“):

toggleSteering(”左“)

#” d“鍵將向右轉(zhuǎn)向

if(char = =“ d”):

toggleSteering(“ right”)

#?!?l”鍵將打開/關(guān)閉LED燈

if(char ==“ l”):

toggleLights()

?!?x”鍵將中斷循環(huán)并退出程序

if(char ==“ x”):

print(“ Program Ended”)

break

#在每個(gè)循環(huán)的結(jié)尾加速電機(jī)將停止

#等待其下一個(gè)命令

motor2.ChangeDutyCycle(0)

#鍵盤字符變量將設(shè)置為空白,準(zhǔn)備好

#保存下一個(gè)按下的鍵

char =“”

#程序?qū)⒃诮K止

io.cleanup()

之前停止所有GPIO活動(dòng),步驟6:測(cè)試和配置

要測(cè)試代碼,您必須以超級(jí)用戶身份運(yùn)行它才能訪問引腳。鍵入以下內(nèi)容:

sudo python rc_car.py

按W和S鍵向前和向后移動(dòng)汽車

按A和D鍵向左和向右切換轉(zhuǎn)向

按L

在準(zhǔn)備退出程序時(shí)按X鍵。

步驟7:焊接

現(xiàn)在是時(shí)候?qū)⒘慵附拥皆桶迳弦栽黾悠淠陀眯裕缓笤谶^程中將板焊接到連接電池組和電機(jī)的汽車上。切記不要將任何引腳與焊料連接在一起,因?yàn)闀?huì)交叉信號(hào)。最好對(duì)電線進(jìn)行顏色編碼以方便參考。

最終產(chǎn)品應(yīng)與以下內(nèi)容相似:

第8步:盡情享受您的新駭客RC汽車

責(zé)任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 鍵盤
    +關(guān)注

    關(guān)注

    4

    文章

    859

    瀏覽量

    39773
  • 遙控車
    +關(guān)注

    關(guān)注

    9

    文章

    81

    瀏覽量

    23778
  • 樹莓派
    +關(guān)注

    關(guān)注

    117

    文章

    1710

    瀏覽量

    105751
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    GPIO在樹莓中的應(yīng)用

    直接控制和讀取外部硬件設(shè)備的狀態(tài)。 1. GPIO簡介 GPIO是樹莓派上用于與外部世界交互的一組引腳。這些引腳可以被配置為輸入或輸出模式,從而實(shí)現(xiàn)對(duì)外部設(shè)備的控制和數(shù)據(jù)讀取。樹莓
    的頭像 發(fā)表于 01-09 09:41 ?128次閱讀

    干貨來嘍!實(shí)用樹莓Linux編譯指南

    不友好,有沒有好的解決辦法? 今天來分享一下我的私藏干貨——樹莓Linux編譯。編譯好之后,開發(fā)板只需插到樹莓派上連接電腦就可以直接用了,極其方便。 本文以樹莓
    的頭像 發(fā)表于 12-18 16:31 ?150次閱讀
    干貨來嘍!實(shí)用<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>Linux編譯指南

    鍵盤就是電腦,樹莓500來了!

    2020年11月2日,樹莓派發(fā)布了樹莓400(Raspberry Pi 400)——一款將樹莓內(nèi)置到
    發(fā)表于 12-13 13:52

    樹莓傳感器使用方法 樹莓 Raspberry Pi 4優(yōu)缺點(diǎn)

    樹莓傳感器使用方法 樹莓(Raspberry Pi)是一款由英國樹莓基金會(huì)開發(fā)的小型單板計(jì)
    的頭像 發(fā)表于 12-06 10:35 ?604次閱讀

    使用樹莓實(shí)現(xiàn)遠(yuǎn)程控制的技巧

    樹莓是一款功能強(qiáng)大的微型計(jì)算機(jī),其體積小巧、價(jià)格低廉,非常適合用于各種DIY項(xiàng)目。其中,遠(yuǎn)程控制樹莓應(yīng)用中非常受歡迎的一個(gè)領(lǐng)域。通過遠(yuǎn)
    的頭像 發(fā)表于 11-11 11:37 ?590次閱讀

    ARM開發(fā)板與樹莓的比較

    ARM開發(fā)板和樹莓都是基于ARM架構(gòu)的單板計(jì)算機(jī),它們?cè)诮逃?、工業(yè)控制、物聯(lián)網(wǎng)等領(lǐng)域有著廣泛的應(yīng)用。 硬件配置 ARM開發(fā)板和樹莓的硬件
    的頭像 發(fā)表于 11-05 11:11 ?537次閱讀

    樹莓gpio有什么,樹莓gpio接口及編程方法

    /Output,通用輸入/輸出)是樹莓提供的一組可編程的引腳,是樹莓與外部世界進(jìn)行交互的重要橋梁。通過GPIO,用戶可以控制外部電路,讀
    的頭像 發(fā)表于 10-22 18:09 ?1064次閱讀

    什么是樹莓?樹莓是什么架構(gòu)的

    什么是樹莓 樹莓(Raspberry Pi,簡寫為RPi,別名為RasPi/RPI)是由英國“Raspberry Pi 慈善基金會(huì)”開發(fā)的一款為學(xué)習(xí)計(jì)算機(jī)編程教育而設(shè)計(jì)的微型電腦。
    的頭像 發(fā)表于 10-22 17:33 ?1112次閱讀

    樹莓網(wǎng)關(guān):物聯(lián)網(wǎng)應(yīng)用的新標(biāo)桿

    的特點(diǎn)是體積小巧(大約信用卡大?。δ荦R全,足以支持多種計(jì)算任務(wù)。 樹莓經(jīng)常被用作物聯(lián)網(wǎng)網(wǎng)關(guān),收集設(shè)備數(shù)據(jù),然后將數(shù)據(jù)上傳云平臺(tái),并還可以用來接收來自云端的控制指令,控制其他連接
    的頭像 發(fā)表于 10-09 16:44 ?354次閱讀
    類<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>網(wǎng)關(guān):物聯(lián)網(wǎng)應(yīng)用的新標(biāo)桿

    樹莓和51單片機(jī)哪個(gè)有優(yōu)勢(shì)

    是一款由英國樹莓基金會(huì)開發(fā)的信用卡大小的單板計(jì)算機(jī)。自2012年推出以來,樹莓已經(jīng)發(fā)展出多個(gè)版本,包括A、B、2、3、4等型號(hào)。樹莓
    的頭像 發(fā)表于 09-02 09:04 ?894次閱讀

    樹莓和單片機(jī)的優(yōu)缺點(diǎn)是什么

    樹莓(Raspberry Pi)和單片機(jī)(Microcontroller)是兩種廣泛應(yīng)用于電子項(xiàng)目和嵌入式系統(tǒng)的硬件平臺(tái)。它們各自具有獨(dú)特的優(yōu)缺點(diǎn),適用于不同的應(yīng)用場景。 樹莓
    的頭像 發(fā)表于 08-30 18:21 ?1766次閱讀

    樹莓的功能用途是什么

    、科研、工業(yè)控制、物聯(lián)網(wǎng)、多媒體播放、家庭自動(dòng)化等領(lǐng)域。 樹莓(Raspberry Pi)是一種小型、低成本的單板計(jì)算機(jī),由英國的Raspberry Pi基金會(huì)開發(fā),其功能和用途非常廣泛。以下是
    的頭像 發(fā)表于 08-30 18:01 ?2911次閱讀

    樹莓gui開發(fā)什么ide

    樹莓(Raspberry Pi)是一款功能強(qiáng)大的微型計(jì)算機(jī),可以運(yùn)行多種操作系統(tǒng),如Raspbian、Ubuntu等。在樹莓派上進(jìn)行GUI(圖形用戶界面)開發(fā),可以使用多種集成開發(fā)環(huán)境(IDE
    的頭像 發(fā)表于 08-30 16:49 ?966次閱讀

    樹莓是x86還是arm

    樹莓(Raspberry Pi)是一款由英國樹莓基金會(huì)(Raspberry Pi Foundation)開發(fā)的微型計(jì)算機(jī)。它基于ARM架構(gòu),而非x86架構(gòu)。 一、
    的頭像 發(fā)表于 08-30 15:42 ?1229次閱讀

    樹莓裝ubuntu和raspbian哪個(gè)更好

    樹莓(Raspberry Pi)是一款由英國樹莓基金會(huì)開發(fā)的單板計(jì)算機(jī),廣泛應(yīng)用于教育、科研、物聯(lián)網(wǎng)等領(lǐng)域。樹莓
    的頭像 發(fā)表于 08-30 15:41 ?1471次閱讀