欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

超声波传感器 URM04 V2.0 的使用

发布时间:2024/3/26 59 豆豆
生活随笔 收集整理的这篇文章主要介绍了 超声波传感器 URM04 V2.0 的使用 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

最近购买了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 的使用的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。