最近购买了DFrobot的超声波传感器URM04 V2.0, 采用Arduino + Xbee 传感器扩展板V5 + URM04 V2.0 的结构,可是程序就是调不好。从URM04上无法读取数据。参考了Wiki (这个Wiki上的东西不可信,2012-02-06注) 中的说明,依然不好使: 问题是无法从传感器获取数据。

经过多次试验,终于将程序调试出来。之前无法获取数据,是因为我在激发测量后,用一个循环死等返回的数据,但是(不知道是不是我手上的芯片的问题)有时后传感器是不返回数据的,因此不能死等。修改程序后,只等待一定的时间,如果超时后依然没有数据返回,就放弃,而进行下一次测量。

代码如下:(代码修改自淘宝卖家wxxmickey发给我的程序,特此向他表示感谢)

// Measure distance using the URM04V2 ultrasonic sensor.
void measureDistance(byte device) {digitalWrite(EN, HIGH);// Trigger distance measurement.uint8_t DScmd[6]={0x55,0xaa,device,0x00,0x01,0x00};  for(int i=0; i<6; i++) {Serial.write(DScmd[i]);DScmd[5] += DScmd[i];}delay(30);// Send command to read measured distance.uint8_t STcmd[6]={0x55,0xaa,device,0x00,0x02,0x00};   for(int i=0; i<6; i++) {Serial.write(STcmd[i]);STcmd[5] += STcmd[i];}  delay(3);
}// Return last measured distance by the URM04V2 ultrasonic sensor.
// -1 means the last measurement is out of range or unsuccessful.
int readDistance() {uint8_t data[8];digitalWrite(EN,LOW);boolean done = false;int counter = 0;int result = -1;while(!done){int bytes = Serial.available();if(bytes==8) {   for(int i=0; i<8; i++) {data[i] = Serial.read();}result = (int)data[5] * 256 + data[6];done = true;} else {delay(10);counter++;if(counter==5) { // If failed to read measured data for 5 times, give up and return -1.done = true;}}}return result;
}
// Usage code sample:
int EN = 2; // Pin number to enable XBee expansion board V5void setup() {pinMode(EN, OUTPUT);Serial.begin(19200);delay(200);digitalWrite(EN,HIGH);delay(2000);
}void loop() {measureDistance(0x11);int distance = readDistance();delay(1000);
}

方法measureDistance用于激发测量,其参数device用于指定要激发的URM传感器的ID,默认传感器ID为0x11,如果你只有一个传感器,用0x11就是了。方法readDistance用于返回测量所得的距离值。如果测量失败或是测量距离超出传感器可测范围,readDistance均返回-1。

注意事项:

  • URM04 V2.0 的默认设备ID是0x11。
  • URM04 V2.0 的波特率为固定值19200。
  • URM04 V2.0 初始化的时候,其上的LED灯会慢速闪烁4下。
  • URM04 V2.0 如果与主板有数据交流,其上的LED灯会一闪一闪的。
  • 由于URM04 V2.0 是通过 由于Xbee 传感器扩展板V5 上的RS485传输数据,而RS485又占用了Arduino上的串行口Serial,因此在从电脑往Arduino下载程序的时候,要把Xbee 传感器扩展板V5从Arduino上拔出。
  • Xbee 传感器扩展板V5上的跳线(三个跳线都要这么做)要拨到标有485的那一端。
  • 如果想用两头都有接口的4P线把URM04和Xbee 传感器扩展板V5连接起来,需要把4P线的一段剪断,然后接入RS485插头中。
所使用的设备图片:
URM04 V2.0

Xbee 传感器扩展板V5

4P线

超声波传感器 URM04 V2.0 的使用相关推荐

  1. 超声波传感器特性测量:发送与接收传感器之间的差异

    简 介: 本文针对超声波传感器的测量方法,探讨了使用NanoVNA测量过程, 对比发射和接收传感器在特性方面的不同. 对于整个过程编写了APPLE脚本. 关键词: 超声波传感器,发送,接收,NanoV ...

  2. hc sr04流程图_超声波传感器HC-SR04完整应用以及程序讲解

    带有Arduino的超声波传感器HC-SR04完整应用指南 本文是有关流行的超声波传感器HC – SR04的应用指南.我们将解释其工作原理,向您展示其某些功能,并分享一个您可以遵循的Arduino项目 ...

  3. 超声波的四个特性_超声波传感器,超声波的特性

    超声波传感器的超声波是一种人耳无法听到的.频率一般超过20kHz的声音. 超声波的基本特性如下所述: 1. 波长与辐射 波的传播速度是用频率乘以波长来表示.电磁波的传播速度 是3×108m/s,而声波 ...

  4. 将Kinect的v2.0 Motion存储到BVH文件中

    本文翻译自:Store Kinect's v2.0 Motion to BVH File I would like to store the motion capture data from Kine ...

  5. paip.2013年技术趋势以及热点 v2.0 cae

    paip.2013年技术趋势以及热点 v2.0 cae HTML5 多核编程 物联网 可穿戴计算设备 3. 物联网 无论是M2M(机器对机器)通信应用,还是NFC(进距离通信)技术,都是物联网的组成部 ...

  6. 米斯齐超声波传感器显示测量距离(oled)内附Arduino代码

    用到的东西:     超声波传感器,uno,SSD1306 OLED显示屏 超声波:gnd-gnd              vcc-5v              trig-接脚这里是A0     ...

  7. 机器人技术-HC-SR04超声波传感器数据及机器人避障的应用

    比较详细的HC-SR04超声波传感器数据及机器人避障的应用方法 言.超声波传感器概述 超声波传感器型号繁多,价格从几元钱到几百元不等,主要用于检测距离,同时根据声速计算出物体的距离.但超声波传感器有四 ...

  8. 比较详细的HC-SR04超声波传感器数据及机器人避障的应用方法

    引言.超声波传感器概述 超声波传感器型号繁多,价格从几元钱到几百元不等,主要用于检测距离,同时根据声速计算出物体的距离.但超声波传感器有四个缺点: 1.声音速度易受温度和风向等环境因素干扰,在室内应用 ...

  9. 树莓派控制超声波传感器

    看到大二的时候有写过关于树莓派控制HC-SR04超声波测距模块的教程,当时并未给出代码(也不知道是什么原因,估计初写博客并不熟悉吧),所以在三年后的今天贴代码出来,给大家参考下. //树莓派控制超声波 ...

最新文章

  1. 学习笔记整理之对象的转型
  2. C语言函数指针的MFC版本Demo
  3. 系统调用004 SSDT
  4. 消息队列系列二(IOT中消息队列的应用)
  5. 操作系统 课堂练习题01【15道 经典题目】
  6. iOS之深入解析如何构建静态库
  7. Zookeeper基于Java访问-授权对象
  8. 牛客多校4 - Count New String(序列自动机+广义后缀自动机)
  9. LeetCode 204. Count Primes
  10. Impala查询 - HDFS缓存数据
  11. python 交易日_Python判断某天是否为A股“交易日”?
  12. 软件工程第二次作业(原型设计)
  13. Hibernate的Cascade——级联操作
  14. 2017 Multi-University Training Contest - Team 7:1005. Euler theorem(答案是(n+3)/2)
  15. redis事务冲突问题 - 乐观锁和悲观锁
  16. 图像上采样和图像下采样
  17. 地震数据的获取与处理
  18. 哪个软件测试上传速度最准,哪个软件测网速准确,360怎么测网速
  19. 凤凰架构4——透明多级分流系统
  20. 阿里热修复方案Sophix

热门文章

  1. 究竟如何进行数据分析?
  2. 洛谷1594 护卫队_区间dp_题解
  3. 数论之互质与欧拉函数
  4. 小米2017校园招聘(服务端开发类)
  5. oracle 的密码策略及密码修改
  6. Redis 击穿、穿透和雪崩的理解
  7. 可能造成系统自动重启原因
  8. 符天气预报软件测试,卫星云图天气预报软件
  9. android华为账号登陆,华为手机怎么找回华为账号密码?华为账号密码两种找回方法...
  10. 初探12306售票算法(一)- 理论(转)