“(SKU:RB-01C073)樹莓派電機驅動板”的版本間的差異
(未顯示2個用戶的6個中間版本) | |||
第12行: | 第12行: | ||
7.連接:使用GPIO接口直接同樹莓派連接<br/> | 7.連接:使用GPIO接口直接同樹莓派連接<br/> | ||
8.外形尺寸:51×51 mm | 8.外形尺寸:51×51 mm | ||
? | |||
==使用方法== | ==使用方法== | ||
+ | 利用Raspberry Pi的硬件和Python語言來完成一個機器人制作 | ||
+ | ===硬件搭建=== | ||
+ | 在這次制作中,選擇一款AS-4WD鋁合金的小車平臺,以小車平臺為基礎,在上面添加了7寸高清液晶顯示器、無線鍵盤、藍牙模塊以及電機驅動器等配件,如圖1是羅列制作機器人所用的物料。整個樹莓派的小車系統(tǒng)分兩步來搭建,首先是搭建樹莓派的計算機系統(tǒng),雖然是一個袖珍的計算機,但是“麻雀雖小,五臟俱全”,除去樹莓派的主板外,還需準備一套標準通用的USB鍵盤鼠標,一個顯示器(在本文描述的是一個用于車載監(jiān)控設備的7寸顯示器,通過RCA接口相連),一塊電池用于整個系統(tǒng)供電,最后也是最關鍵的需要準備預裝了Debian系統(tǒng)的SD卡(對于SD卡要求讀寫最好在4MB/S以上、容量大于2GB,當然容量更大速度越快更好)。在完成計算機系統(tǒng)搭建后,接下來是完成機器人系統(tǒng)的搭建,在原理上,主要利用樹莓派那兩排外置的針腳的GPIO功能控制外置樹莓派專用的驅動器(Raspi driver)來實現(xiàn)電機的使能、正反轉控制,以及利用UART功能與藍牙數(shù)傳模塊實現(xiàn)數(shù)據(jù)通信,這樣就能通過手機端的藍牙遙控器對小車進行控制,如圖2是整體硬件搭建完后的靚圖,在圖3中給出了樹莓派機器人的硬件連線圖。 | ||
+ | [[文件:ppp1.png|700px|有框|居中|圖1 機器人所用物料]] | ||
+ | [[文件:ppp9.png|700px|有框|居中|圖2-1 會行走的樹莓派電腦]] | ||
+ | [[文件:ppp22.png|700px|有框|居中|圖2-2]] | ||
+ | [[文件:ppp3.png|700px|有框|居中|圖3 樹莓派機器人的硬件連線圖]] | ||
+ | ===Python庫配置=== | ||
+ | 在開始編寫小車控制程序前需要對樹莓派計算機的相關Python的庫文件進行安裝設置,首先是GPIO,打開LX終端(LXTerminal),更新apt-get軟件安裝包列表(注意必須要在網(wǎng)絡連接正常情況下),然后執(zhí)行安裝命令來安裝raspberry-gpio-python包,具體指令如下: | ||
+ | #pi@raspberrypi ~ $ sudo apt-get update | ||
+ | #pi@raspberrypi ~ $ sudo apt-get install python-rpi.gpio | ||
+ | 在安裝完成Python的GPIO庫后,接下來是安裝Python的UART庫,和上述之前步驟相似,更新apt-get軟件安裝包列表,后安裝Python的串口通信模塊,具體指令如下: | ||
+ | #pi@raspberrypi ~ $ sudo apt-get update | ||
+ | #pi@raspberrypi ~ $ sudo apt-get install python-serial | ||
+ | 通過上述兩個步驟,已經(jīng)安裝好了Python與樹莓派外置硬件GPIO以及UART庫文件,在接下來的小車控制程序里就可以直接調用代碼了,在開始編寫控制程序前,需要對默認串口的一些參數(shù)進行更改,由于系統(tǒng)默認的串口功能用于輸出內核日志,相關的參數(shù)與外界的串口設備有所不同,所以需要對其啟動配置文件進行更改,在LXTerminal通過鍵入“sudo nano /boot/cmdline.txt”進入/boot/cmdline.txt,用vi編輯器打開cmdline.txt文件,將dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait去掉console=ttyAMA0,115200 kgdboc=ttyAMA0,115200退出vi編輯器時,注意要對文件進行保存;同時需要對系統(tǒng)初始化文件進行編輯,在LXTerminal中,鍵入“ sudo nano /etc/inittab”,然后找到以下片段內容: | ||
+ | # #Spawn a getty on Raspberry Pi serial line | ||
+ | #T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100 | ||
+ | 改為如下,注釋掉對“ttyAMA0”端口的參數(shù)即可,退出vi編輯器時,同樣需要注意要對文件進行保存 | ||
+ | # #Spawn a getty on Raspberry Pi serial line | ||
+ | # #T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100 | ||
+ | 重啟樹莓派,該配置就可以生效了,完成了上述步驟,就可以進入下一章節(jié),機器人調試進程。 | ||
+ | ===Python GPIO調試=== | ||
+ | ====調試步驟==== | ||
+ | 利用在計算機上的語言來讓計算機的IO出現(xiàn)跳動,打開系統(tǒng)桌面上的IDLE3編輯器,分4步走: | ||
+ | #導入GPIO庫,在編輯行中鍵入“import RPi.GPIO as GPIO”,按“回車”鍵執(zhí)行即可; | ||
+ | #設定GPIO引腳使用標號模式,若是選擇板子上的標號,在編輯器中鍵入“GPIO.setmode(GPIO.BOARD)”若是使用芯片本身的標號模式,只要鍵入“GPIO.setmode(GPIO.BCM)”; | ||
+ | #設定對應GPIO的模式,若是使用其輸出功能“GPIO.setup(pin_number,GPIO.OUT)”,使用輸入功能只要將GPIO.OUT修改為GPIO.IN即可; | ||
+ | #在輸出模式下,使對應管腳的電平置高或者置低,在輸入模式下只要讀取相應管腳的電平即可。 | ||
+ | ====調試示例==== | ||
+ | RasPi Driver上熄滅LED1以及點亮LED2操作 | ||
+ | * import RPi.GPIO as GPIO | ||
+ | * #### gpio init | ||
+ | * GPIO.setmode(GPIO.BCM) | ||
+ | * GPIO.setup(7,GPIO.OUT) #LED2 | ||
+ | * GPIO.setup(8,GPIO.OUT) #LED1 | ||
+ | * GPIO.output(7,GPIO.LOW) #LED2 ON | ||
+ | * GPIO.output(8,GPIO.HIGH)#LED1 OFF | ||
+ | [[文件:ppp4.png|700px|有框|居中|圖4 試驗截圖]] | ||
+ | ===Python UART調試=== | ||
+ | 對于樹莓派的UART功能的實現(xiàn)其實方法和步驟與上面的GPIO 的使用類似,也是分作4步走: | ||
+ | *Step1導入串口庫,鍵入“import serial”; | ||
+ | *Step2初始化串口,在此設置于外部藍牙配套的參數(shù),BUAD=9600,timeout = 0.5,相應的鍵入“ser = serial.Serial('/dev/ttyAMA0', 9600, timeout = 0.5)”; | ||
+ | *Step3打開使能串口,“if ser.isOpen() == False:ser.open()”; | ||
+ | <pre style='color:blue'>import serial | ||
+ | import time | ||
+ | ser = serial.Serial('/dev/ttyAMA0', 9600, timeout = 0.5) | ||
+ | while True: | ||
+ | if ser.isOpen() == False: | ||
+ | ser.open() | ||
+ | print ser.read() | ||
+ | ser.write('A') | ||
+ | time.sleep(1)</pre> | ||
+ | *Step4當讀取數(shù)據(jù)時使用“ser.read() ”,當發(fā)送數(shù)據(jù)時使用“ser.write(數(shù)據(jù))”。這里通過IDLE3編輯了一個Python的程序Serial_test.py,然后直接在LXTerminal鍵入“sudo python Serial_test.py”(注意,由于默認狀態(tài)下是利用賬戶名:pi進行操作,所以需要將文件放置在/home/pi目錄下,才能直接執(zhí)行,無需),然后手機藍牙遙控器(如圖5)與藍牙透傳模塊相連接,成功通訊后,既可以通過手機遙控器的按鍵按鈕發(fā)送相應字符在串口上看見對應字符打印至屏幕。在此給出了測試的源程序(如下),通過電腦端的藍牙虛擬出串口與樹莓派外接的藍牙透明串口模塊連接,進行數(shù)據(jù)傳遞,電腦端的串口助手發(fā)送字母“B”,同時收到樹莓派發(fā)送來的字母“A”并顯示在調試的接收窗口,樹莓派端收到由電腦端發(fā)送來的字母“B”,并打印出來,通過此現(xiàn)象既可以證明樹莓派的UART功能測試正常,如下附實驗的屏幕截圖6。 | ||
+ | [[文件:ppp8.png|700px|有框|居中|圖5 手機藍牙遙控器]] | ||
+ | [[文件:ppp6.png|700px|有框|居中|圖6 測試照片 ]] | ||
+ | ===機器人控制=== | ||
+ | 對于AS-4WD小車的控制而言就比較簡單了,在本制作中用到了RasPi專用的電機驅動板,板載以L293為核心的電機驅動電路,以及通過兩組每組2個IO來實現(xiàn)電機的正反轉、以及使能。通過上述的管腳布置可以清晰的看出,樹莓派外置硬件與RasPi Driver的連接關系,通過GPIO4以及GPIO17控制其中一路電機的轉向以及使能(高電平有效),利用GPIO8來對正反轉進行狀態(tài)指示,同理可見GPIO25用于另一路的正反轉控制、GPIO10為使能、GPIO7狀態(tài)指示;同時利用板上外置的UART接口與藍牙串口模塊連接,具體方法不在贅述。對于整個程序框架相對以前的單片機版的遙控小車而言是比較簡單的,主要分功能模塊初始化設置、循環(huán)判斷遙控值以及輸出對應功能運動值,詳見系統(tǒng)控制原理框圖7。導入庫文件,對GPIO和串口配置,具體參數(shù)和上述一致,不在贅述;完成上述設置后,就是整個控制小車的程序了,讀取串口緩沖區(qū)的值,隨后完成循環(huán)判斷由手機藍牙遙控器發(fā)送的字符數(shù)據(jù)“A”、“B”、“C”、“D”,對應相應的運動動作(注意:在對應相應的動作時,可能由于驅動板電機的接線原因高低電平不對應預設動作,可以靈活適當調整接線或者軟件修改電平)。 | ||
+ | [[文件:ppp7.png|700px|有框|居中|圖7 系統(tǒng)控制原理框圖]] | ||
+ | ==產(chǎn)品相關推薦== | ||
+ | [[文件:erweima.png|230px|無框|右]] | ||
+ | ===產(chǎn)品購買地址=== | ||
+ | [http://lifestyle201.com/goods-534.html 樹莓派驅動板]<br/> | ||
+ | ===周邊產(chǎn)品推薦=== | ||
+ | [https://item.taobao.com/item.htm?spm=a1z10.3-c.w4002-3667083713.15.CFsgjc&id=18739309333 11.1V鋰電池]<br/> | ||
+ | [https://item.taobao.com/item.htm?spm=a1z10.3-c.w4002-3667083713.44.q97wjE&id=43974605271 樹莓派2代控制器]<br/> | ||
+ | ===相關問題解答=== | ||
+ | [http://www.makerspace.cn/forum.php?mod=viewthread&tid=4631 樹莓派電機驅動板供電問題]<br/> | ||
+ | ===相關學習資料=== | ||
+ | [http://www.makerspace.cn/forum.php?mod=forumdisplay&fid=59 哈爾濱奧松機器人技術論壇之樹莓派相關學習資料及教程]<br/> |
2015年10月23日 (五) 15:13的最后版本
目錄 |
產(chǎn)品概述
Raspberry Pi包括很多的處理能力,這使得它成為完美的機器人的大腦,Raspberry Pi有很多硬件外設,但電機控制器不是其中之一。最新款Raspberry?Pi樹莓派直流電機驅動板,由哈爾濱奧松機器人科技有限公司研發(fā)團隊專門為廣大樹莓派愛好者量身定做,解決了樹莓派電機控制的問題,變成一個機器人控制器的擴展板。此款直流電機驅動板外形精巧,插接方便,性能穩(wěn)定;與樹莓派控制器完美結合,安裝它只要簡單的把樹莓派驅動板的GPIO口Raspberry Pi插接在一起,它提供兩個電機控制接口,兩個狀態(tài)LED顯示,一個Python庫可以很容易的控制樹莓派驅動板。Raspberry Pi和樹莓派電機驅動板相結合,使得它構建一個機器人更容易和更便宜,便于利用機器人來學習使用Linux操作系統(tǒng)和Python代碼,用樹莓派控制器制作出屬于你自己的酷炫機器人,快來打造你的機器人王國吧!
規(guī)格參數(shù)
1.電機控制:雙電機雙向控制
2.輸入電壓:DC 7 - 12V
3.輸出:雙開放式集電極輸出
4.狀態(tài)指示燈:2×LED綠色
5.擴展接口:5V串行接口、3V的I2C總線接口
6.編程:簡單的使用Python庫模塊
7.連接:使用GPIO接口直接同樹莓派連接
8.外形尺寸:51×51 mm
使用方法
利用Raspberry Pi的硬件和Python語言來完成一個機器人制作
硬件搭建
在這次制作中,選擇一款AS-4WD鋁合金的小車平臺,以小車平臺為基礎,在上面添加了7寸高清液晶顯示器、無線鍵盤、藍牙模塊以及電機驅動器等配件,如圖1是羅列制作機器人所用的物料。整個樹莓派的小車系統(tǒng)分兩步來搭建,首先是搭建樹莓派的計算機系統(tǒng),雖然是一個袖珍的計算機,但是“麻雀雖小,五臟俱全”,除去樹莓派的主板外,還需準備一套標準通用的USB鍵盤鼠標,一個顯示器(在本文描述的是一個用于車載監(jiān)控設備的7寸顯示器,通過RCA接口相連),一塊電池用于整個系統(tǒng)供電,最后也是最關鍵的需要準備預裝了Debian系統(tǒng)的SD卡(對于SD卡要求讀寫最好在4MB/S以上、容量大于2GB,當然容量更大速度越快更好)。在完成計算機系統(tǒng)搭建后,接下來是完成機器人系統(tǒng)的搭建,在原理上,主要利用樹莓派那兩排外置的針腳的GPIO功能控制外置樹莓派專用的驅動器(Raspi driver)來實現(xiàn)電機的使能、正反轉控制,以及利用UART功能與藍牙數(shù)傳模塊實現(xiàn)數(shù)據(jù)通信,這樣就能通過手機端的藍牙遙控器對小車進行控制,如圖2是整體硬件搭建完后的靚圖,在圖3中給出了樹莓派機器人的硬件連線圖。
Python庫配置
在開始編寫小車控制程序前需要對樹莓派計算機的相關Python的庫文件進行安裝設置,首先是GPIO,打開LX終端(LXTerminal),更新apt-get軟件安裝包列表(注意必須要在網(wǎng)絡連接正常情況下),然后執(zhí)行安裝命令來安裝raspberry-gpio-python包,具體指令如下:
- pi@raspberrypi ~ $ sudo apt-get update
- pi@raspberrypi ~ $ sudo apt-get install python-rpi.gpio
在安裝完成Python的GPIO庫后,接下來是安裝Python的UART庫,和上述之前步驟相似,更新apt-get軟件安裝包列表,后安裝Python的串口通信模塊,具體指令如下:
- pi@raspberrypi ~ $ sudo apt-get update
- pi@raspberrypi ~ $ sudo apt-get install python-serial
通過上述兩個步驟,已經(jīng)安裝好了Python與樹莓派外置硬件GPIO以及UART庫文件,在接下來的小車控制程序里就可以直接調用代碼了,在開始編寫控制程序前,需要對默認串口的一些參數(shù)進行更改,由于系統(tǒng)默認的串口功能用于輸出內核日志,相關的參數(shù)與外界的串口設備有所不同,所以需要對其啟動配置文件進行更改,在LXTerminal通過鍵入“sudo nano /boot/cmdline.txt”進入/boot/cmdline.txt,用vi編輯器打開cmdline.txt文件,將dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait去掉console=ttyAMA0,115200 kgdboc=ttyAMA0,115200退出vi編輯器時,注意要對文件進行保存;同時需要對系統(tǒng)初始化文件進行編輯,在LXTerminal中,鍵入“ sudo nano /etc/inittab”,然后找到以下片段內容:
- #Spawn a getty on Raspberry Pi serial line
- T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
改為如下,注釋掉對“ttyAMA0”端口的參數(shù)即可,退出vi編輯器時,同樣需要注意要對文件進行保存
- #Spawn a getty on Raspberry Pi serial line
- #T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
重啟樹莓派,該配置就可以生效了,完成了上述步驟,就可以進入下一章節(jié),機器人調試進程。
Python GPIO調試
調試步驟
利用在計算機上的語言來讓計算機的IO出現(xiàn)跳動,打開系統(tǒng)桌面上的IDLE3編輯器,分4步走:
- 導入GPIO庫,在編輯行中鍵入“import RPi.GPIO as GPIO”,按“回車”鍵執(zhí)行即可;
- 設定GPIO引腳使用標號模式,若是選擇板子上的標號,在編輯器中鍵入“GPIO.setmode(GPIO.BOARD)”若是使用芯片本身的標號模式,只要鍵入“GPIO.setmode(GPIO.BCM)”;
- 設定對應GPIO的模式,若是使用其輸出功能“GPIO.setup(pin_number,GPIO.OUT)”,使用輸入功能只要將GPIO.OUT修改為GPIO.IN即可;
- 在輸出模式下,使對應管腳的電平置高或者置低,在輸入模式下只要讀取相應管腳的電平即可。
調試示例
RasPi Driver上熄滅LED1以及點亮LED2操作
- import RPi.GPIO as GPIO
- #### gpio init
- GPIO.setmode(GPIO.BCM)
- GPIO.setup(7,GPIO.OUT) #LED2
- GPIO.setup(8,GPIO.OUT) #LED1
- GPIO.output(7,GPIO.LOW) #LED2 ON
- GPIO.output(8,GPIO.HIGH)#LED1 OFF
Python UART調試
對于樹莓派的UART功能的實現(xiàn)其實方法和步驟與上面的GPIO 的使用類似,也是分作4步走:
- Step1導入串口庫,鍵入“import serial”;
- Step2初始化串口,在此設置于外部藍牙配套的參數(shù),BUAD=9600,timeout = 0.5,相應的鍵入“ser = serial.Serial('/dev/ttyAMA0', 9600, timeout = 0.5)”;
- Step3打開使能串口,“if ser.isOpen() == False:ser.open()”;
import serial import time ser = serial.Serial('/dev/ttyAMA0', 9600, timeout = 0.5) while True: if ser.isOpen() == False: ser.open() print ser.read() ser.write('A') time.sleep(1)
- Step4當讀取數(shù)據(jù)時使用“ser.read() ”,當發(fā)送數(shù)據(jù)時使用“ser.write(數(shù)據(jù))”。這里通過IDLE3編輯了一個Python的程序Serial_test.py,然后直接在LXTerminal鍵入“sudo python Serial_test.py”(注意,由于默認狀態(tài)下是利用賬戶名:pi進行操作,所以需要將文件放置在/home/pi目錄下,才能直接執(zhí)行,無需),然后手機藍牙遙控器(如圖5)與藍牙透傳模塊相連接,成功通訊后,既可以通過手機遙控器的按鍵按鈕發(fā)送相應字符在串口上看見對應字符打印至屏幕。在此給出了測試的源程序(如下),通過電腦端的藍牙虛擬出串口與樹莓派外接的藍牙透明串口模塊連接,進行數(shù)據(jù)傳遞,電腦端的串口助手發(fā)送字母“B”,同時收到樹莓派發(fā)送來的字母“A”并顯示在調試的接收窗口,樹莓派端收到由電腦端發(fā)送來的字母“B”,并打印出來,通過此現(xiàn)象既可以證明樹莓派的UART功能測試正常,如下附實驗的屏幕截圖6。
機器人控制
對于AS-4WD小車的控制而言就比較簡單了,在本制作中用到了RasPi專用的電機驅動板,板載以L293為核心的電機驅動電路,以及通過兩組每組2個IO來實現(xiàn)電機的正反轉、以及使能。通過上述的管腳布置可以清晰的看出,樹莓派外置硬件與RasPi Driver的連接關系,通過GPIO4以及GPIO17控制其中一路電機的轉向以及使能(高電平有效),利用GPIO8來對正反轉進行狀態(tài)指示,同理可見GPIO25用于另一路的正反轉控制、GPIO10為使能、GPIO7狀態(tài)指示;同時利用板上外置的UART接口與藍牙串口模塊連接,具體方法不在贅述。對于整個程序框架相對以前的單片機版的遙控小車而言是比較簡單的,主要分功能模塊初始化設置、循環(huán)判斷遙控值以及輸出對應功能運動值,詳見系統(tǒng)控制原理框圖7。導入庫文件,對GPIO和串口配置,具體參數(shù)和上述一致,不在贅述;完成上述設置后,就是整個控制小車的程序了,讀取串口緩沖區(qū)的值,隨后完成循環(huán)判斷由手機藍牙遙控器發(fā)送的字符數(shù)據(jù)“A”、“B”、“C”、“D”,對應相應的運動動作(注意:在對應相應的動作時,可能由于驅動板電機的接線原因高低電平不對應預設動作,可以靈活適當調整接線或者軟件修改電平)。