选择:

基于arduino的超声波定位系统

0.00¥

基于arduino的超声波定位系统

0.00¥

该项目由用户Dream&world提供。

我用超声波探测器和arduino设备(Arduino – 雷达/超声波探测器Arduino超声波雷达项目)发现的超声波雷达的所有版本都是非常好的雷达,但它们都是“盲”雷达,我的意思是,雷达检测到的东西但是它是什么。

所以我建议自己开发一个能够检测objets并识别它们的系统。换句话说,定位系统不使用GPS设备而是使用超声波检测器。

这是我希望你喜欢的结果。

版权声明:本站所有设计均源于网友上传或网上搜集,供学习和研究使用,其版权归原作者所有,对可以提供充分证据的侵权信息,本站将在确认后24小时内删除。

添加到愿望单
添加到愿望单
分类: 标签:

描述

第1步:原理

它是如何工作的图片?

定位系统由三个带超声波探测器的传感器站和id_node 1,2和3组成,形成一个90°角的矩形或正方形,它们之间的距离如图1所示。

const float distancebetween1and2 = 60.0;
const float distancebetween2and3 = 75.0;

这些传感器测量id_node大于3的其他物体的距离和角度,这些物体也具有扫描170°角的超声波探测器。

所有这些都使用无线通信将距离,测量角度和id_node发送到另一个主站,以使用三角计算分析,计算物体的位置并识别它们。

为了避免干扰,主站以这种方式同步所有超声波探测器,每个时刻只有一个超声波探测器在测量

之后,使用串行通信,主站将信息(角度,距离,id_object)发送到处理草图以绘制结果。

第2步:如何配置三个传感器站和对象

如何配置三个传感器站和对象的图片如何配置三个传感器站和对象的图片

每个传感器站的唯一功能是检测物体并将测量的距离,角度和id节点列表发送到主站。

因此,您必须更新允许的最大检测距离(“valid_max_distance”)和最小检测距离(“valid_min_distance”)(厘米),以改善检测并限制检测区域:

int valid_max_distance = 80;
int valid_min_distance = 1;

这些传感器站的id节点(下面的代码中的“this_node”)是1,2和3,主站的id节点是0。

const uint16_t this_node = 01;  // Address of our node in Octal format (Node01,Node02, Node03)
const uint16_t other_node = 00; //Address of the master node (Node00) in Octal format

每个传感器站扫描并且角度为100º(下面的代码中为“max_angle”)

#define min_angle 0
#define max_angle 100

如上所述,对象的唯一功能是检测对象并将测量的距离,角度和id对象列表发送给主站。一个对象的id(下面代码中的“this_node”)必须大于3。

每个物体扫描和角度为170º,如上所述,可以更新最大和最小检测距离。

const uint16_t this_node = 04;        // Address of our node in Octal format (Node04,Node05, ...)
const uint16_t other_node = 00;       // Address of the master node (Node00) in Octal format
int valid_max_distance = 80;
int valid_min_distance = 1;
#define min_angle 0
#define max_angle 170

第3步:如何配置主站

如何配置主站的图片

如何配置主站的图片如何配置主站的图片

主站的功能是接收传感器站和对象的传输,并使用串行端口将结果发送到处理草图以绘制它们。此外,以这种方式同步所有物体和三个传感器站,每次只测量其中一个以避免干扰。

Firstable你必须更新传感器1和2之间的距离(厘米)以及2和3之间的距离。

const float distancebetween1and2 = 60.0; 
const float distancebetween2and3 = 70.0;

草图以下列方式计算对象的位置:

  • 对于物体的所有传输(id_node大于3),在超声波传感器(id_node 1,2或3)的每次传输中寻找相同的距离。
  • 所有这些点形成一个“候选者”列表(距离,角度,id_node)作为一个对象的位置(草图中的“process_pointobject_with_pointssensor”)。
  • 对于前一列表的每个“候选”,函数“candidate_selected_between_sensor2and3”从超声波传感器2和3的角度计算它们中的哪一个匹配以下三角条件(参见图片2和3)。
float distancefroms2 = sin(弧度(角度))*距离;
float distancefroms3 = cos(弧度(angle_candidate))* distance_candidate;

//三角条件1
abs(distancefroms2 + distancefroms3  -  between2and3之间的距离)<= float(max_diference_distance)
  • 如上所述,对于前一列表的每个“候选”,函数“candidate_selected_between_sensor1and2”从超声波传感器1和2的角度计算它们中的哪一个匹配以下三角关系(参见图2和图3)。
float distancefroms1 = sin(radians(angle)) * distance;<br>float distancefroms2 = cos(radians(angle_candidate)) * distance_candidate;

// Trigonometry condition 2
abs(distancefroms1 + distancefroms2 - distancebetween1and2) <= float(max_diference_distance)

只有与三角测量条件1和2匹配的候选(距离,角度,id_node)是由传感器站1,2和3检测到的识别对象。

之后,主站将结果发送到处理草图以绘制它们。

第4步:材料清单

材料清单的图片

一个传感器站或一个对象所需的材料列表如下:

并且主站的材料清单如下:

评论

目前还没有评论

成为第一个评论 “基于arduino的超声波定位系统” 的人

电子邮件地址不会被公开。 必填项已用*标注

关闭菜单
×
×

产品入口: 产品添加到购物车