步驟1:組件
在繼續本教程之前,請確保您具有以下組件:
?Raspberry Pi Model B(http://www.adafruit.com/products/998)
?MicroSD卡(http://www.adafruit.com/products/102)
?Pi補鞋匠的分線和電纜(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)
?帶直流電動機的中型RC汽車
?藍牙鍵盤
?烙鐵和電線
步驟2:先決條件
在繼續本教程之前,請確保滿足以下先決條件:
?帶有GPIO電纜和面包板的組裝式補鞋匠
?烙鐵體驗
?升級的操作系統。您可以通過進入終端來實現此目的:
sudo apt-get upgrade
?最新的GPIO庫。您可以通過進入終端來實現此目的:
sudo apt-get update
sudo apt-get install python-dev
sudo apt-get install python-rpi.gpio
步驟3:L293D芯片
硬件設置中最重要的部分是L293D芯片。使用適當的代碼,該芯片可讓您控制兩個獨立的直流電動機的速度和方向。了解該芯片的工作方式及其每個引腳的功能對您至關重要。 “ + V”引腳(8)為電動機供電,而“ + V”引腳(16)為芯片邏輯供電。每個“ IN”引腳(2、7、10、15)都需要連接到GPIO引腳,而“ OUT”引腳(3、6、11、14)則為兩個直流電動機提供輸出。
第4步:硬件
了解了L293D芯片的原理之后,就該將其與其他組件一起組裝了,放在面包板上。已為您提供了原理圖。請注意L293D芯片的方向。
您可能會注意到圖中的LED。這些代表遙控車上的前燈或霓虹燈底燈。如果您的汽車缺少這些功能,請忽略原理圖的這一部分。
第5步:軟件
下面是您需要的python代碼這個程序工作。完成后將程序另存為rc_car.py。
將RPi.GPIO導入為io
io.setmode(io.BCM)
#這兩個代碼塊為RC車上的兩個直流電動機配置PWM設置。它定義用于輸入的兩個GPIO
#引腳,啟動PWM并將
#電動機的速度設置為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引腳,并將輸出設置為false .setup( 18,io.OUT)
io.output(18,False)
io.setup(23,io.OUT)
io.output(23,False)
#getch方法可以確定用戶通過訪問系統文件在鍵盤上按下了哪個鍵
#然后它將作為變量返回按下的鍵
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
#此部分代碼定義用于確定電動機是否需要正轉或反轉的方法。通過將
#GPIO引腳之一設置為true,將另一個設置為false,可以實現不同的方向。如果
#兩個引腳的狀態都匹配,則電動機將不會旋轉。
def motor1_forward():
io.output(電動機1_in1_pin,True)
io.output(電動機1_in2_pin,False)
def motor1_reverse():
io.output(motor1_in1_pin,False)
io.output(motor1_in2_pin,True)
def motor2_forward():
io.output(motor2_in1_pin,True)
io.output(motor2_in2_pin,False)
def io.output(motor2_in1_pin,False)
io.output(motor2_in2_pin,True)
#此方法將打開/關閉燈用戶
#按下特定鍵時關閉。然后它將更改燈的狀態
#,以便在下次調用時知道是打開還是關閉燈。
def toggleLights():
全局lightStatus
if(lightStatus == False):
io.output(18,True)
io.output(23,True)
lightStatus = True
else:
io.output(18, False)
io.output(23,False)
lightStatus = False
#此方法將切換轉向
#電機的方向。該方法將根據用戶按下的鍵確定用戶是否要
#向左或向右轉,然后
#然后進行適當的調整。它可以用作toggle
#,因為程序無法同時讀取
#上的多個按鍵。車輪的可能位置是#“右”,“中心”和“左”。然后它將更新輪子的
#狀態以在下次調用它時進行訪問。
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”
#設置PWM固定為false,以便電動機在用戶按下第一個鍵之前不會移動
#。io.output(電動機1_in1_pin,False)
io.output(電動機1_in2_pin,False)
io.output(電動機2_in1_pin ,False)
io.output(motor2_in2_pin,False)
#燈光和轉向狀態的全局變量
lightStatus = False
wheelStatus =“ centre” 《#》用戶h作為界面
print(“ w/s:加速”)
print(“ a/d:轉向”)
print(“ l:燈”)
print(“ x:退出” )
#無限循環直到用戶按下
#退出鍵
而True時才結束:
#調用鍵盤字符檢索方法并將其保存
#放入變量
= getch()
#按下“ w”鍵時汽車將向前行駛
if(char ==“ w”):
motor2_forward()
motor2.ChangeDutyCycle(99)
#按下“ s”鍵時汽車將倒車
if(char ==“ s”):
motor2_reverse()
motor2.ChangeDutyCycle(99)
#“ a “鍵將向左轉向
if(char ==” a“):
toggleSteering(”左“)
#” d“鍵將向右轉向
if(char = =“ d”):
toggleSteering(“ right”)
##“ l”鍵將打開/關閉LED燈
if(char ==“ l”):
toggleLights()
#“ x”鍵將中斷循環并退出程序
if(char ==“ x”):
print(“ Program Ended”)
break
#在每個循環的結尾加速電機將停止
#等待其下一個命令
motor2.ChangeDutyCycle(0)
#鍵盤字符變量將設置為空白,準備好
#保存下一個按下的鍵
char =“”
#程序將在終止
io.cleanup()
之前停止所有GPIO活動,步驟6:測試和配置
要測試代碼,您必須以超級用戶身份運行它才能訪問引腳。鍵入以下內容:
sudo python rc_car.py
按W和S鍵向前和向后移動汽車
按A和D鍵向左和向右切換轉向
按L
在準備退出程序時按X鍵。
步驟7:焊接
現在是時候將零件焊接到原型板上以增加其耐用性,然后在過程中將板焊接到連接電池組和電機的汽車上。切記不要將任何引腳與焊料連接在一起,因為會交叉信號。最好對電線進行顏色編碼以方便參考。
最終產品應與以下內容相似:
第8步:盡情享受您的新駭客RC汽車
責任編輯:wv
-
鍵盤
+關注
關注
4文章
859瀏覽量
39802 -
遙控車
+關注
關注
9文章
81瀏覽量
23803 -
樹莓派
+關注
關注
117文章
1710瀏覽量
105801
發布評論請先 登錄
相關推薦
評論