国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于樹莓派的超聲波避障小車

2018-01-04 11:06:12孫智勇戴文翔程文龍
電腦知識與技術 2018年30期
關鍵詞:樹莓派

孫智勇 戴文翔 程文龍

摘要:如今越來越多人走出課本不拘泥于文字之上,他們更多的邊做邊學,樹莓派就是其中一個很好的例子,不少人會去拿樹莓派去控制小燈,或通過樹莓派來實現(xiàn)網(wǎng)頁對小車的控制,更有甚者用樹莓派來做智能家居。該文則介紹一個相對簡單些的利用超聲波來做避障小車,以樹莓派為核心通過它L298n的控制來控制小車,利用超聲波傳感器來實時監(jiān)測小車與障礙物之間的距離,利用算法來實現(xiàn)避障

關鍵詞:超聲波傳感器;Raspberry;樹莓派

中圖分類號:TP3 文獻標識碼:A 文章編號:1009-3044(2018)30-0206-02

1 硬件組成

(1)避障小車硬件組成包括:小車底盤、4個車輪、四個直流電機、超聲波測距傳感器模塊、電源盒、移動電源(也可直接通過5v電源接口直接使用)、無線網(wǎng)卡、樹莓派。注:如果使用的板子是3個輪子的,則3個車輪中,兩個前輪由直流電機直接驅(qū)動,后輪選擇萬向輪。

(2)電源部分:包括四節(jié)1.5V(5號)電池,5000毫安移動電源。四節(jié)1.5V(5號)電池為L298n提供6V電壓,5000毫安移動電源為樹莓派提供穩(wěn)定的5V電壓。

(3)驅(qū)動部分:包括小車底盤、L298n電機驅(qū)動、直流電機(2/4個)。3輪小車需要L298n驅(qū)動前輪,配合萬向輪實現(xiàn)前進、后退以及左右轉(zhuǎn)向。

(4)主控制部分:樹莓派。樹莓派通過L298n控制直流電機轉(zhuǎn)動,全方向達到移動的目的。樹莓連接超聲波測距模塊,以達到實時測量與障礙物的距離。從而可以做到小車再碰到障礙物之前能按預設避讓方式進行避讓,最終實現(xiàn)智能避讓。

(5)傳感器部分:超聲波測距傳感器模塊連與樹莓派,正常工作時,超聲波測距傳感器模塊的工作電壓為5V左右,電壓會下降0.1V左右。傳感器通過向空中發(fā)送超聲波脈沖并測量反彈所需的時間來工作。該值可以用于計算脈沖行進的距離進而產(chǎn)生信號,是樹莓派執(zhí)行避讓語句。

注意點:找到距離的計算依賴于聲音的速度,這隨溫度而變化。腳本根據(jù)預定義的溫度計算要使用的正確值。如果需要可以更改此值,或者使用溫度傳感器動態(tài)測量該值。

2 軟件編譯

(1)定義接口控制輪子:

import RPi.GPIO as gpio

import time

GPIO.setwarnings(False)

GPIO.setmode(GPIO.BCM)

zuoqian = 7

zuohou = 11

youqian = 15

youhou = 13

注:首先沒有HDMI線的人可以直接通過putty通過樹莓派ip來遠程登錄樹莓派,賬戶名為:pi,密碼為raspberry(密碼不可見)在樹莓派上首次使用引腳時,首先要通過sudo apt-get install python-dev指令安裝Python——dev(dev: 開發(fā)包,包含相關庫和頭文件,用于開發(fā)用),然后使用sudo pip install rpi.gpio指令安裝適用于Python的GPIO模塊。

接著你可以使用vim編譯器或者也是用nano編譯器,指令為:sudo vim +文件名.py或者sudo nano +文件名。py(注:樹莓派默認的是沒有安裝vim編譯器的,所以要通過sudo apt-get install -y vim指令安裝。而nano為大部分Linux系統(tǒng)的默認編譯器,還有兩種簡易方式,一種使用樹莓派的可視化界面,第二種是使用WinSCP直接進入樹莓派內(nèi)部文件。

(2)初始化GPIO口:

def init():

gpio.setmode(gpio.BOARD)

gpio.setup(7,gpio.OUT)

gpio.setup(11,gpio.OUT)

gpio.setup(13,gpio.OUT)

gpio.setup(15,gpio.OUT)

注:gpio.setmode(gpio.BOARD)意思為gpio調(diào)用BOARD編號方式。

因為樹莓派需要通過L298n來控制直流電機,所以連接7,11,13,15這幾個GPIO端口且要為輸出端。而與紅外避障模塊相連GPIO端口,因為需要其收集的路況信息,所以設置為輸入端

(3)定義基礎方向:

def qianjin(timerun):

init()

gpio.output(7,True)

gpio.output(11,F(xiàn)alse)

gpio.output(15,True)

gpio.output(13,F(xiàn)alse)

time.sleep(timerun)

gpio.cleanup()

注:定義基礎方向時要注意L298n的安裝朝向,gpio7和gpio11應相對應接右邊,而gpio15及gpio13口應相對應左側(cè),注意同側(cè)間可能會有與直流電機出現(xiàn)正負極順序錯誤的可能,極有可能形成左右輪轉(zhuǎn)向相反,小車方向控制不了的情況。

第一個(qianjin)代碼使得左右輪都問前進;同理后退(houtui)代碼的false與ture指令與第一個相反則形成后退。

def zuozhuan(timerun):

init()

gpio.output(7,F(xiàn)alse)

gpio.output(11,F(xiàn)alse)

gpio.output(15,True)

gpio.output(13,F(xiàn)alse)

time.sleep(timerun)

gpio.cleanup()

此條指令(左轉(zhuǎn))則通過gpio.output(7,F(xiàn)als),gpio.output(11,F(xiàn)alse) 兩個代碼使得左邊輪子停止而右邊的兩個gpio接口依舊正常使得右邊向前則形成的左轉(zhuǎn),右轉(zhuǎn)也是同樣的道理在這里就不一一贅述了。

def tingzhi(timerun):

init()

gpio.output(7,F(xiàn)alse)

gpio.output(11,F(xiàn)alse)

gpio.output(15,F(xiàn)alse)

gpio.output(13,F(xiàn)alse)

time.sleep(timerun)

gpio.cleanup()

最后一個是(停止)指令四個gpio口的指令都為False,使得四輪子全部停止。即形成了指令。

最后我們要注意的是Python對空格極為敏感,有可能我們沒有觀察出來的地方?jīng)]對齊,或某處忘縮進就會造成程序錯誤。所以最好統(tǒng)一使用Tap鍵縮進,或者統(tǒng)一使用空格鍵。

(4)超聲波測距傳感器的連接與編輯:

import RPi.GPIO as gpio

import time

def distance():

gpio.setmode(gpio.BOARD) gpio.setup(12,gpio.OUT) gpio.setup(16,gpio.IN) gpio.output(12,True)

time.sleep(0.000015) gpio.output(12,F(xiàn)alse)

while not gpio.input(16):

pass

t1 = time.time()

while gpio.input(16):

pass

t2 = time.time()

return (t2-t1)*34000/2

gpio.cleanup()

return distance

print(distance())

注:通過gpio.output(12,True)指令發(fā)出觸發(fā)信號保持10us以上,從發(fā)現(xiàn)高電平時開始計時記為t1,當高電平結(jié)束時停止計時記為t2,由此可計算t1,t2的時間差從而通過公式:(t1-t2)*3400/2來計算出距離。

通過先定義小車前后左右的動作和測算距離后,我們就可以令小車進行距離判斷進行相應的動作了。

dis = int(checkdistance())

print(dis)

If dis<=30

print”distance less than 0.30m and back

Int()

houtui(1)

這只是定義了一個選擇更多的可以通過對距離的判斷來做。

3 結(jié)語

本文中的超聲波小車不過是樹莓派眾多實驗中的九牛一毛,但實驗中的步驟多相似之處,像編程語言的注意事項和工具等這些都是基礎也是需要加強的地方,所以我們要加強對Python和C++的學習,從中發(fā)現(xiàn)樂趣。

參考文獻:

[1] 胖若兩人.[樹莓派]樹莓派小車(三)Python控制小車(簡書網(wǎng))

[2] 趙貴生.一起來玩樹莓派.www.sentdex.com(一工程師教程)

【通聯(lián)編輯:代影】

猜你喜歡
樹莓派
基于Raspberry Pi的智能教室系統(tǒng)
基于樹莓派的車載無線視頻傳輸系統(tǒng)
基于微信端的智能家居監(jiān)控系統(tǒng)的設計與實現(xiàn)
智能安全防盜探測小車
科教導刊(2016年27期)2016-11-15 22:32:51
一種基于樹莓派的門禁系統(tǒng)快速構(gòu)建方法
基于樹莓派+云服務器的網(wǎng)絡監(jiān)控及家居控制系統(tǒng)的研究與實際應用
基于樹莓派的課堂實驗設計
煙草物流中心工業(yè)無線網(wǎng)絡安全監(jiān)測系統(tǒng)設計
手勢繪圖鎖的應用研究
基于樹莓派的高清視頻播放器的設計與實現(xiàn)
科技視界(2015年29期)2015-10-19 10:55:56
广水市| 崇义县| 东方市| 湖南省| 吉安市| 台江县| 盐山县| 墨竹工卡县| 桂平市| 鸡泽县| 钦州市| 思南县| 乳源| 邯郸市| 石景山区| 婺源县| 太康县| 临海市| 苏州市| 宣化县| 华池县| 清丰县| 山西省| 子洲县| 防城港市| 祁门县| 息烽县| 辽宁省| 庆城县| 德阳市| 松阳县| 白朗县| 嘉义市| 盖州市| 潢川县| 钟山县| 定日县| 迁安市| 安多县| 犍为县| 宜都市|