所有关于电路
项目

The Zambroombi: Roomba的下一个超声波竞争者

2016年11月21日通过瑞恩•琼斯

Zambroombi是你邻居的高档Roomba的下一个升级版。设置好,然后忘记它!

Zambroombi是你邻居的高档Roomba的下一个升级版。设置好,然后忘记它!

“它改变了我的生活。如果没有它,我不知道今天会是什么样子。我以前只需要把所有东西打扫一次,但多亏了赞布罗姆比,我可以把所有东西打扫两次!”无论Zambroombi©客户

物料清单:

Zambroombi材料清单

为什么?

随着假期的临近,我开始看日历,我感到压力很大。我怎么能一个人主持家庭聚会做饭和打扫呢!?我知道必须做点什么。在我的工作台中寻找备件时,我发现了超声波传感器,并立即开始工作。几分钟后(简单的项目,试一试!),我拿起了一个新的很棒的家用电器,Zambroombi!

外观上还有些不尽如人意,挖沟的设计也许有一两个缺陷,但还是有很大的潜力!Zambroombi有很多功能:它可以扫爆米花,给你的狗狗一个伙伴,它甚至是一个晚上可以聊天的朋友。添加一些刷毛到一个扫伺服,给它一个功能的尾巴,收集和散布灰尘在你的房子!

如何?

Zambroombi是个很棒的设计,因为我可以打开它,让它自由运行。它能够计算一个物体的距离和修正自己的行驶路径,这意味着它可以自己无止境地行驶——至少在被马铃薯卡住之前是这样。

它惊人的自主操作能力是基于机器人的超声波传感器。超声波传感器的功能是发射高频声波(对人耳来说太高了),等待这些声波反射物体,然后计算声音返回传感器需要多长时间。传感器包括分别标记为“触发”和“回波”的发送和接收引脚,它们为我们完成了大部分工作。通过查看下面橙色代码下载按钮中的代码,您可以找到关于与传感器模块接口的更多细节。

注意“T”表示发送,“R”表示接收

我们需要控制传感器的高频发射。为此,我们需要向传感器模块发送一个至少10µs宽的逻辑高信号到触发引脚。我们先把引脚写LOW,然后写HIGH,等待至少10个µs,然后再把它写LOW。这将告诉传感器发出信号。当声音从物体反射回传感器时,传感器向Arduino发送一个数字信号,表示超声波信号的往返旅行时间。

digitalWrite (trigPin、低);delayMicroseconds (2);digitalWrite (trigPin、高);delayMicroseconds (10);digitalWrite (trigPin、低);

要把这个以微秒为单位的距离转换成以厘米为单位的距离,我们需要做一些事情。首先,考虑到回声针表明声音到达一个物体需要多长时间返回时,我们必须首先将回波引脚脉冲宽度除以2来确定单向旅行时间。

在典型条件下,声音的传播速度为340m /s,通过简单的数学计算,我们发现这相当于29µs/cm。到目前为止,一切都好!要把旅行时间换算成厘米的距离,我们必须把单程旅行时间(以微秒为单位)除以29。代码如下:

duration = pulseIn(echoPin, HIGH);距离=(持续时间/2)/ 29;

现在,我们已经让Arduino做了一些基本的数学运算,将回波针脉冲宽度转换为以厘米为单位的距离,我们可以告诉它在距离一个物体25厘米以内的任何时候转动。为此,我们将使用If/Else语句。如果传感器距离物体25cm以内,转动;如果没有(否则),继续前进。这可以被认为是一个粗糙的“避障”系统,但它也确保了Zambroombi将开车离开桌子,如果没有什么阻碍它的方式!

为了让机器人转动,我们需要向相反的方向转动轮子。多亏了我们的便利Adafruit电动机保护在附带的库中,我们可以很容易地做到这一点,只要让一个马达向前旋转,另一个向后旋转。

if(distance < 25){myMotor->run(FORWARD);myMotor2 - >运行(向后);其他}{延迟(40);myMotor - >运行(向前);myMotor2 - >运行(向前);}}

就是这样!找一些猪鬃,勺子,橡皮刷,随便你有什么,创造一个高度复杂的家庭清洁机器人。正如我之前提到的,附加一个伺服扫机构将是有趣的,可能比我的铲更有用-所以出去,创造赞布罗姆比的下一个竞争对手!

像我一样加个胡子!

Obstacle_Avoidance.zip

其他我的创新:

自己试试这个项目吧!BOM。

1评论