I2C超聲波模塊

出自YFRobotwiki
在2024年4月24日 (三) 11:25由Allblue對話 | 貢獻所做的修訂版本

(差異) ←上個修訂 | 最新修訂 (差異) | 下一修訂→ (差異)
跳轉到: 導覽搜尋
超聲波I2C模塊

產品簡介


超聲波模塊採用IIC接口通訊模式,可提供 2cm-300cm的非接觸式距離感測功能,測距精度可達高到 3mm。

注意:

1、此模塊不宜帶電連接,若要帶電連接,則先讓模塊的 GND端先連接,否則會影響模塊的正常工作。

2、測距時,被測物體的面積不少於 0.5平方米且平面盡量要求平整,否則影響測量的結果


規格參數

  • 供電電壓:DC3.3V-DC5V
  • 工作電流:約3mA
  • IIC通訊地址:0x57(不可更改)
  • 感應角度:約30度
  • 探測距離:2cm-300cm
  • 精度:3mm
  • 接口類型:PH2.0-4P
  • 外形尺寸:單位mm

樂高兼容模塊外殼尺寸.png


工作原理

超聲波I2C模塊-IIC傳輸格式

超聲波I2C模塊-IIC命令格式


向模塊寫入 0X01,模塊開始測距;等待 100mS(模塊最大測距時間)以上。直接讀出 3 個距離數據。BYTE_H,BYTE_M 與 BYTE_L。

距離計算方式如下(單位 mm):

  • 距離=((BYTE_H<<16)+(BYTE_M<<8)+ BYTE_L)/1000


引腳說明

LEGO-IIC超聲波-PINOUT


應用示例

電路連接

超聲波模塊 Arduino UNO
GND GND
VCC +5V
SDA A4/SDA
SCL A5/SCL


示例代碼

#include <Wire.h> 
float               distance = 0;                       //距离数据十进制值
float               ds[3];                              //3个8BIT距离数据
 
void setup()
{
  Serial.begin(9600);                                   //定义串口波特率9600 出厂默认波特率9600
  Wire.begin();
  Serial.println("RCWL-1605-IIC 测距开始:"); 
}
 
void loop() 
{
   char i = 0;
    ds[0]=0;
    ds[1]=0;
    ds[2]=0;                                            //初始化3个8BIT距离数据为0
 
   Wire.beginTransmission(0x57);                        //地址为0X57 写8位数据为AE,读8位数据位AF
   Wire.write(1);                                       //写命令0X01,0X01为开始测量命令 
   Wire.endTransmission();                              //IIC结束命令 
 
   delay(120);                                          //测量周期延时,一个周期为100mS,设置120MS,留余量    
 
   Wire.requestFrom(0x57,3);                            //地址为0X57 读3个8位距离数据       
    while (Wire.available())
    {
     ds[i++] = Wire.read();
    }        
 
   distance=(ds[0]*65536+ds[1]*256+ds[2])/10000;        //计算成CM值     
   Serial.print("距离:"); 
 
   if ((1<=distance)&&(900>=distance))                  //1CM-9M之间数值显示 
    {
     #if 0
     Serial.println();    
     Serial.print(ds[0]);
     Serial.println();    
     Serial.print(ds[1]);
     Serial.println();    
     Serial.print(ds[2]);    
     Serial.println();      
     #endif                                             //#if 1,输出IIC的3个距离数据
 
    Serial.print(distance);
    Serial.print(" CM ");  
    }
   else 
    {
    Serial.print(" - - - - ");                          //无效数值数值显示 - - - - 
    }
 
    Serial.println();                                   //换行
 
    delay(30);                                          //单次测离完成后加30mS的延时再进行下次测量。防止近距离测量时,测量到上次余波,导致测量不准确。
    delay(100);                                         //延时100mS再次测量,延时可不要
}

程序運行結果:超聲波對着牆,測出實時距離,串口打印測距結果:


參考資料







訪問論壇 論壇邀請碼獲取 技術交流群
淘寶企業店 淘寶直營店 聯繫我們