0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

带蓝牙的清洁机器人的制作

454398 来源:网络整理 作者:佚名 2019-11-06 16:49 次阅读

步骤1:你需要什么?

零件:

为了构建这个机器人,你需要在Ebay上购买一些物品。你可以自己制造一些传感器,但你必须看到它值得你的时间 - 没有必要重新发明轮子。所以这里是清单:

HMC5883L数字罗盘Ebay(1);

Arduino Uno或兼容的Ebay(2);

2WD汽车底盘Ebay(3);

HC-06蓝牙模块(可选)Ebay(4);

2个双H桥(将需要其中两个)Ebay(5);

Arduino Uno Ebay原型盾(6) );

5V Ebay(7)以上的可充电电池;

I2C LCD显示器1602(可选)Ebay(8) ;

3超声波传感器HC-SR04(至少)Ebay(9);

超声波传感器固定支架或类似物(可选)Ebay(10);

两片丙烯酸到机器人的制作层;

额外的12V电机Ebay(11);

一堆黄铜支座垫片Ebay(12);

Carpet Sweeper Ebay( 13);

如果您希望车轮上的光耦合器作为编码器工作,我建议:

Optocoupler Ebay(14);

而且,如果你想要一个photoelec用于检测墙壁的三位一体传感器:

红外传感器Ebay(15);

步骤2:焊接Eletronics

您需要什么知道:

在开始焊接之前,您需要观察上图。您可以使用3到6个超声波传感器。如果使用3,则必须将一个放在机器人前面,另外两个放置120度。前面的那个将在物体靠近时检测到物体,另外两个物体将指向机器人的后部。他们两个都会找到距离较近的物体(后面)的距离,所以“ SweeperBot ”可以决定,如果在找到一堵墙之后,它会更多回到它的右侧,或更左侧。那是因为,当然,如果在找到一堵墙之后机器人直接向后移动,它将总是直线前进,并且永远不会清理整个房间。

如果你想要更多的读数,更多信息,以及机器人检测来自侧面的物体,以及检测其后面的物体,您可以使用所有6种可能的传感器。为避免障碍而可能使用的一种控制方法是潜在字段,它可以充分利用所有这些信息。但是我还没有实现这个。

还在写关于声纳的内容,另外需要注意的是,使用我将提供的代码如下,你可以只使用一个连接到所有六个它们作为触发引脚,这意味着您将使用相同的命令一起触发所有6个触发引脚。这样您就可以避免使用更多5根线来触发它们。通常,使用此传感器的标准库,您将无法这样做,因为每个传感器都会与另一个传感器有问题。但是,每个传感器都有自己的回波(引脚和接线),因为它们的读数不同,每个传感器都会向Arduino发送不同的信号

HC-SR04声纳的另外两个引脚是正面和正面。这两个与所有其他电子设备相同:指南针,显示屏和蓝牙。指南针将通过I2C(IIC)进行通信,将SDA和SCL连接到Arduino上的SDA和SCL。蓝牙将其发送器引脚和接收器引脚连接到微控制器的数字0和1引脚。注意它们的配置是通过软件完成的,如果你切换这些引脚,蓝牙将无法与设备配对。显示器还将在与罗盘相同的引脚上连接I2C,因为使用I2C,Arduino可以使用相同的引脚同时控制多个器件。

相对于H桥,您必须连接使能A和将B启用到正极引脚(在它旁边,只需使用跳线),否则电机不会运行。然后,将每个电机连接到H桥的正极和负极(带螺钉的侧面引脚),并且用螺钉保留的三个连接器是:接地,它将连接到arduino和所有其他设备,包括电池,正极9V-12V,完全来自电池,5V输出,将提供所有其他不是直流电机的设备。剩余的连接器是两对逻辑信号,用于控制每个电机的方向和功率。

PINOUT:

HMC5883L数字罗盘;

PIN 0 - SDA 》》》 Arduino模拟引脚A4;

PIN 1 - SCL 》》》 Arduino模拟引脚A5;

PIN 2 - GND 》》》 GND;

PIN 3 - VCC 》》》 VCC 5V;

HC-06蓝牙;

PIN 0 - RX 》》》 Arduino数字引脚0;

PIN 1 - TX 》》》 Arduino数字引脚1;

PIN 2 - GND 》》》 GND;

PIN 3 - VCC 》》》 VCC 5V;

第一个双H桥;

PIN 0 》》》 Arduino Digital Pin 4;

PIN 1 》》》 Arduino Digital Pin 5;

PIN 2 》》》 Arduino Digital Pin 6;

PIN 3 》》》 Arduino Digital Pin 7;

启用A 》》》 VCC;

启用B 》》》 VCC;

电源》》》电池正极9 - 12V;

GND 》》》电池GND和Arduino GND;

+ 5V OUT 》》》 Arduino VCC;

第二双H桥;

PIN 0 》》》 Arduino Digital Pin 3;

PIN 1 》》》 GND;

PIN 2 》》》未连接;

PIN 3 》》》未连接;

启用A 》》》 VCC;

启用B 》》》 GND;

电源》》》电池正极9 - 12V;

GND 》》》电池GND和Arduino GND;

+ 5V OUT 》》》未连接;

I2C LCD显示1602;

引脚0 - GND 》》》 Arduino GND;

引脚1 - VCC 》》》 Arduino VCC;

引脚2 - SDA 》》》 Arduino模拟引脚A4;

针脚3 - SCL 》》》 Arduino模拟针脚A5;

6超声波传感器HC-SR04;

引脚0 - VCC 》》》 Arduino VCC;

引脚1 - 触发》》》 Arduino数字引脚2;

Pin 2 - Echo 》》》连接Arduino数字引脚8,9,10,11,12和13;

引脚3 - GND 》》》 Arduino GND。

步骤3:安装机器人

让超声波传感器彼此之间以相等的角度固定例如,如果您使用六个,则将第一个放在机器人前面,将其他放置在距离它60度的位置。使用丙烯酸板作为机器人的层,因此更容易安装并使部件就位。拧紧所有层,将电池放在电机上方,但放在电子设备下面。这样你就可以降低它的重心,从而使它更稳定。

将所有正极导线和接地针也焊接在一起。我用传感器的所有引脚和另外5个直流电机引脚制作了一个连接器,因此在安装和拆卸时更容易理解。在H桥上方放置一层最后一层并将Arduino放在那里。我在微控制器上方使用了Prototyping Shield,因为它更容易焊接并固定指南针,这是需要特别注意的部分。没有必要将它放在机器人的中心,但它需要远离大的金属部件,如电机和电池。

可以将直流电机安装在一起。地毯清扫车有许多不同的方式,但有些比其他更好。因为我只有一个扫地机,我的尝试中有点难看。我发现将电机的轴线粘在清扫器的轴线上非常困难,通常在工作几分钟后,它们会断裂,特别是因为没有办法将它们正确对齐。所以我取下了电动机的减速轴,并将一个小齿轮粘在扫地机的轴上。然后我把马达的齿轮放在一起接触,一切都像魅力一样。但是,我希望我有一台3D打印机,事情会更简单,也更专业。

第4步:代码

图书馆:

“SweeperBot”使用Wire,I2Cdev,TimerOne(用于中断),Adafruit传感器,HMC5883和LCD库。您可以下载Zip文件,其中包含Arduino的代码和所有库。还包含适用于Windows Phone的蓝牙项目。

WINDOWS PHONE 8.1代码:

通过控制机器人的项目Windows Phone中的蓝牙改编自互联网上的示例。它改为有四个按钮,每个方向一个。上,下,左,右。每个按钮都会向机器人发送一个字母,分别是U,D,L和R.当机器人收到这些信件时,它会生成以下内容之一:

U - 机器人将方向设置为直接前进;

D - 机器人将转向背部直行;

L - 机器人将将方向设置为与当前“正在观察”的位置完全相差90度;

R - 机器人将方向设置为与其正好相差90度目前正在“寻找”;

机器人处理这些命令的方式可以通过Arduino上的代码进行更改。可以添加更多按钮来转动机器人,或者停止它,甚至可以让它向后移动。这段代码只是一个例子。也可以为其他设备制作类似的程序,例如用于IOSAndroids和。您必须发送机器人的唯一信件是这些字母 - U,D,L或R.

private async void RedButton_Click_1(object sender, RoutedEventArgs e) {

string command = “U”;

await connectionManager.SendCommand(command);

}

private async void GreenButton_Click_1(object sender, RoutedEventArgs e) {

string command = “L”;

await connectionManager.SendCommand(command);

}

private async void YellowButton_Click_1(object sender, RoutedEventArgs e) {

string command = “R”;

await connectionManager.SendCommand(command);

}

private async void RedButton_Copy_Click(object sender, RoutedEventArgs e) {

string command = “D”;

await connectionManager.SendCommand(command);

}

要将此代码部署到Windows Phone,您需要Visual Studio和开发人员解锁电话。这可以按照此链接上的说明进行。

ARDUINO代码:

在简历中,主要逻辑是机器人如下:

在6个可能的传感器中找到距离更近的物体的距离;

机器人处理距离的行为,并用向量X,Y指向所需方向(但是,如果从智能手机收到消息,则步骤2由设备发送的指示代替);

数字罗盘给出了机器人的方向,以控制其轮子;

来自罗盘的信息X‘,Y’被归一化为空间[-1,1];

期望方向的矢量与实际方向之间的交叉产物发现它们之间的误差;

PID方法计算两个车轮(2WD)的每个直流电机的PWM(功率);

中断激活PWM;

随着项目的发展,我发现GitHub上可用的超声波传感器标准库与电机的PWM激活相冲突,因为他们都使用相同的计时器。由于这个项目使用5个引脚配置三个直流电机的PWM(这是唯一可能的,因为地毯清扫器只转向一个方向),而传感器更多7个,微控制器必须不断检查收到了阅读,无法使用互联网上提供的资料

因此,为避免冲突,只配置了定时器1中断。通过这种中断,Arduino可以检查每个传感器上是否有读数:如果没有,它会为每个传感器增加一个变量,它将用作参数来查找到物体的距离。

void callback() { //callback is the interruption name

noInterrupts();

//if no reading, increases variable sonarCount[n], where n is the number of sensor

if ((sonar[0] == 1) && (digitalRead(ECHO))) sonarCount[0]++;

//if there is readind on that sensor, sonar[n] = 2 accuses object found

if ((sonar[0] == 1) && (!digitalRead(ECHO)) && (sonarCount[0] 》 0)) sonar[0] = 2;

此外,在此中断期间,它会向电机投入全部电量。如果有一定数量的中断超过了PWM_R或PWM_L变量的数量,那么它对该给定电机的效力为零。

if (PWMCount == 0) {

if (PWML) { //if pwm left is positive then turn to a certain way

digitalWrite(MOTOR + 2, HIGH);

digitalWrite(MOTOR + 3, LOW);

} else { //else turn to the other side the left motor

digitalWrite(MOTOR + 2, LOW);

digitalWrite(MOTOR + 3, HIGH);

}

(。..)

if (PWMCount 》= abs(PWM_L)) { //if the counter equals the power we want

digitalWrite(MOTOR + 2, LOW); //shut down both pins of this motor

digitalWrite(MOTOR + 3, LOW);

}

(。..)

PWMCount++; //increases counter

if (PWMCount == 250) PWMCount = 0; //if counter equals maximum value we want

Timer1.attachInterrupt(callback); //250 equals 100% power

}

在主循环期间,机器人继续搜索障碍和计算路线以避免它们或改变它的路径。如果开发人员想要配置潜在字段控制方法,或者更改机器人的行为,他只需要使用更好的obst()函数。该程序的其他部分是必要的,不需要更改。当机器人通过蓝牙接收消息时,它会停止避开障碍物,只是听取用户输入。

void loop() //main loop

{

lcd.clear(); //clears previous messages on lcd

delay(10);

search(); //search obstacles and saves the distance value to each sensor

readings(); //reads compass and calculates the error from its desired direction

calcPWM(); //calculates the PWM for each motor based on PID

if (!mensagem) { //message from Bluetooth? if not, continue doing this

obst(); //here is where the robot defines its behavior

} //and where it defines the direction it want to go

(。..)

从代码的所有部分开始,所有部分都是非常基本的,唯一的一个这里要注意的有趣功能是读数()。在其中,机器人获取数字罗盘上当前位置的值X,Y和Z.那么,如何将读数转化为让机器人知道它看哪个方向的东西?

首先得到原始值:

double rawX = event.magnetic.x;

double rawY = event.magnetic.y;

double rawZ = event.magnetic.z;

然后检查是否机器人在正确的平面上。这可以通过查看Z(垂直轴)是否具有某个小范围之间的值来实现

if ((rawZ 》 Zprim + 10) || (rawZ 《 Zprim - 10)) return; //if not right, return

现在是时候将X和Y值标准化为[ - 之间的空间 - 1,1],以便从这些值计算sin()和cos()。

//Ymin, Ymax, Xmin and Xmax are obtained when the calibration occurs

vector[1] = ((rawY) - ((Ymax + Ymin) / 2)) / ((Ymax - Ymin) / 2);

vector[0] = ((rawX) - ((Xmax + Xmin) / 2)) / ((Xmax - Xmin) / 2);

我们现在使vectorOBJ [n]成为一个双向向量,指向计划中的位置,我们想要机器人去。因此,要找到两个向量之间的误差,我们必须在它们之间产生交叉积。结果值是另一个向量,但与两者垂直,向上或向下,取决于其符号。

error = (vectorOBJ[0] * vector[0] + vectorOBJ[1] * vector[1]) /

(sqrt(vectorOBJ[0] * vectorOBJ[0] + vectorOBJ[1] * vectorOBJ[1])

* sqrt(vector[0] * vector[0] + vector[1] * vector[1]));

error = (acos(error)) * 180 / PI; //from rad to degrees

//find out the way the result vector is pointing

sentido = vector[0] * vectorOBJ[1] - vector[1] * vectorOBJ[0];

if (sentido 》 0) error = -error;

步骤5:结论

最终词汇

焊接后,安装机器人并将代码部署到Arduino和手机,您仍然需要配置其许多属性。例如,代码上的正PWM值可能会转动轮子使机器人向后移动,而不是向前移动。也许正面将一个电机转向一侧而另一个转向另一侧。在这种情况下,只需切换电机端子上的电线,这很好。

也许您必须更改变量read而不是X和Y,也许您的指南针计划将使用X和Z,或Y和Z.取决于您如何放置和配置数字指南针。也许名为0(零)的传感器不会在机器人前面,你必须以不同方式连接或配置它们。

毕竟,你可能已经完成了你的机器人。您可以根据需要更改其行为,但我可以保证它将起作用,或者至少代码将会起作用。机器人将正确读取指南针,将计算他前进的位置,他想要去的方向,为每个电机提供多少功率,以及看每个传感器的障碍物有多远。剩下大量的ROM内存,所以你可以按照自己的意愿实现不同的策略。

再次,正如我在之前的Instructable(链接)中所写,这是关于带蓝牙和红外遥控的闹钟,我还有其他一些我想和你们分享的项目。如果有人喜欢这个,请在这里发表评论并关注我,因为我可能会再写一篇关于我为Windows Phone(或任何其他平台)制作的带有数字指南针,加速度计和蓝牙的智能手表(再次 - “ 蓝牙“ )一切都更好。抱歉英文不好。

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器人
    +关注

    关注

    210

    文章

    28239

    浏览量

    206641
  • 蓝牙
    +关注

    关注

    114

    文章

    5776

    浏览量

    169878
收藏 人收藏

    评论

    相关推荐

    精准定位,深度清洁:揭秘工厂清洁机器人的核心技术

    在繁忙的工厂车间,清洁工作虽不显山露水,却是保障生产流畅、提升产品质量的基石。如今,随着科技的飞速发展,工厂清洁机器人以其精准定位与深度清洁的卓越能力,正逐步成为这一领域的明星。今天,
    的头像 发表于 09-28 06:33 323次阅读

    从尘埃到洁净:工厂清洁机器人的日常使命与成就

    从尘埃到洁净:工厂清洁机器人的日常使命与成就 在繁忙的工厂车间里,机器轰鸣,生产线高速运转,每一寸空间都见证着工业文明的蓬勃发展。然而,在这份繁荣背后,隐藏着一个不容忽视的挑战——清洁
    的头像 发表于 09-27 18:20 233次阅读

    爱普生SGPM01助力智能泳池清洁机器人导航方案

    泳池清洁导航方案目前泳池清洁机器人成为一个新的热点赛道,许多都在此新领域投入研发,其中主要为曾经从事家用扫地机的相关公司,因为泳池清洁机器人
    的头像 发表于 09-04 10:34 246次阅读
    爱普生SGPM01助力智能泳池<b class='flag-5'>清洁</b><b class='flag-5'>机器人</b>导航方案

    开源项目!用ESP32做一个可爱的无用机器人

    简介 作者在完成硕士论文答辩后,利用空闲时间制作了一个他一直想做的机器人——可爱无用机器人。 无用机器人原理是一个连接到开关的电机,通过逻辑门控制。当开关被推到“开”时,
    发表于 09-03 09:34

    高效节能,普渡清洁机器人引领绿色清洁潮流

    高效节能,普渡清洁机器人引领绿色清洁潮流 在这个追求可持续发展与环境保护的时代,每一个细微的创新都可能成为推动绿色生活的重要力量在众多。科技产品中,普渡清洁
    的头像 发表于 08-27 17:54 502次阅读

    商用清洁新纪元:为何商用清洁机器人成为必选,及挑选指南

    在日新月异的商业环境中,每一处细节都关乎着品牌形象与顾客体验。随着科技的深入渗透,商用清洁机器人正逐步成为现代商业空间不可或缺的“清洁卫士”。它们以高效、智能、环保的特性,引领着商用清洁
    的头像 发表于 08-19 17:01 282次阅读
    商用<b class='flag-5'>清洁</b>新纪元:为何商用<b class='flag-5'>清洁</b><b class='flag-5'>机器人</b>成为必选,及挑选指南

    商用清洁赛道,普渡清洁机器人如何玩出新花样?

    商用清洁赛道,普渡清洁机器人如何玩出新花样? 前言 每次技术革命,都将对传统模式带来颠覆性改变。 目前,我国产业结构正进入快速升级阶段,智能制造春潮涌动,各行各业正在经历一轮智能化转型升级的变革
    的头像 发表于 08-14 10:21 438次阅读

    泳池清洁机器人的EMC问题整改案例

    人工成本的提升以及泳池清洁机器人自动化、智能化水平的提升,泳池清洁机器人的渗透率将越来越高。随着各种各样泳池清洁
    的头像 发表于 06-24 14:52 1588次阅读
    泳池<b class='flag-5'>清洁</b><b class='flag-5'>机器人</b>的EMC问题整改案例

    其利天下技术·搭载无刷电机的扫地机器人的前景如何?

    随着懒人经济的崛起,智能家居设备的需求呈现出显著的增长态势。作为智能家居领域的一员,扫地机器人因其方便、实用的特性而备受消费者青睐。特别是在无刷电机技术的加持下,扫地机器人不仅提升了清洁效率,还优化
    发表于 05-05 15:03

    奥比中光携手新加坡LionsBot,让智能清洁机器人落地超过30个国家

    近年来,随着AI 3D视觉技术飞速发展,各类创新型自主移动机器人不断涌现。行业领先的机器人视觉与AI视觉科技公司奥比中光与新加坡自主清洁机器人公司LionsBot合作,助力LionsB
    的头像 发表于 04-16 09:32 556次阅读

    EPSON助力智能泳池清洁机器人导航

    目前泳池清洁机器人成为一个新的热点赛道,许多公司都在此新领域投入研发,其中主要为曾经从事家用扫地机的相关公司,因为泳池清洁机器人的智能化与曾经的扫地
    的头像 发表于 04-08 11:15 385次阅读
    EPSON助力智能泳池<b class='flag-5'>清洁</b><b class='flag-5'>机器人</b>导航

    爱普生陀螺仪模块助力智能泳池清洁机器人导航方案

    目前泳池清洁机器人成为一个新的热点赛道,许多公司都在此新领域投入研发,其中主要为曾经从事家用扫地机的相关公司,因为泳池清洁机器人的智能化与曾今的扫地
    的头像 发表于 04-01 15:52 741次阅读
    爱普生陀螺仪模块助力智能泳池<b class='flag-5'>清洁</b><b class='flag-5'>机器人</b>导航方案

    EPSON爱普生助力智能泳池清洁机器人导航方案应用

    智能泳池清洁机器人导航方案目前泳池清洁机器人成为一个新的热点赛道,许多公司都在此新领域投入研发,其中主要为曾经从事家用扫地机的相关公司,因为泳池清洁
    的头像 发表于 12-26 08:29 650次阅读
    EPSON爱普生助力智能泳池<b class='flag-5'>清洁</b><b class='flag-5'>机器人</b>导航方案应用

    爱普生电子助力智能泳池清洁机器人导航方案

    目前泳池清洁机器人成为一个新的热点赛道,许多公司都在此新领域投入研发,其中主要为曾经从事家用扫地机的相关公司,因为泳池清洁机器人的智能化与曾经的扫地
    的头像 发表于 12-25 09:11 880次阅读
    爱普生电子助力智能泳池<b class='flag-5'>清洁</b><b class='flag-5'>机器人</b>导航方案

    微型5G智能网关助力打造智能清洁机器人

    针对清洁机器人应用,可以选用微型5G智能网关方案,为机器人提供高速、低延时的5G通信和5G远程管理能力,支撑机器人更高效地进行清洁工作。
    的头像 发表于 12-08 17:52 444次阅读
    微型5G智能网关助力打造智能<b class='flag-5'>清洁</b><b class='flag-5'>机器人</b>