“SKU:RB-02S001A RB URF02超聲波傳感器”的版本間的差異
(→?單線模式例子程序) |
(→?相關(guān)資料下載) |
||
(未顯示2個(gè)用戶的14個(gè)中間版本) | |||
第24行: | 第24行: | ||
* -:地(GND) | * -:地(GND) | ||
[[文件:02S001A03.png|500px|有框|居中]] | [[文件:02S001A03.png|500px|有框|居中]] | ||
? | + | ==工作原理== | |
? | + | ||
超聲波是指頻率高于20KHz的機(jī)械波,超聲波測(cè)距的原理是通過測(cè)量聲波在發(fā)射后遇到障礙物反射回來的時(shí)間差計(jì)算出發(fā)射點(diǎn)到障礙物的實(shí)距離。<br/> | 超聲波是指頻率高于20KHz的機(jī)械波,超聲波測(cè)距的原理是通過測(cè)量聲波在發(fā)射后遇到障礙物反射回來的時(shí)間差計(jì)算出發(fā)射點(diǎn)到障礙物的實(shí)距離。<br/> | ||
測(cè)距公式為:L = V * (T2-T1)/2<br/> | 測(cè)距公式為:L = V * (T2-T1)/2<br/> | ||
第34行: | 第33行: | ||
* t2 為收到回波的時(shí)間 | * t2 為收到回波的時(shí)間 | ||
速度乘以時(shí)間差等于來回的距離,除以2可以得到實(shí)際的距離。 | 速度乘以時(shí)間差等于來回的距離,除以2可以得到實(shí)際的距離。 | ||
? | + | ==編程原理== | |
使用RB URF02超聲波傳感器雙線時(shí),首先拉低觸發(fā)控制信號(hào)輸入(input)端口,然后至少給10us的高電平信號(hào)來觸發(fā)模塊,在觸發(fā)后,模塊會(huì)自動(dòng)發(fā)射8個(gè)40KHz的方波,并自動(dòng)檢測(cè)是否有信號(hào)返回;如果有信號(hào)返回,通過響應(yīng)信號(hào)輸出(output)一個(gè)高電平,高電平持續(xù)的時(shí)間便是超聲波從發(fā)射到接收的時(shí)間,該模塊工作時(shí)序圖如下,所以測(cè)試距離的計(jì)算公式為:測(cè)試距離 = 高電平持續(xù)時(shí)間 * 340(m/s)*0.5<br/> | 使用RB URF02超聲波傳感器雙線時(shí),首先拉低觸發(fā)控制信號(hào)輸入(input)端口,然后至少給10us的高電平信號(hào)來觸發(fā)模塊,在觸發(fā)后,模塊會(huì)自動(dòng)發(fā)射8個(gè)40KHz的方波,并自動(dòng)檢測(cè)是否有信號(hào)返回;如果有信號(hào)返回,通過響應(yīng)信號(hào)輸出(output)一個(gè)高電平,高電平持續(xù)的時(shí)間便是超聲波從發(fā)射到接收的時(shí)間,該模塊工作時(shí)序圖如下,所以測(cè)試距離的計(jì)算公式為:測(cè)試距離 = 高電平持續(xù)時(shí)間 * 340(m/s)*0.5<br/> | ||
使用RB URF02超聲波傳感器單線時(shí),原理同雙線模式,只是通過一個(gè)觸發(fā)控制信號(hào)輸入(input)端口進(jìn)行超聲波控制器的信號(hào)收發(fā)。<br/> | 使用RB URF02超聲波傳感器單線時(shí),原理同雙線模式,只是通過一個(gè)觸發(fā)控制信號(hào)輸入(input)端口進(jìn)行超聲波控制器的信號(hào)收發(fā)。<br/> | ||
[[文件:p-2.jpg|500px|有框|居中]] | [[文件:p-2.jpg|500px|有框|居中]] | ||
? | === | + | |
? | * | + | ==使用方法== |
? | 注:在使用雙線模式時(shí)模式選擇開關(guān)(Mode)撥到數(shù)字2側(cè)。 | + | ===example1_Arduino=== |
+ | * 雙線模式接線圖 | ||
+ | :INPUT、OUTPUT 端口如圖所示接到控制器的I/O口,數(shù)字口4 接超聲波的OUTPUT 、數(shù)字口5 接超聲波INPUT . | ||
+ | :5V 和 GND 分別接到電源的+5V和GND。 | ||
+ | '''注:在使用雙線模式時(shí)模式選擇開關(guān)(Mode)撥到數(shù)字2側(cè)。''' <br/> | ||
[[文件:02S001A04.png|700px|有框|居中]] | [[文件:02S001A04.png|700px|有框|居中]] | ||
? | + | ||
? | + | * 雙線模式例子程序 | |
<pre style='color:blue'> | <pre style='color:blue'> | ||
int inputPin = 4; // 接超聲波的 output 引腳到數(shù)字D4腳 | int inputPin = 4; // 接超聲波的 output 引腳到數(shù)字D4腳 | ||
第79行: | 第82行: | ||
</pre> | </pre> | ||
? | + | * 雙線模式在線云編程程序 | |
? | + | 奧松在線云編程系統(tǒng)地址:http://www.superblockly.com/ | |
[[文件:01S001a.png|800px|縮略圖|居中]] | [[文件:01S001a.png|800px|縮略圖|居中]] | ||
? | === | + | ===example2_Arduino=== |
+ | * 單線模式接線圖 | ||
+ | 接線說明:控制器的I/O口數(shù)字口2 接超聲波的INPUT,5V 和GND分別接到電源的+5V和GND。<br/> | ||
+ | |||
[[文件:02S001A05.png|700px|有框|居中]] | [[文件:02S001A05.png|700px|有框|居中]] | ||
? | + | ||
? | 注:在使用單線模式時(shí)模式選擇開關(guān)(Mode)撥到數(shù)字1側(cè)。 | + | '''注:在使用單線模式時(shí)模式選擇開關(guān)(Mode)撥到數(shù)字1側(cè)。'''<br/> |
? | + | ||
? | + | * 單線模式例子程序 | |
+ | |||
<pre style='color:blue'> | <pre style='color:blue'> | ||
? | + | float duration; //變量duration 用來存儲(chǔ)脈沖時(shí)間 | |
? | + | float distance; //變量distance 用來存儲(chǔ)距離 | |
? | int srfPin = 2; | + | int srfPin = 2; //定義srfPin 引腳為 2 |
+ | float val = 50.0; | ||
+ | int led = 13; | ||
void setup() | void setup() | ||
{ | { | ||
Serial.begin(9600); | Serial.begin(9600); | ||
+ | pinMode(led,OUTPUT); | ||
} | } | ||
void loop() | void loop() | ||
第109行: | 第119行: | ||
distance = duration/58; // 將脈沖時(shí)間轉(zhuǎn)化為距離(單位:厘米) | distance = duration/58; // 將脈沖時(shí)間轉(zhuǎn)化為距離(單位:厘米) | ||
Serial.println(distance); // 輸出距離值 | Serial.println(distance); // 輸出距離值 | ||
? | delay(50); | + | delay(50); |
? | } </pre> | + | if(distance>val) |
+ | digitalWrite(13,HIGH); | ||
+ | else | ||
+ | digitalWrite(13,LOW); | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | * 單線模式在線云編程程序 | ||
? | |||
? | |||
[[文件:01S001b.png|750px|縮略圖|居中]] | [[文件:01S001b.png|750px|縮略圖|居中]] | ||
? | + | * 程序效果 | |
? | + | 打開串口助手可以觀察到輸出的距離值,如下圖所示,如果距離小于 50厘米數(shù)字口13的LED 小燈熄滅,距離大于50厘米數(shù)字口13的LED 小燈亮起同時(shí)串口打印處距離數(shù)據(jù)。<br/> | |
[[文件:02S001A02.png|500px|有框|居中]] | [[文件:02S001A02.png|500px|有框|居中]] | ||
? | === | + | |
? | + | ===example3_Arduino=== | |
? | + | * 兩個(gè)超聲波聯(lián)調(diào) | |
? | + | * 硬件連接 | |
+ | 兩個(gè)超聲波的 INPUT 引腳接在 D5,OUTPUT 分別接 D3、D4,如下圖: | ||
[[文件:csb2.png|700px|縮略圖|居中]] | [[文件:csb2.png|700px|縮略圖|居中]] | ||
? | + | ||
? | + | * 例子程序 | |
? | <pre style='color:blue'>const int pingPin = 11; | + | <pre style='color:blue'> |
+ | const int pingPin = 11; | ||
int inputPin1=4; // 接超聲波的 output 引腳到數(shù)字D4腳 | int inputPin1=4; // 接超聲波的 output 引腳到數(shù)字D4腳 | ||
int outputPin=5; // 接超聲波的 input 引腳到數(shù)字D5腳 | int outputPin=5; // 接超聲波的 input 引腳到數(shù)字D5腳 | ||
第170行: | 第187行: | ||
} | } | ||
</pre> | </pre> | ||
? | + | ||
+ | * 程序效果 | ||
打開串口監(jiān)視器可以觀察到輸出的距離值為當(dāng)前超聲波距前方障礙物的實(shí)際距離。 | 打開串口監(jiān)視器可以觀察到輸出的距離值為當(dāng)前超聲波距前方障礙物的實(shí)際距離。 | ||
[[文件:dcsb.png|700px|縮略圖|居中]] | [[文件:dcsb.png|700px|縮略圖|居中]] | ||
+ | |||
+ | ===example_RaspberryPi=== | ||
+ | * 硬件環(huán)境:Raspberry Pi 3 控制器 | ||
+ | * 系統(tǒng)環(huán)境:Raspberry Pi RASPBIAN JESSIE WITH PIXEL 2017-04-10 | ||
+ | * 軟件環(huán)境:Python 3 | ||
+ | * 主要硬件 | ||
+ | (1)Raspberry Pi 3 控制器<br/> | ||
+ | (2)5V 2.5A 適配器<br/> | ||
+ | (3)杜邦線 * 若干<br/> | ||
+ | (4)超聲波傳感器<br/> | ||
+ | (5)10K 歐姆電阻 * 2個(gè)<br/> | ||
+ | |||
+ | * 系統(tǒng)配置 | ||
+ | (1)Raspberry Pi 連接到 WiFi 并可正常連接外網(wǎng)<br/> | ||
+ | 教程:Raspberry Pi 3 Wifi 連接配置<br/> | ||
+ | http://www.makerspace.cn/forum.php?mod=viewthread&tid=6412&fromuid=10780<br/> | ||
+ | |||
+ | (2)使用遠(yuǎn)程桌面或 SSH 登錄到 Raspberry Pi 控制器<br/> | ||
+ | 教程:樹莓派教程第5課——遠(yuǎn)程圖形化顯示<br/> | ||
+ | http://www.makerspace.cn/forum.php?mod=viewthread&tid=5665&fromuid=10780<br/> | ||
+ | |||
+ | (3)樹莓派 Python 和 GPIO 庫安裝<br/> | ||
+ | (3.1)安裝python-dev,輸入以下指令。<br/> | ||
+ | <pre style='color:blue'>sudo apt-get install python-dev</pre> | ||
+ | |||
+ | (3.2)安裝 RPi.GPIO,依次輸入以下命令。由于樹莓派的GPIO庫不斷更新,可以在官網(wǎng)下載最新的庫文件,也可以直接下載 wiki 教程中提供的版本<br/> | ||
+ | 下載鏈接:http://pan.baidu.com/s/1slRlNLr 密碼:m4w5<br/> | ||
+ | |||
+ | (3.2.1)解壓庫文件 | ||
+ | <pre style='color:blue'>$ tar xvzf RPi.GPIO-0.6.3.tar.gz</pre> | ||
+ | |||
+ | (3.2.2)進(jìn)入解壓之后的目錄 | ||
+ | <pre style='color:blue'>$ cd RPi.GPIO-0.6.3</pre> | ||
+ | |||
+ | (3.2.3)啟動(dòng)安裝 | ||
+ | <pre style='color:blue'>$ sudo python setup.py install</pre> | ||
+ | |||
+ | * 硬件連接 | ||
+ | [[文件:02S001900.png|681px|縮略圖|居中]] | ||
+ | |||
+ | * 例子程序 | ||
+ | <pre style='color:blue'> | ||
+ | import RPi.GPIO as GPIO | ||
+ | import time | ||
+ | |||
+ | def checkdist(): | ||
+ | GPIO.output(2,GPIO.HIGH) | ||
+ | time.sleep(0.000015) | ||
+ | GPIO.output(2,GPIO.LOW) | ||
+ | while not GPIO.input(3): | ||
+ | pass | ||
+ | t1 = time.time() | ||
+ | while GPIO.input(3): | ||
+ | pass | ||
+ | t2 = time.time() | ||
+ | return (t2-t1)*340/2 | ||
+ | GPIO.setmode(GPIO.BCM) | ||
+ | GPIO.setup(2,GPIO.OUT,initial=GPIO.LOW) | ||
+ | GPIO.setup(3,GPIO.IN) | ||
+ | |||
+ | time.sleep(2) | ||
+ | try: | ||
+ | while True: | ||
+ | print 'Distance: %0.2f m' %checkdist() | ||
+ | time.sleep(0.5) | ||
+ | except KeyboardInterrupt: | ||
+ | GPIO.cleanup()</pre> | ||
+ | |||
+ | * 程序效果 | ||
+ | 在啟動(dòng)的樹莓派控制器上或者直接通過遠(yuǎn)程登錄到樹莓派控制器運(yùn)行代碼,使用指令“sudo python xx.py”(這里XX是你程序的名稱,隨意命名即可,不要有空格和中文字符)。<br/> | ||
+ | [[文件:02S001901.png|656px|縮略圖|居中]] | ||
+ | |||
==視頻演示== | ==視頻演示== | ||
[[File:chao sheng bo 01.png|400px|左|link=http://v.youku.com/v_show/id_XMTcwNTA2NjY0.html?from=y1.7-2]] | [[File:chao sheng bo 01.png|400px|左|link=http://v.youku.com/v_show/id_XMTcwNTA2NjY0.html?from=y1.7-2]] | ||
[[File:chao sheng bo 02.png|400px|居中|link=http://v.youku.com/v_show/id_XMTM2MTQyMjQ0.html?from=y1.7-2]] | [[File:chao sheng bo 02.png|400px|居中|link=http://v.youku.com/v_show/id_XMTM2MTQyMjQ0.html?from=y1.7-2]] | ||
<br/> | <br/> | ||
? | == | + | ==相關(guān)資料下載== |
[[文件:erweima.png|230px|無框|右]] | [[文件:erweima.png|230px|無框|右]] | ||
+ | ===產(chǎn)品資料=== | ||
+ | 下載鏈接: https://pan.baidu.com/s/1yPBP4BYvIWt0nSSoI56bQw 提取碼:o6d2 | ||
===產(chǎn)品購買地址=== | ===產(chǎn)品購買地址=== | ||
[http://lifestyle201.com/goods.php?id=132 RB URF02超聲波傳感器]<br/> | [http://lifestyle201.com/goods.php?id=132 RB URF02超聲波傳感器]<br/> | ||
+ | |||
===周邊產(chǎn)品推薦=== | ===周邊產(chǎn)品推薦=== | ||
[http://lifestyle201.com/goods-301.html 超聲波傳感器支架]<br/> | [http://lifestyle201.com/goods-301.html 超聲波傳感器支架]<br/> | ||
[http://lifestyle201.com/goods-136.html PING))) 超聲波傳感器]<br/> | [http://lifestyle201.com/goods-136.html PING))) 超聲波傳感器]<br/> | ||
===相關(guān)問題解答=== | ===相關(guān)問題解答=== | ||
? | [http://www.makerspace.cn/forum.php?mod=viewthread&tid=3094 | + | [http://www.makerspace.cn/forum.php?mod=viewthread&tid=3094 超聲波測(cè)距傳感器為什么一直輸出零]<br/> |
===相關(guān)學(xué)習(xí)資料=== | ===相關(guān)學(xué)習(xí)資料=== | ||
[http://www.makerspace.cn/forum.php?mod=viewthread&tid=2820 視頻:Arduino-2WD輕量型移動(dòng)機(jī)器人超聲波旋轉(zhuǎn)偵測(cè)演示]<br/> | [http://www.makerspace.cn/forum.php?mod=viewthread&tid=2820 視頻:Arduino-2WD輕量型移動(dòng)機(jī)器人超聲波旋轉(zhuǎn)偵測(cè)演示]<br/> |
2021年12月15日 (三) 15:39的最后版本
目錄 |
產(chǎn)品概述
RB URF02超聲波傳感器是RB URF v1.1超聲波傳感器的升級(jí)產(chǎn)品,在保留原有功能的基礎(chǔ)上,使用防插反接頭并新增加模式選擇功能,有兩種模式可選擇:?jiǎn)尉€模式只需要一根信號(hào)線,大大減少IO口資源;雙線模式與原有功能一樣,需要一根輸入和輸出信號(hào)線。偵測(cè)距離和精度也有較大提高,可達(dá)1cm到500cm,其在有效探測(cè)范圍內(nèi)自動(dòng)標(biāo)定,無需任何人工調(diào)整就可以獲得障礙物準(zhǔn)確的距離。令你的機(jī)器人像蝙蝠一樣通過聲納來感知周圍的環(huán)境,你只需要在單片機(jī)、Arduino微控制器中編寫一小段程序,就可以根據(jù)障礙物的距離精確的控制機(jī)器人的電機(jī)運(yùn)行,從而使你的機(jī)器人輕松地避開障礙物,因此其是機(jī)器人領(lǐng)域最常用的測(cè)距避障模塊。
規(guī)格參數(shù)
- 工作電壓 :+5v
- 工作電流 :<20mA
- 工作頻率 :40KHz
- 工作溫度范圍:-10℃~+70℃
- 探測(cè)有效距離:1cm~500cm
- 探測(cè)分辨率:0.5cm
- 探測(cè)誤差:±0.5%
- 靈敏度:大于1.8m外可以探測(cè)到直徑2cm物體
- 接口類型:TTL(單線模式和雙線模式可切換)
- 方向性偵測(cè)范圍:定向式(水平/垂直)65度圓錐
- 尺寸大?。?46.7mm × 25.7mm × 19mm
- 固定孔尺寸:8.6mm × 41.2mm @ M2.9
- 重量大?。?g
接口定義
超聲波傳感器的引腳定義:
- OUTPUT:響應(yīng)信號(hào)輸入
- INPUT:觸發(fā)控制信號(hào)輸入
- +:電源(VCC)
- -:地(GND)
工作原理
超聲波是指頻率高于20KHz的機(jī)械波,超聲波測(cè)距的原理是通過測(cè)量聲波在發(fā)射后遇到障礙物反射回來的時(shí)間差計(jì)算出發(fā)射點(diǎn)到障礙物的實(shí)距離。
測(cè)距公式為:L = V * (T2-T1)/2
公式說明:
- L 為測(cè)量的距離長(zhǎng)度
- V 為超聲波在空氣中的傳播速度(在20℃時(shí)為344m/s)
- t1 為測(cè)量距離的起始時(shí)間
- t2 為收到回波的時(shí)間
速度乘以時(shí)間差等于來回的距離,除以2可以得到實(shí)際的距離。
編程原理
使用RB URF02超聲波傳感器雙線時(shí),首先拉低觸發(fā)控制信號(hào)輸入(input)端口,然后至少給10us的高電平信號(hào)來觸發(fā)模塊,在觸發(fā)后,模塊會(huì)自動(dòng)發(fā)射8個(gè)40KHz的方波,并自動(dòng)檢測(cè)是否有信號(hào)返回;如果有信號(hào)返回,通過響應(yīng)信號(hào)輸出(output)一個(gè)高電平,高電平持續(xù)的時(shí)間便是超聲波從發(fā)射到接收的時(shí)間,該模塊工作時(shí)序圖如下,所以測(cè)試距離的計(jì)算公式為:測(cè)試距離 = 高電平持續(xù)時(shí)間 * 340(m/s)*0.5
使用RB URF02超聲波傳感器單線時(shí),原理同雙線模式,只是通過一個(gè)觸發(fā)控制信號(hào)輸入(input)端口進(jìn)行超聲波控制器的信號(hào)收發(fā)。
使用方法
example1_Arduino
- 雙線模式接線圖
- INPUT、OUTPUT 端口如圖所示接到控制器的I/O口,數(shù)字口4 接超聲波的OUTPUT 、數(shù)字口5 接超聲波INPUT .
- 5V 和 GND 分別接到電源的+5V和GND。
注:在使用雙線模式時(shí)模式選擇開關(guān)(Mode)撥到數(shù)字2側(cè)。
- 雙線模式例子程序
int inputPin = 4; // 接超聲波的 output 引腳到數(shù)字D4腳 int outputPin = 5; // 接超聲波的 input 引腳到數(shù)字D5腳 int ledpin = 13; // 定義 ledPin 引腳為D13腳 void setup() { //初始化串口及引腳的輸入、輸出模式 Serial.begin(9600); pinMode(ledpin,OUTPUT); pinMode(inputPin, INPUT); pinMode(outputPin, OUTPUT); } void loop() { unsigned int x1,x2; digitalWrite(outputPin, LOW); //使發(fā)出發(fā)出超聲波信號(hào)接口低電平2 μs delayMicroseconds(2); digitalWrite(outputPin, HIGH); //使發(fā)出發(fā)出超聲波信號(hào)接口高電平10μs ,這里是至少10μs delayMicroseconds(10); digitalWrite(outputPin, LOW); // 保持發(fā)出超聲波信號(hào)接口低電平 float distance1 = pulseIn(inputPin, HIGH); // 讀出接收脈沖的時(shí)間 distance1 = distance1/58; // 將脈沖時(shí)間轉(zhuǎn)化為距離(單位:厘米) x1 = distance1 * 100.0; distance1 = x1 / 100.0; //保留兩位小數(shù) Serial.print("x1 = "); Serial.println(distance1); // 輸出距離值 delay(150); if (distance1 >=50) { digitalWrite(ledpin,HIGH); //如果距離大于50厘米小燈亮起 } else digitalWrite(ledpin,LOW); //如果距離小于50厘米小燈熄滅 }
- 雙線模式在線云編程程序
奧松在線云編程系統(tǒng)地址:http://www.superblockly.com/
example2_Arduino
- 單線模式接線圖
接線說明:控制器的I/O口數(shù)字口2 接超聲波的INPUT,5V 和GND分別接到電源的+5V和GND。
注:在使用單線模式時(shí)模式選擇開關(guān)(Mode)撥到數(shù)字1側(cè)。
- 單線模式例子程序
float duration; //變量duration 用來存儲(chǔ)脈沖時(shí)間 float distance; //變量distance 用來存儲(chǔ)距離 int srfPin = 2; //定義srfPin 引腳為 2 float val = 50.0; int led = 13; void setup() { Serial.begin(9600); pinMode(led,OUTPUT); } void loop() { pinMode(srfPin, OUTPUT); digitalWrite(srfPin, LOW); delayMicroseconds(2); digitalWrite(srfPin, HIGH); delayMicroseconds(10); digitalWrite(srfPin, LOW); pinMode(srfPin, INPUT); duration = pulseIn(srfPin, HIGH); distance = duration/58; // 將脈沖時(shí)間轉(zhuǎn)化為距離(單位:厘米) Serial.println(distance); // 輸出距離值 delay(50); if(distance>val) digitalWrite(13,HIGH); else digitalWrite(13,LOW); }
- 單線模式在線云編程程序
- 程序效果
打開串口助手可以觀察到輸出的距離值,如下圖所示,如果距離小于 50厘米數(shù)字口13的LED 小燈熄滅,距離大于50厘米數(shù)字口13的LED 小燈亮起同時(shí)串口打印處距離數(shù)據(jù)。
example3_Arduino
- 兩個(gè)超聲波聯(lián)調(diào)
- 硬件連接
兩個(gè)超聲波的 INPUT 引腳接在 D5,OUTPUT 分別接 D3、D4,如下圖:
- 例子程序
const int pingPin = 11; int inputPin1=4; // 接超聲波的 output 引腳到數(shù)字D4腳 int outputPin=5; // 接超聲波的 input 引腳到數(shù)字D5腳 int inputPin2=3; int ledpin=13; // 定義 ledPin 引腳為D13腳 void setup() { //初始化串口及引腳的輸入、輸出模式 Serial.begin(9600); pinMode(ledpin,OUTPUT); pinMode(inputPin1, INPUT); pinMode(outputPin, OUTPUT); pinMode(inputPin2, INPUT); } void loop() { unsigned int x1,x2; digitalWrite(outputPin, LOW); //使發(fā)出發(fā)出超聲波信號(hào)接口低電平2 μs delayMicroseconds(2); digitalWrite(outputPin, HIGH); //使發(fā)出發(fā)出超聲波信號(hào)接口高電平10μs ,這里是至少10μs delayMicroseconds(10); digitalWrite(outputPin, LOW); // 保持發(fā)出超聲波信號(hào)接口低電平 float distance1 = pulseIn(inputPin1, HIGH); // 讀出接收脈沖的時(shí)間 distance1= distance1/58; // 將脈沖時(shí)間轉(zhuǎn)化為距離(單位:厘米) x1 = distance1 * 100.0; distance1 = x1 / 100.0; //保留兩位小數(shù) Serial.print("x1 = "); Serial.println(distance1); // 輸出距離值 delay(150); digitalWrite(outputPin, LOW); //使發(fā)出發(fā)出超聲波信號(hào)接口低電平2 μs delayMicroseconds(2); digitalWrite(outputPin, HIGH); //使發(fā)出發(fā)出超聲波信號(hào)接口高電平10μs ,這里是至少10μs delayMicroseconds(10); digitalWrite(outputPin, LOW); // 保持發(fā)出超聲波信號(hào)接口低電平 float distance2 = pulseIn(inputPin2, HIGH); // 讀出接收脈沖的時(shí)間 distance2 = distance2/58; // 將脈沖時(shí)間轉(zhuǎn)化為距離(單位:厘米) x2 = distance2 * 100.0; distance2 = x2 / 100.0; //保留兩位小數(shù) Serial.print("x2 = "); Serial.println(distance2); // 輸出距離值 delay(150); }
- 程序效果
打開串口監(jiān)視器可以觀察到輸出的距離值為當(dāng)前超聲波距前方障礙物的實(shí)際距離。
example_RaspberryPi
- 硬件環(huán)境:Raspberry Pi 3 控制器
- 系統(tǒng)環(huán)境:Raspberry Pi RASPBIAN JESSIE WITH PIXEL 2017-04-10
- 軟件環(huán)境:Python 3
- 主要硬件
(1)Raspberry Pi 3 控制器
(2)5V 2.5A 適配器
(3)杜邦線 * 若干
(4)超聲波傳感器
(5)10K 歐姆電阻 * 2個(gè)
- 系統(tǒng)配置
(1)Raspberry Pi 連接到 WiFi 并可正常連接外網(wǎng)
教程:Raspberry Pi 3 Wifi 連接配置
http://www.makerspace.cn/forum.php?mod=viewthread&tid=6412&fromuid=10780
(2)使用遠(yuǎn)程桌面或 SSH 登錄到 Raspberry Pi 控制器
教程:樹莓派教程第5課——遠(yuǎn)程圖形化顯示
http://www.makerspace.cn/forum.php?mod=viewthread&tid=5665&fromuid=10780
(3)樹莓派 Python 和 GPIO 庫安裝
(3.1)安裝python-dev,輸入以下指令。
sudo apt-get install python-dev
(3.2)安裝 RPi.GPIO,依次輸入以下命令。由于樹莓派的GPIO庫不斷更新,可以在官網(wǎng)下載最新的庫文件,也可以直接下載 wiki 教程中提供的版本
下載鏈接:http://pan.baidu.com/s/1slRlNLr 密碼:m4w5
(3.2.1)解壓庫文件
$ tar xvzf RPi.GPIO-0.6.3.tar.gz
(3.2.2)進(jìn)入解壓之后的目錄
$ cd RPi.GPIO-0.6.3
(3.2.3)啟動(dòng)安裝
$ sudo python setup.py install
- 硬件連接
- 例子程序
import RPi.GPIO as GPIO import time def checkdist(): GPIO.output(2,GPIO.HIGH) time.sleep(0.000015) GPIO.output(2,GPIO.LOW) while not GPIO.input(3): pass t1 = time.time() while GPIO.input(3): pass t2 = time.time() return (t2-t1)*340/2 GPIO.setmode(GPIO.BCM) GPIO.setup(2,GPIO.OUT,initial=GPIO.LOW) GPIO.setup(3,GPIO.IN) time.sleep(2) try: while True: print 'Distance: %0.2f m' %checkdist() time.sleep(0.5) except KeyboardInterrupt: GPIO.cleanup()
- 程序效果
在啟動(dòng)的樹莓派控制器上或者直接通過遠(yuǎn)程登錄到樹莓派控制器運(yùn)行代碼,使用指令“sudo python xx.py”(這里XX是你程序的名稱,隨意命名即可,不要有空格和中文字符)。
視頻演示
相關(guān)資料下載
產(chǎn)品資料
下載鏈接: https://pan.baidu.com/s/1yPBP4BYvIWt0nSSoI56bQw 提取碼:o6d2
產(chǎn)品購買地址
周邊產(chǎn)品推薦
相關(guān)問題解答
相關(guān)學(xué)習(xí)資料
視頻:Arduino-2WD輕量型移動(dòng)機(jī)器人超聲波旋轉(zhuǎn)偵測(cè)演示
超聲波測(cè)距LED輸出小裝置制作
Arduino學(xué)習(xí)筆記- Arduino連接超聲波傳感器測(cè)距
奧松機(jī)器人技術(shù)論壇