电路

如何构建机器人 - 第7课:构建蓝牙控制的Arduino机器人:14个步骤

Å-lydene /ɔ:/ og /ɒ/ | Fonetikk

Å-lydene /ɔ:/ og /ɒ/ | Fonetikk

目录:

Anonim

由于Arduino机器人能够执行基本功能,我们现在使用另一项功能升级它 - 通过蓝牙进行远程控制。

与其他“如何构建机器人”教程相同,此处使用Arduino机器人套件(Pirate:带蓝牙4.0的4WD Arduino移动机器人套件)作为示例。此外,我们还需要GoBLE(通用BLE APP控制器)的帮助,它允许您通过蓝牙与您的移动设备连接和控制机器人,移动平台,无人机或任何其他设备,如无人驾驶飞行器(无人机)。

课程菜单:

第1课:简介

第2课:构建一个基本的Arduino机器人

第3课:构建线跟踪Arduino机器人

第4课:构建一个可以避免障碍的Arduino机器人

第5课:构建具有光和声效果的Arduino机器人

第6课:构建一个可以监控环境的Arduino机器人

第7课:构建蓝牙控制的Arduino机器人

制备

iPhone或iPad×1

GoBLE APP×1

供应:

步骤1:

注意:目前,GoBLE只能在iOS设备上使用,它要求您至少安装iOS 8.1。

对于iOS用户:请从App Store下载GoBLE。

第2步:

上传测试代码

请将Romeo BLE与电脑连接。测试代码'GoBLE_Test.ino'可以在软件包中找到。它使您可以检查设备的信号输出。下载并检查它。在下载测试代码之前,不要忘记加载GoBLE库。

第3步:

蓝牙测试

现在让我们开始蓝牙配对。打开移动蓝牙,然后打开GoBLE应用程序。你的屏幕看起来像这样!

第4步:

单击蓝牙搜索键(它看起来像一个红色放大镜)。然后,选择一个与Romeo BLE名称对应的蓝牙设备。单击UUID,它们将开始配对。

第5步:

连接后,蓝牙搜索键的颜色将从红色变为绿色。

第6步:

与此同时,主板上的LINK将打开,这意味着您的iPhone已连接到Romeo BLE(带蓝牙4.0的Arduino机器人控制板)。

第7步:

现在让我们测试控制器是否可以成功接收来自iPhone的信号。返回Arduino IDE界面,单击右上角的Serial Monitor。

第8步:

将弹出如下图所示的对话框。首先,串口的波特率应设置为115200,如下面的红圈所示。

第9步:

现在您可以拿出iPhone,随机滑动虚拟操纵杆或单击屏幕上的按钮。如果没有别的,您将在串行监视器上看到相应的值。当您在屏幕上滑动虚拟操纵杆时,串行监视器上的操纵杆值将会更改。当操纵杆向上滑动时,您会发现值增加,或者当操纵杆向下滑动时值会减小。

按钮ID表示您单击的按钮。

第10步:

上传远程控制代码

如果一切正常,让我们继续并将远程控制代码上传到Arduino板。有一个非常关键的点要牢记在心!

在上一个测试阶段,您的iPhone已经连接到Romeo BLE Board。但是,当您的手机和主板之间已建立蓝牙时,您无法将代码上传到Romeo BLE主板。因此,您应首先关闭蓝牙配对。此外,如果电路板已与手机断开连接,您可以再次上传代码。这是非常重要的!

有两种方法可以中断连接。一种方法是你可以简单地关闭Remeo BLE电源然后再打开它。另一种方法是只关闭手机上的蓝牙。

断开连接后,您可以再次上传示例代码。代码在代码包中命名为GoBLE_APP.ino。

第11步:

成功上传后,您可以按照下图中的红色箭头轻扫操纵杆以控制机器人。此外,您可以单击红色按钮打开或关闭与PIN13连接的电路板上的LED。

第12步:

代码提要

在玩机器人之后,让我们开始学习如何使用代码。对于GoBLE测试的测试代码没有更多的话。然后我们继续前进到GoBLE APP。

没有必要讨论基本代码 - 让我们来看看涉及蓝牙控制的部分。如果要远程控制机器人,将使用两个名为Metro和GoBLE的库。

#include“Metro.h”

#include“GoBLE.h”

int joystickX,joystickY;

int buttonState 6;

joystickX,joystickY和buttonState 6,为GoBLE库定义了三个变量。它们用于存储X轴,Y轴的状态值和六个按钮的值。

下图显示了所有按钮的布局。如果您已经分析了状态值的变化,您可能知道+ X,-X,+ Y和-Y的含义。

X&Y是操纵杆的运动方向。“+, - ”显示了价值的趋势。 “+”表示状态值正在增加。并且“ - ”表示状态值正在下降。

第13步:

初始设置应写入Setup()的功能。
Goble.begin();

此行用于启动蓝牙设置。每当您在电路板上使用蓝牙代码时,都不会错过它。

Serial.begin(115200);

事实上,这条线已经在测试阶段使用。它用于启动串行端口。如果要从串行监视器读取值,则必须在setup函数中编写此语句。 AND,还需要设置波特率。

由于蓝牙的波特率是特殊的,您需要设置为115200.确保已设置波特率,否则可能会导致一些问题。

请继续往下看。下一行是Goble.available()的功能

if(Goble.available()){做某事; }

这意味着一旦通过蓝牙接收到该图,下一步操作是什么。

括号内的内容将是我们的下一步行动。首先,我们需要分析收到的数字。以下两个语句是读取X和Y轴上的值。

joystickX = Goble.readJoystickX();

joystickY = Goble.readJoystickY();

// Serial.print(“joystickX:”);

// Serial.print(joystickX);

// Serial.print(“joystickY:”);

// Serial.println(joystickX);

猜猜上面的四个语句Serial.print()是什么意思。它与Serial有关。它是串口打印接收的数据,便于代码调试和优化。

“//”表示以下内容的注释。编译代码时不会包含这四个句子。也就是说,一旦我们对这四个语句使用注释,就不会向序列发送数据。

有关详细信息,请参阅Arudino网站(www.arduino.cc)的参考页面。

buttonState SWITCH_UP = Goble.readSwitchUp();

buttonState SWITCH_DOWN = Goble.readSwitchDown();

buttonState SWITCH_LEFT = Goble.readSwitchLeft();

buttonState SWITCH_RIGHT = Goble.readSwitchRight();

buttonState SWITCH_SELECT = Goble.readSwitchSelect();

buttonState SWITCH_START = Goble.readSwitchStart();

上述所有内容用于加载有关按钮状态的信息。

按钮的布局如下。

SWITCH_UP - 1 SWITCH_RIGHT - 2

SWITCH_DOWN - 3

SWITCH_LEFT - 4

SWITCH_SELECT - 5

SWITCH_START - 6

第14步:

我们需要在开始使用它们之前处理所有读取的数据。

在操纵杆上读取的值应映射到我们机器人车轮的转速。因此,车轮的转速在-255和255之间。

int SpeedX = 2 * joystickX-256;

int SpeedY = 2 * joystickY-256;

Serial.print(“速度:”);

Serial.print(SpeedX);

Serial.print(“”);

Serial.println(迅速);

串口也会输出速度。如果没有必要,您可以在开头添加“//”以将其删除。

现在让我们控制机器人并让它移动。

如果(向上移动操纵杆或向下移动(||)){机器人向前或向后移动; }

如果(向右移动操纵杆或向左移动(||)){机器人向右或向左移动}

如果(操纵杆的X轴保持在中心位置,并且操纵杆的(&&)Y轴保持在中心位置){机器人停止; }

通讯代码如下:

if(SpeedX> 200 || SpeedX <-200){LeftWheelSpeed = SpeedX; RightWheelSpeed = SpeedX; Robot.Speed(LeftWheelSpeed,RightWheelSpeed); }

否则if(SpeedY> 200 || SpeedY <-200){LeftWheelSpeed = SpeedY-80; RightWheelSpeed = SpeedY-80; Robot.Speed(LeftWheelSpeed,RightWheelSpeed);}

否则if(SpeedX == 0 && SpeedY == 0){Robot.Speed(0,0); }

最后一个代码用于控制连接到PIN13的电路板上的LED。

int ledPin = 13;

引脚13应该在代码的开头定义。

pinMode(ledPin,OUTPUT);

通过编写setup()功能设置LED的输出模式。请参阅Arduino网站(www.arduino.cc)上关于pinMode()功能的说明。

以下表达式显示按钮的状态。按下1号按钮后,LED将亮起。意味着LED引脚设置为高电平。

if(buttonState 1 == PRESSED){digitalWrite(ledPin,HIGH); }

一旦释放按钮No.1,LED将关闭。意味着LED引脚设置为低电平。

if(buttonState 1 == RELEASED){digitalWrite(ledPin,LOW); }

这就是今天编码的全部内容。不是很有趣吗?那么,为你编写代码并不是不可能的,对吧?您可以尝试通过修改代码来更改按钮来控制LED灯。当您可以使用代码控制它时,它肯定会更有趣。现在,开始与你的机器人玩得开心!