“I2C超声波模块”的版本间的差异

来自YFRobotwiki
跳转至: 导航搜索
 
(未显示1个用户的16个中间版本)
第1行: 第1行:
 
+
[[Image:超声波-IIC.png|400px|thumb|超声波I2C模块]]
<img src="http://www.yfrobot.com.cn/wiki/images/f/f8/%E8%B6%85%E5%A3%B0%E6%B3%A2-IIC.png" style="float:right; margin: 15px;" width="30%" alt="yfrobot_vc_kit_v"/>
+
 
+
<!--
+
[[Image:超声波-IIC.png|400px|thumb|超声波I2C模块]]-->
+
 
+
 
+
 
+
 
=== 产品简介 ===
 
=== 产品简介 ===
 
<br>
 
<br>
第19行: 第12行:
  
  
 +
=== 规格参数 ===
 +
*供电电压:DC3.3V-DC5V
 +
*工作电流:约3mA
 +
*IIC通讯地址:0x57(不可更改)
 +
*感应角度:约30度
 +
*探测距离:2cm-300cm
 +
*精度:3mm
 +
*接口类型:PH2.0-4P
 +
*外形尺寸:单位mm
  
 
+
[[Image:乐高兼容模块外壳尺寸.png|400px]]
=== 工作原理 ===
+
  
  
 +
=== 工作原理 ===
 
[[Image:IIC传输格式.png|600px|超声波I2C模块-IIC传输格式]]
 
[[Image:IIC传输格式.png|600px|超声波I2C模块-IIC传输格式]]
  
 +
[[Image:IIC命令格式.png|600px|超声波I2C模块-IIC命令格式]]
  
[[Image:IIC命令格式.png|600px|超声波I2C模块-IIC命令格式]]
 
 
<br>
 
<br>
 
 向模块写入 0X01,模块开始测距;等待 100mS(模块最大测距时间)以上。直接读出 3 个距离数据。BYTE_H,BYTE_M 与 BYTE_L。
 
 向模块写入 0X01,模块开始测距;等待 100mS(模块最大测距时间)以上。直接读出 3 个距离数据。BYTE_H,BYTE_M 与 BYTE_L。
  
 
 距离计算方式如下(单位 mm):
 
 距离计算方式如下(单位 mm):
'''公式'''
 
*uS/58=厘米
 
*uS/148=英寸
 
*距离=((BYTE_H<<16)+(BYTE_M<<8)+ BYTE_L)/1000
 
<br>
 
'''超声波模块时序图'''
 
<br>
 
[[Image:超声波模块时序图.png|600px]]
 
<br>
 
 
 
=== 规格参数 ===
 
<br>
 
*供电电压:DC5V
 
*静态电流:小于2mA
 
*工作频率:40kHz
 
*感应角度:<15度
 
*探测距离:2cm-400cm
 
*精度:3mm
 
*安装孔径:2MM
 
*模块尺寸:45*27*18MM(长*宽*高,包含排针)
 
*安装孔间距:40mm、15mm
 
*模块重量:7.3g
 
  
 +
*'''距离=((BYTE_H<<16)+(BYTE_M<<8)+ BYTE_L)/1000'''
  
  
 
=== 引脚说明 ===
 
=== 引脚说明 ===
<br>
+
[[Image:IIC超声波-pinout.png|600px|LEGO-IIC超声波-PINOUT]]
*1. VCC    --  电源
+
*2. Trig    --  触发信号输入
+
*3. Echo    --  回响信号输出
+
*4. GND    --  地
+
 
+
  
  
 
=== 应用示例 ===
 
=== 应用示例 ===
<br>
 
 
'''电路连接'''
 
'''电路连接'''
<br>
+
{|border="1" cellspacing="0" cellpadding="5" width="600px"
<br>
+
{|border="1" cellspacing="0" align="center" cellpadding="5" width="800px"
+
 
|-
 
|-
 
|align="center"|超声波模块
 
|align="center"|超声波模块
 
|align="center"|Arduino UNO
 
|align="center"|Arduino UNO
 +
|-
 +
|align="center"|GND
 +
|align="center"|GND
 
|-
 
|-
 
|align="center"|VCC
 
|align="center"|VCC
 
|align="center"|+5V
 
|align="center"|+5V
 
|-
 
|-
|align="center"|Trig
+
|align="center"|SDA
|align="center"|A2
+
|align="center"|A4/SDA
 
|-
 
|-
|align="center"|Echo
+
|align="center"|SCL
|align="center"|A3
+
|align="center"|A5/SCL
|-
+
|align="center"|GND
+
|align="center"|GND
+
 
|}
 
|}
<br>
 
'''示意图'''
 
<br>
 
<img src="http://yfrobot.gitee.io/wiki/img/超声波测距.png"  alt="超声波" />
 
 
  
  
第99行: 第66行:
 
<br>
 
<br>
 
<source lang="c">
 
<source lang="c">
//HC_SR04 Test
 
  
const int TrigPin = A2;
+
#include <Wire.h>
const int EchoPin = A3;
+
float              distance = 0;                       //距离数据十进制值
float cm;
+
float               ds[3];                             //3个8BIT距离数据
  
 
void setup()
 
void setup()
 
{
 
{
   Serial.begin(9600);
+
   Serial.begin(9600);                                   //定义串口波特率9600 出厂默认波特率9600
   pinMode(TrigPin, OUTPUT);
+
   Wire.begin();
   pinMode(EchoPin, INPUT);
+
   Serial.println("RCWL-1605-IIC 测距开始:");  
 
}
 
}
void loop()
 
{
 
  digitalWrite(TrigPin, LOW);
 
  delayMicroseconds(2);
 
  digitalWrite(TrigPin, HIGH);
 
  delayMicroseconds(10);
 
  digitalWrite(TrigPin, LOW);
 
  
  cm = pulseIn(EchoPin, HIGH) / 58.0;   //echo time conversion into a distance
+
void loop()
  cm = (int(cm * 100.0)) / 100.0;       //keep two decimal places
+
{
  Serial.print(cm);
+
  char i = 0;
  Serial.print("cm");
+
    ds[0]=0;
   Serial.println();
+
    ds[1]=0;
  delay(1000);
+
    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再次测量,延时可不要
 
}
 
}
 
</source>
 
</source>
程序下载地址:[https://eyun.baidu.com/s/3jHDcxYu HC_SR04_Test]
 
  
 程序运行结果:超声波对着墙,测出实时距离 结果 如图
+
 程序运行结果:超声波对着墙,测出实时距离,串口打印测距 结果:
<br>
+
<br>
+
[[Image: 超声波测试结果图.png|400px|center|超声波测试结果图]]
+
<br>
+
  
  
 
===参考资料===
 
===参考资料===
 
<br>
 
<br>
* [https://eyun.baidu.com/s/3mhYCSWS 超声波 模块参考 手册]
+
* [https://pjfcckenlt.feishu.cn/wiki/wikcnkV8lr33YFQTfaHyMogLhUg 超声波 芯片 手册]
* [https://eyun.baidu.com/s/3hrRtCeK 超声波模块原理图]
+
<!--
 
<p>'''垃圾桶安装视频教程'''</p>
 
<p>'''垃圾桶安装视频教程'''</p>
  
第146行: 第140行:
 
<script type="text/javascript"> document.getElementById("rb").style.height=document.getElementById("rb").scrollWidth*0.7+"px"; </script>
 
<script type="text/javascript"> document.getElementById("rb").style.height=document.getElementById("rb").scrollWidth*0.7+"px"; </script>
 
</html>
 
</html>
 +
-->
 +
 +
 +
 +
 +
 +
  
  

2024年4月24日 (三) 11:25的最后版本

超声波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再次测量,延时可不要
}

程序运行结果:超声波对着墙,测出实时距离,串口打印测距结果:


参考资料







访问论坛 论坛邀请码获取 技术交流群
淘宝企业店 淘宝直营店 联系我们