(SKU:RB-01C073)樹(shù)莓派電機(jī)驅(qū)動(dòng)板

來(lái)自ALSROBOT WiKi
2015年5月29日 (五) 16:5126wd討論 | 貢獻(xiàn)的版本

跳轉(zhuǎn)至: 導(dǎo)航、 搜索


Qdb12.png

目錄

產(chǎn)品概述

Raspberry Pi包括很多的處理能力,這使得它成為完美的機(jī)器人的大腦,Raspberry Pi有很多硬件外設(shè),但電機(jī)控制器不是其中之一。最新款Raspberry?Pi樹(shù)莓派直流電機(jī)驅(qū)動(dòng)板,由哈爾濱奧松機(jī)器人科技有限公司研發(fā)團(tuán)隊(duì)專(zhuān)門(mén)為廣大樹(shù)莓派愛(ài)好者量身定做,解決了樹(shù)莓派電機(jī)控制的問(wèn)題,變成一個(gè)機(jī)器人控制器的擴(kuò)展板。此款直流電機(jī)驅(qū)動(dòng)板外形精巧,插接方便,性能穩(wěn)定;與樹(shù)莓派控制器完美結(jié)合,安裝它只要簡(jiǎn)單的把樹(shù)莓派驅(qū)動(dòng)板的GPIO口Raspberry Pi插接在一起,它提供兩個(gè)電機(jī)控制接口,兩個(gè)狀態(tài)LED顯示,一個(gè)Python庫(kù)可以很容易的控制樹(shù)莓派驅(qū)動(dòng)板。Raspberry Pi和樹(shù)莓派電機(jī)驅(qū)動(dòng)板相結(jié)合,使得它構(gòu)建一個(gè)機(jī)器人更容易和更便宜,便于利用機(jī)器人來(lái)學(xué)習(xí)使用Linux操作系統(tǒng)和Python代碼,用樹(shù)莓派控制器制作出屬于你自己的酷炫機(jī)器人,快來(lái)打造你的機(jī)器人王國(guó)吧!

規(guī)格參數(shù)

1.電機(jī)控制:雙電機(jī)雙向控制
2.輸入電壓:DC 7 - 12V
3.輸出:雙開(kāi)放式集電極輸出
4.狀態(tài)指示燈:2×LED綠色
5.擴(kuò)展接口:5V串行接口、3V的I2C總線接口
6.編程:簡(jiǎn)單的使用Python庫(kù)模塊
7.連接:使用GPIO接口直接同樹(shù)莓派連接
8.外形尺寸:51×51 mm

引腳定義

使用方法

應(yīng)用例程

利用Raspberry Pi的硬件和Python語(yǔ)言來(lái)完成一個(gè)機(jī)器人制作

硬件搭建

在這次制作中,選擇一款A(yù)S-4WD鋁合金的小車(chē)平臺(tái),以小車(chē)平臺(tái)為基礎(chǔ),在上面添加了7寸高清液晶顯示器、無(wú)線鍵盤(pán)、藍(lán)牙模塊以及電機(jī)驅(qū)動(dòng)器等配件,如圖1是羅列制作機(jī)器人所用的物料。整個(gè)樹(shù)莓派的小車(chē)系統(tǒng)分兩步來(lái)搭建,首先是搭建樹(shù)莓派的計(jì)算機(jī)系統(tǒng),雖然是一個(gè)袖珍的計(jì)算機(jī),但是“麻雀雖小,五臟俱全”,除去樹(shù)莓派的主板外,還需準(zhǔn)備一套標(biāo)準(zhǔn)通用的USB鍵盤(pán)鼠標(biāo),一個(gè)顯示器(在本文描述的是一個(gè)用于車(chē)載監(jiān)控設(shè)備的7寸顯示器,通過(guò)RCA接口相連),一塊電池用于整個(gè)系統(tǒng)供電,最后也是最關(guān)鍵的需要準(zhǔn)備預(yù)裝了Debian系統(tǒng)的SD卡(對(duì)于SD卡要求讀寫(xiě)最好在4MB/S以上、容量大于2GB,當(dāng)然容量更大速度越快更好)。在完成計(jì)算機(jī)系統(tǒng)搭建后,接下來(lái)是完成機(jī)器人系統(tǒng)的搭建,在原理上,主要利用樹(shù)莓派那兩排外置的針腳的GPIO功能控制外置樹(shù)莓派專(zhuān)用的驅(qū)動(dòng)器(Raspi driver)來(lái)實(shí)現(xiàn)電機(jī)的使能、正反轉(zhuǎn)控制,以及利用UART功能與藍(lán)牙數(shù)傳模塊實(shí)現(xiàn)數(shù)據(jù)通信,這樣就能通過(guò)手機(jī)端的藍(lán)牙遙控器對(duì)小車(chē)進(jìn)行控制,如圖2是整體硬件搭建完后的靚圖,在圖3中給出了樹(shù)莓派機(jī)器人的硬件連線圖。

圖1 機(jī)器人所用物料
圖2-1 會(huì)行走的樹(shù)莓派電腦
圖2-2
圖3 樹(shù)莓派機(jī)器人的硬件連線圖

Python庫(kù)配置

在開(kāi)始編寫(xiě)小車(chē)控制程序前需要對(duì)樹(shù)莓派計(jì)算機(jī)的相關(guān)Python的庫(kù)文件進(jìn)行安裝設(shè)置,首先是GPIO,打開(kāi)LX終端(LXTerminal),更新apt-get軟件安裝包列表(注意必須要在網(wǎng)絡(luò)連接正常情況下),然后執(zhí)行安裝命令來(lái)安裝raspberry-gpio-python包,具體指令如下:

  1. pi@raspberrypi ~ $ sudo apt-get update
  2. pi@raspberrypi ~ $ sudo apt-get install python-rpi.gpio

在安裝完成Python的GPIO庫(kù)后,接下來(lái)是安裝Python的UART庫(kù),和上述之前步驟相似,更新apt-get軟件安裝包列表,后安裝Python的串口通信模塊,具體指令如下:

  1. pi@raspberrypi ~ $ sudo apt-get update
  2. pi@raspberrypi ~ $ sudo apt-get install python-serial

通過(guò)上述兩個(gè)步驟,已經(jīng)安裝好了Python與樹(shù)莓派外置硬件GPIO以及UART庫(kù)文件,在接下來(lái)的小車(chē)控制程序里就可以直接調(diào)用代碼了,在開(kāi)始編寫(xiě)控制程序前,需要對(duì)默認(rèn)串口的一些參數(shù)進(jìn)行更改,由于系統(tǒng)默認(rèn)的串口功能用于輸出內(nèi)核日志,相關(guān)的參數(shù)與外界的串口設(shè)備有所不同,所以需要對(duì)其啟動(dòng)配置文件進(jìn)行更改,在LXTerminal通過(guò)鍵入“sudo nano /boot/cmdline.txt”進(jìn)入/boot/cmdline.txt,用vi編輯器打開(kāi)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編輯器時(shí),注意要對(duì)文件進(jìn)行保存;同時(shí)需要對(duì)系統(tǒng)初始化文件進(jìn)行編輯,在LXTerminal中,鍵入“ sudo nano /etc/inittab”,然后找到以下片段內(nèi)容:

  1. #Spawn a getty on Raspberry Pi serial line
  2. T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

改為如下,注釋掉對(duì)“ttyAMA0”端口的參數(shù)即可,退出vi編輯器時(shí),同樣需要注意要對(duì)文件進(jìn)行保存

  1. #Spawn a getty on Raspberry Pi serial line
  2. #T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

重啟樹(shù)莓派,該配置就可以生效了,完成了上述步驟,就可以進(jìn)入下一章節(jié),機(jī)器人調(diào)試進(jìn)程。

Python GPIO調(diào)試

調(diào)試步驟

利用在計(jì)算機(jī)上的語(yǔ)言來(lái)讓計(jì)算機(jī)的IO出現(xiàn)跳動(dòng),打開(kāi)系統(tǒng)桌面上的IDLE3編輯器,分4步走:

  1. 導(dǎo)入GPIO庫(kù),在編輯行中鍵入“import RPi.GPIO as GPIO”,按“回車(chē)”鍵執(zhí)行即可;
  2. 設(shè)定GPIO引腳使用標(biāo)號(hào)模式,若是選擇板子上的標(biāo)號(hào),在編輯器中鍵入“GPIO.setmode(GPIO.BOARD)”若是使用芯片本身的標(biāo)號(hào)模式,只要鍵入“GPIO.setmode(GPIO.BCM)”;
  3. 設(shè)定對(duì)應(yīng)GPIO的模式,若是使用其輸出功能“GPIO.setup(pin_number,GPIO.OUT)”,使用輸入功能只要將GPIO.OUT修改為GPIO.IN即可;
  4. 在輸出模式下,使對(duì)應(yīng)管腳的電平置高或者置低,在輸入模式下只要讀取相應(yīng)管腳的電平即可。

調(diào)試示例

RasPi Driver上熄滅LED1以及點(diǎn)亮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
圖4 試驗(yàn)截圖

Python UART調(diào)試

對(duì)于樹(shù)莓派的UART功能的實(shí)現(xiàn)其實(shí)方法和步驟與上面的GPIO 的使用類(lèi)似,也是分作4步走:

  • Step1導(dǎo)入串口庫(kù),鍵入“import serial”;
  • Step2初始化串口,在此設(shè)置于外部藍(lán)牙配套的參數(shù),BUAD=9600,timeout = 0.5,相應(yīng)的鍵入“ser = serial.Serial('/dev/ttyAMA0', 9600, timeout = 0.5)”;
  • Step3打開(kāi)使能串口,“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當(dāng)讀取數(shù)據(jù)時(shí)使用“ser.read() ”,當(dāng)發(fā)送數(shù)據(jù)時(shí)使用“ser.write(數(shù)據(jù))”。這里通過(guò)IDLE3編輯了一個(gè)Python的程序Serial_test.py,然后直接在LXTerminal鍵入“sudo python Serial_test.py”(注意,由于默認(rèn)狀態(tài)下是利用賬戶名:pi進(jìn)行操作,所以需要將文件放置在/home/pi目錄下,才能直接執(zhí)行,無(wú)需),然后手機(jī)藍(lán)牙遙控器(如圖5)與藍(lán)牙透?jìng)髂K相連接,成功通訊后,既可以通過(guò)手機(jī)遙控器的按鍵按鈕發(fā)送相應(yīng)字符在串口上看見(jiàn)對(duì)應(yīng)字符打印至屏幕。在此給出了測(cè)試的源程序(如下),通過(guò)電腦端的藍(lán)牙虛擬出串口與樹(shù)莓派外接的藍(lán)牙透明串口模塊連接,進(jìn)行數(shù)據(jù)傳遞,電腦端的串口助手發(fā)送字母“B”,同時(shí)收到樹(shù)莓派發(fā)送來(lái)的字母“A”并顯示在調(diào)試的接收窗口,樹(shù)莓派端收到由電腦端發(fā)送來(lái)的字母“B”,并打印出來(lái),通過(guò)此現(xiàn)象既可以證明樹(shù)莓派的UART功能測(cè)試正常,如下附實(shí)驗(yàn)的屏幕截圖6。
圖5 手機(jī)藍(lán)牙遙控器
圖6 測(cè)試照片

機(jī)器人控制

對(duì)于AS-4WD小車(chē)的控制而言就比較簡(jiǎn)單了,在本制作中用到了RasPi專(zhuān)用的電機(jī)驅(qū)動(dòng)板,板載以L293為核心的電機(jī)驅(qū)動(dòng)電路,以及通過(guò)兩組每組2個(gè)IO來(lái)實(shí)現(xiàn)電機(jī)的正反轉(zhuǎn)、以及使能。通過(guò)上述的管腳布置可以清晰的看出,樹(shù)莓派外置硬件與RasPi Driver的連接關(guān)系,通過(guò)GPIO4以及GPIO17控制其中一路電機(jī)的轉(zhuǎn)向以及使能(高電平有效),利用GPIO8來(lái)對(duì)正反轉(zhuǎn)進(jìn)行狀態(tài)指示,同理可見(jiàn)GPIO25用于另一路的正反轉(zhuǎn)控制、GPIO10為使能、GPIO7狀態(tài)指示;同時(shí)利用板上外置的UART接口與藍(lán)牙串口模塊連接,具體方法不在贅述。對(duì)于整個(gè)程序框架相對(duì)以前的單片機(jī)版的遙控小車(chē)而言是比較簡(jiǎn)單的,主要分功能模塊初始化設(shè)置、循環(huán)判斷遙控值以及輸出對(duì)應(yīng)功能運(yùn)動(dòng)值,詳見(jiàn)系統(tǒng)控制原理框圖7。導(dǎo)入庫(kù)文件,對(duì)GPIO和串口配置,具體參數(shù)和上述一致,不在贅述;完成上述設(shè)置后,就是整個(gè)控制小車(chē)的程序了,讀取串口緩沖區(qū)的值,隨后完成循環(huán)判斷由手機(jī)藍(lán)牙遙控器發(fā)送的字符數(shù)據(jù)“A”、“B”、“C”、“D”,對(duì)應(yīng)相應(yīng)的運(yùn)動(dòng)動(dòng)作(注意:在對(duì)應(yīng)相應(yīng)的動(dòng)作時(shí),可能由于驅(qū)動(dòng)板電機(jī)的接線原因高低電平不對(duì)應(yīng)預(yù)設(shè)動(dòng)作,可以靈活適當(dāng)調(diào)整接線或者軟件修改電平)。

圖7 系統(tǒng)控制原理框圖

產(chǎn)品相關(guān)推薦

購(gòu)買(mǎi)地址:樹(shù)莓派驅(qū)動(dòng)板