SKU:RB-02S001A RB URF02超聲波傳感器

來自ALSROBOT WiKi
2018年9月14日 (五) 13:57Arduino77討論 | 貢獻(xiàn)的版本

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

目錄

產(chǎn)品概述

RB URF02超聲波傳感器是RB URF v1.1超聲波傳感器的升級產(chǎn)品,在保留原有功能的基礎(chǔ)上,使用防插反接頭并新增加模式選擇功能,有兩種模式可選擇:單線模式只需要一根信號線,大大減少IO口資源;雙線模式與原有功能一樣,需要一根輸入和輸出信號線。偵測距離和精度也有較大提高,可達(dá)1cm到500cm,其在有效探測范圍內(nèi)自動標(biāo)定,無需任何人工調(diào)整就可以獲得障礙物準(zhǔn)確的距離。令你的機器人像蝙蝠一樣通過聲納來感知周圍的環(huán)境,你只需要在單片機、Arduino微控制器中編寫一小段程序,就可以根據(jù)障礙物的距離精確的控制機器人的電機運行,從而使你的機器人輕松地避開障礙物,因此其是機器人領(lǐng)域最常用的測距避障模塊。

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

  1. 工作電壓 :+5v
  2. 工作電流 :<20mA
  3. 工作頻率 :40KHz
  4. 工作溫度范圍:-10℃~+70℃
  5. 探測有效距離:1cm~500cm
  6. 探測分辨率:0.5cm
  7. 探測誤差:±0.5%
  8. 靈敏度:大于1.8m外可以探測到直徑2cm物體
  9. 接口類型:TTL(單線模式和雙線模式可切換)
  10. 方向性偵測范圍:定向式(水平/垂直)65度圓錐
  11. 尺寸大小: 46.7mm × 25.7mm × 19mm
  12. 固定孔尺寸:8.6mm × 41.2mm @ M2.9
  13. 重量大?。?g

接口定義

超聲波傳感器的引腳定義:

  • OUTPUT:響應(yīng)信號輸入
  • INPUT:觸發(fā)控制信號輸入
  • +:電源(VCC)
  • -:地(GND)
02S001A03.png

工作原理

超聲波是指頻率高于20KHz的機械波,超聲波測距的原理是通過測量聲波在發(fā)射后遇到障礙物反射回來的時間差計算出發(fā)射點到障礙物的實距離。
測距公式為:L = V * (T2-T1)/2
公式說明:

  • L 為測量的距離長度
  • V 為超聲波在空氣中的傳播速度(在20℃時為344m/s)
  • t1 為測量距離的起始時間
  • t2 為收到回波的時間

速度乘以時間差等于來回的距離,除以2可以得到實際的距離。

編程原理

使用RB URF02超聲波傳感器雙線時,首先拉低觸發(fā)控制信號輸入(input)端口,然后至少給10us的高電平信號來觸發(fā)模塊,在觸發(fā)后,模塊會自動發(fā)射8個40KHz的方波,并自動檢測是否有信號返回;如果有信號返回,通過響應(yīng)信號輸出(output)一個高電平,高電平持續(xù)的時間便是超聲波從發(fā)射到接收的時間,該模塊工作時序圖如下,所以測試距離的計算公式為:測試距離 = 高電平持續(xù)時間 * 340(m/s)*0.5
使用RB URF02超聲波傳感器單線時,原理同雙線模式,只是通過一個觸發(fā)控制信號輸入(input)端口進(jìn)行超聲波控制器的信號收發(fā)。

P-2.jpg

使用方法

example1_Arduino

  • 雙線模式接線圖
INPUT、OUTPUT 端口如圖所示接到控制器的I/O口,數(shù)字口4 接超聲波的OUTPUT 、數(shù)字口5 接超聲波INPUT .
5V 和 GND 分別接到電源的+5V和GND。

注:在使用雙線模式時模式選擇開關(guān)(Mode)撥到數(shù)字2側(cè)。

02S001A04.png
  • 雙線模式例子程序
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ā)出超聲波信號接口低電平2 μs 
  delayMicroseconds(2); 
  digitalWrite(outputPin, HIGH); //使發(fā)出發(fā)出超聲波信號接口高電平10μs ,這里是至少10μs 
  delayMicroseconds(10); 
  digitalWrite(outputPin, LOW);  // 保持發(fā)出超聲波信號接口低電平 
  float distance1 = pulseIn(inputPin, HIGH);  //  讀出接收脈沖的時間 
  distance1 = distance1/58;       // 將脈沖時間轉(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/

01S001a.png

example2_Arduino

  • 單線模式接線圖

接線說明:控制器的I/O口數(shù)字口2 接超聲波的INPUT,5V 和GND分別接到電源的+5V和GND。

02S001A05.png

注:在使用單線模式時模式選擇開關(guān)(Mode)撥到數(shù)字1側(cè)。

  • 單線模式例子程序
float duration;                 //變量duration 用來存儲脈沖時間 
float distance;                 //變量distance 用來存儲距離 
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;        // 將脈沖時間轉(zhuǎn)化為距離(單位:厘米) 
  Serial.println(distance);       // 輸出距離值 
  delay(50);  
  if(distance>val)
    digitalWrite(13,HIGH);
   else
    digitalWrite(13,LOW);                           
} 
  • 單線模式在線云編程程序
01S001b.png
  • 程序效果

打開串口助手可以觀察到輸出的距離值,如下圖所示,如果距離小于 50厘米數(shù)字口13的LED 小燈熄滅,距離大于50厘米數(shù)字口13的LED 小燈亮起同時串口打印處距離數(shù)據(jù)。

02S001A02.png

example3_Arduino

  • 兩個超聲波聯(lián)調(diào)
  • 硬件連接

兩個超聲波的 INPUT 引腳接在 D5,OUTPUT 分別接 D3、D4,如下圖:

Csb2.png
  • 例子程序
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ā)出超聲波信號接口低電平2 μs 
  delayMicroseconds(2); 
  digitalWrite(outputPin, HIGH); //使發(fā)出發(fā)出超聲波信號接口高電平10μs ,這里是至少10μs 
  delayMicroseconds(10); 
  digitalWrite(outputPin, LOW);  // 保持發(fā)出超聲波信號接口低電平 
  float distance1 = pulseIn(inputPin1, HIGH);  //  讀出接收脈沖的時間 
  distance1= distance1/58;       // 將脈沖時間轉(zhuǎn)化為距離(單位:厘米) 
  x1 = distance1 * 100.0;
  distance1 = x1 / 100.0; //保留兩位小數(shù) 
  Serial.print("x1 = "); 
  Serial.println(distance1);   // 輸出距離值     
  delay(150);
  
  digitalWrite(outputPin, LOW); //使發(fā)出發(fā)出超聲波信號接口低電平2 μs 
  delayMicroseconds(2); 
  digitalWrite(outputPin, HIGH); //使發(fā)出發(fā)出超聲波信號接口高電平10μs ,這里是至少10μs 
  delayMicroseconds(10); 
  digitalWrite(outputPin, LOW);  // 保持發(fā)出超聲波信號接口低電平 
  float distance2 = pulseIn(inputPin2, HIGH);  //  讀出接收脈沖的時間 
  distance2 = distance2/58;       // 將脈沖時間轉(zhuǎn)化為距離(單位:厘米) 
  x2 = distance2 * 100.0;
  distance2 = x2 / 100.0; //保留兩位小數(shù) 
  Serial.print("x2 = "); 
  Serial.println(distance2);   // 輸出距離值                   
  delay(150);    
  
}
  • 程序效果

打開串口監(jiān)視器可以觀察到輸出的距離值為當(dāng)前超聲波距前方障礙物的實際距離。

Dcsb.png

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個

  • 系統(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)啟動安裝

$ sudo python setup.py install
  • 硬件連接
02S001900.png
  • 例子程序
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()
  • 程序效果

在啟動的樹莓派控制器上或者直接通過遠(yuǎn)程登錄到樹莓派控制器運行代碼,使用指令“sudo python xx.py”(這里XX是你程序的名稱,隨意命名即可,不要有空格和中文字符)。

02S001901.png

視頻演示

Chao sheng bo 01.png
Chao sheng bo 02.png


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

Erweima.png

例子程序下載

產(chǎn)品購買地址

RB URF02超聲波傳感器

周邊產(chǎn)品推薦

超聲波傳感器支架
PING))) 超聲波傳感器

相關(guān)問題解答

超聲波測距傳感器為什么一直輸出零

相關(guān)學(xué)習(xí)資料

視頻:Arduino-2WD輕量型移動機器人超聲波旋轉(zhuǎn)偵測演示
超聲波測距LED輸出小裝置制作
Arduino學(xué)習(xí)筆記- Arduino連接超聲波傳感器測距
奧松機器人技術(shù)論壇