I2C超聲波模塊
從 YFRobotwiki
產品簡介
超聲波模塊採用IIC接口通訊模式,可提供 2cm-300cm的非接觸式距離感測功能,測距精度可達高到 3mm。
注意:
1、此模塊不宜帶電連接,若要帶電連接,則先讓模塊的 GND端先連接,否則會影響模塊的正常工作。
2、測距時,被測物體的面積不少於 0.5平方米且平面盡量要求平整,否則影響測量的結果
規格參數
- 供電電壓:DC3.3V-DC5V
- 工作電流:約3mA
- IIC通訊地址:0x57(不可更改)
- 感應角度:約30度
- 探測距離:2cm-300cm
- 精度:3mm
- 接口類型:PH2.0-4P
- 外形尺寸:單位mm
工作原理
向模塊寫入 0X01,模塊開始測距;等待 100mS(模塊最大測距時間)以上。直接讀出 3 個距離數據。BYTE_H,BYTE_M 與 BYTE_L。
距離計算方式如下(單位 mm):
- 距離=((BYTE_H<<16)+(BYTE_M<<8)+ BYTE_L)/1000
引腳說明
應用示例
電路連接
超聲波模塊 | 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再次测量,延时可不要 }
程序運行結果:超聲波對着牆,測出實時距離,串口打印測距結果:
參考資料
訪問論壇 | 論壇邀請碼獲取 | 技術交流群 |
淘寶企業店 | 淘寶直營店 | 聯繫我們 |