使用超声波传感器和Arduino构建一个避障机器人

避障机器人是一种智能设备,它可以自动感知前方障碍物,并通过转向另一个方向来避开它们。这种设计允许机器人通过避免碰撞在未知环境中导航,这是任何自主移动机器人的主要要求。避障机器人的应用范围不受限制,现在大多数军事组织都在使用它,这有助于执行许多士兵无法完成的危险工作。
这次我们将使用超声波传感器和 arduino 构建一个避障机器人。这里使用超声波传感器通过计算机器人与障碍物之间的距离来感知路径中的障碍物。如果机器人发现任何障碍物,它会改变方向并继续移动。
如何使用超声波传感器构建避障机器人
在构建机器人之前,了解超声波传感器的工作原理非常重要,因为该传感器将在检测障碍物方面发挥重要作用。超声波传感器工作的基本原理是记下传感器发射超声波束和撞击表面后接收超声波束所花费的时间。然后进一步使用公式计算距离。在这个项目中,使用了广泛使用的hc-sr04 超声波传感器。
因此,hc-sr04 的 trig 引脚被设为高电平至少 10 us。一个声束以 8 个 40khz 的脉冲传输。
信号然后撞击表面并返回并由 hc-sr04 的接收器 echo 引脚捕获。echo 引脚在发送高电平时已经变为高电平。
光束返回所需的时间保存在变量中,并使用如下适当的计算转换为距离
距离 = (时间 x 空气中的声速 (343 m/s))/2
这个避障机器人的组件很容易找到。为了制作底盘,可以使用任何玩具底盘,也可以定制。
所需组件
arduino nano 或 uno(任何版本)
hc-sr04 超声波传感器
lm298n 电机驱动模块
5v直流电机
电池
轮子
机壳
跳线
电路原理图
该项目的完整电路图如下所示,您可以看到它使用了 arduino nano。但是我们也可以使用具有相同电路(遵循相同引脚)和代码的 arduino uno 构建一个避障机器人。
一旦电路准备好,我们必须通过将电路组装在机器人底盘顶部来构建我们的避障车,如下所示。
使用 arduino 的避障机器人 - 代码
该项目的最后给出了带有演示视频的完整程序。该程序将包括设置 hc-sr04 模块并将信号输出到电机引脚以相应地移动电机方向。此项目中不会使用任何库。
首先在程序中定义hc-sr04的触发和回波引脚。在这个项目中,触发引脚连接到 gpio9,回声引脚连接到 arduino nano 的 gpio10。
int trigpin = 9; // hc-sr04 的触发引脚int echopin = 10; // hc-sr04的回声引脚  
定义 lm298n 电机驱动模块的输入引脚。lm298n 有 4 个数据输入引脚,用于控制与其连接的电机的方向。
int revleft4 = 4; //左电机反向运动int fwdleft5 = 5; //左电机的forward运动int revright6 = 6; //右电机反向运动int fwdright7 = 7; //右电机forward运动
在setup()函数中,定义使用的 gpio 引脚的数据方向。四个 motor 引脚和 trig 引脚设置为 output,echo 引脚设置为 input。
pinmode(revleft4,输出);// 将电机引脚设置为输出pinmode(fwdleft5, output); pinmode(revright6,输出);pinmode(fwdright7,输出);pinmode(trigpin,输出);// 将触发引脚设置为输出pinmode(echopin, input); //将回波引脚设置为输入以捕获反射波  
在loop()函数中,获取到 hc-sr04的距离并根据距离移动电机方向。距离将显示机器人前方的物体距离。距离是通过将一束超声波发射到 10 微秒并在 10 微秒后接收它来获取的。
数字写入(trigpin,低);延迟微秒(2); digitalwrite(trigpin, high); // 发送波形 10 us delaymicroseconds(10); 持续时间=脉冲输入(回声针,高);// 接收反射波距离 = 持续时间 / 58.2; // 转换为距离延迟(10);  
如果距离大于定义的距离,则表示其路径中没有障碍物,它将向前移动。
if (距离 > 19) { digitalwrite(fwdright7, high); // 前进 digitalwrite(revright6, low); 数字写入(fwdleft5,高); 数字写入(revleft4,低); }  
如果距离小于定义的避障距离,则表示前方有障碍物。所以在这种情况下,机器人会停一会,然后向后移动,然后再停一会,然后转向另一个方向。
if (距离 19)
{
digitalwrite(fwdright7, high); // 前进
digitalwrite(revright6, low);
数字写入(fwdleft5,高);
数字写入(revleft4,低);
}
if (距离 < 18)
{
digitalwrite(fwdright7, low); //停止
digitalwrite(revright6, low);
数字写入(fwdleft5,低);
数字写入(revleft4,低);
延迟(500);
数字写入(fwdright7,低);//movebackword
digitalwrite(revright6, high);
数字写入(fwdleft5,低);
数字写入(revleft4,高);
延迟(500);
数字写入(fwdright7,低);//停止
digitalwrite(revright6, low);
数字写入(fwdleft5,低);
数字写入(revleft4,低);
延迟(100);
数字写入(fwdright7,高);
数字写入(revright6,低);
数字写入(revleft4,低);
数字写入(fwdleft5,低);
延迟(500);
}
}

中微2019年成绩亮眼 氮化镓基MOCVD设备市场规模有望进一步扩大
最常见的4个神经网络错误是什么?
国网辽宁省电力有限公司的电网发展策略分析
华为融合AI系统 组建智能的新型电力系统
斩波串级调速系统的工作原理及基于封装技术实现建立仿真模型与研究
使用超声波传感器和Arduino构建一个避障机器人
关键字union的基本定义和使用
卫星轨迹覆盖全球,为何偏远地区仍没有信号
工业物联网有什么用,它需要新建设施吗
Analog Switches Operate With 3
全芯时代单通道低侧GaN驱动器
SK集团将与韩国中小企业共享半导体等171项专利技术
温室大棚自动控制系统将是农业未来发展的主要趋势
打造视觉导向的机器人和无人机全可编程soc
锂离子动力电池商用化中应注意的安全问题及解决方法
诺基亚8跳水!别把情怀当饭吃
英特尔瞄准数据中心 2019年高达100TB的SSD不是梦
宁畅参展英特尔互联网峰会 “定制服务器”助快速构建全栈云服务
一文解析Redis读写分离技术
MG216蓝牙芯片适用于低功耗蓝牙信标