在本文中,我们将通过手机的G传感器控制机器人小车,您只需倾斜手机即可移动机器人。我们还将针对此G传感器控制的机器人使用Arduino和RemoteXY应用程序。RemoteXY应用程序用于在智能手机中创建用于控制机器人的界面。我们将在界面中添加操纵杆,以便可以通过操纵杆以及倾斜手机来控制机器人。
G传感器或重力传感器基本上是智能手机中的加速度计,用于控制手机的屏幕方向。加速度计可感应重力的X,Y,Z方向,并根据手机的对齐方式旋转屏幕。如今,手机中使用了更加灵敏,准确的陀螺仪传感器来确定屏幕的方向。在我们的项目中,机器人汽车将根据手机倾斜的方向移动,例如当我们向前倾斜手机时,汽车将向前移动,而我们将其向下倾斜,然后汽车将向后移动。这就像我们在Mobile中玩一些汽车游戏时一样,它们也使用G传感器相应地移动汽车。最后查看视频,也可以在此处查看我们的其他机器人项目。
所需组件:
- 两轮机器人小车底盘
- Arduino UNO
- L298N电机控制器
- HC-06蓝牙模块(HC-05也会工作)
- 电源或电池
- 连接线
使用RemoteXY应用程序为机器人创建界面:
要创建使用RemoteXY应用程序控制机器人汽车的界面,您必须转到以下链接
remotexy.com/en/editor/该网页将如下所示
然后从屏幕左侧,拿起开关按钮和操纵杆,然后将其放在移动界面中。该按钮将打开内部连接在Arduino上的插针13处的灯,操纵杆将移动机器人汽车。放置开关和操纵杆后的网页将如下所示。
然后,我们必须将启用G传感器启用/禁用按钮与操纵杆一起放置,以便我们可以通过左右左右倾斜手机来移动机器人汽车。使用该按钮,我们可以启用和禁用G传感器,如果禁用了G传感器,则可以通过移动操纵杆来控制汽车。因此,要放置G传感器启用/禁用按钮,请单击您在界面中放置的操纵杆,在左侧将出现一个“属性”部分,最后会有一个选项将G传感器按钮放置在操纵杆附近,因此请将G传感器按钮放在您想要的任何位置。之后的网页将如下所示。
之后,单击“获取源代码”按钮并将其保存到计算机上。从这里下载库,并将其保存到Arduino库文件夹中。编译下载的代码以检查是否没有错误。这不是将运行机器人的代码,但将有助于在Arduino中使用该应用程序。从此处下载应用程序,或转到Play商店,然后从此处为您的Android智能手机下载RemoteXY应用程序。
电路图和说明:
首先,我们将L298N电机控制器与Arduino接口。将马达控制器的ENA和ENB引脚分别连接到Arduino的引脚12和11。这两个引脚用于电机的PWM控制。使用这些销,我们可以增加或减少汽车的速度。然后将IN1,IN2,IN3和IN4分别连接到Arduino引脚10、9、8和7。这些销将沿两个方向(顺时针和逆时针)旋转电动机。
要为电动机供电,请将电池的正极和负极分别连接至12V和电动机控制器的接地端。然后将5V和地面从电动机控制器连接到Arduino Vin和地面。
然后,我们将蓝牙模块HC-06与arduino连接。如果您有HC-05,那么它也将起作用。将VCC和蓝牙模块的接地连接到5V和Arduino的接地。然后将蓝牙模块的TX引脚连接到Arduino的引脚2,将RX引脚连接到Arduino的引脚3。还要检查使用Arduino的蓝牙控制玩具车,以了解有关将蓝牙与Arduino结合使用的更多信息。
代码说明:
下面的“代码”部分提供了此移动控制机器人车的完整Arduino代码,在这里我们将了解此代码的工作方式。
首先,我们包含了用于软件Serial和RemoteXY的库。RemoteXY库将帮助我们使用Arduino设置应用程序,通过它我们将控制机器人汽车。之后,我们定义了蓝牙模块的引脚,蓝牙模块的TX连接到Arduino的RX引脚的Arduino的引脚2,而蓝牙模块的RX连接到Arduino的引脚3。是Arduino的TX引脚,并将蓝牙模块的波特率设置为9600。
#define REMOTEXY_MODE__SOFTWARESERIAL #include
以下代码将增加或降低电动机速度。当操纵杆位于中间时,速度将为零,而当其处于前进方向时,速度将从零增加至100。当汽车向后行驶时,速度将从0减小至-100。反向。轿厢也可以按照特定速度移动,这可以通过提供PWM信号来完成。pwm信号将根据操纵杆的旋转提供给电动机。
如果(motor_speed> 100)motor_speed = 100; 如果(motor_speed <-100)motor_speed = -100; 如果(motor_speed> 0){digitalWrite(pointer,HIGH); digitalWrite(pointer,LOW); AnalogWrite(指针,电机速度* 2.55); }否则,如果(motor_speed <0){digitalWrite(pointer,LOW); digitalWrite(pointer,HIGH); AnalogWrite(指针,(-motor_speed)* 2.55); } else {digitalWrite(pointer,LOW); digitalWrite(pointer,LOW); AnalogWrite(pointer,0); }
在下面的代码中,我们定义了每当在应用程序中移动操纵杆时都会调用的函数。当我们打开应用程序中的开关时,逻辑1将分配给Arduino的引脚13,该引脚将打开LED引脚。在向前和向后移动机器人汽车时, 将调用 速度 功能。
void loop(){RemoteXY_Handler(); digitalWrite(ledpin,(RemoteXY.switch_1 == 0)?LOW:HIGH); 速度(first_motor,RemoteXY.joystick_1_y-RemoteXY.joystick_1_x); 速度(second_motor,RemoteXY.joystick_1_y + RemoteXY.joystick_1_x); }
如何运行:
将RemoteXY的库添加到Arduino库,并在Arduino IDE中上传代码。然后在手机中下载该应用程序,然后打开蓝牙。该应用程序的界面将如下所示
然后转到蓝牙并在那里打开蓝牙。开启后,它将显示蓝牙设备。从那里选择您的HC-06蓝牙模块,它将带您到可以控制机器人车的界面。
这就是我们可以使用手机内的重力传感器移动机器人的方式。您可以通过在它们之间连接一个Microcontorller(例如Arduino)来进一步实验并找到更有趣的G传感器用法来控制外部事物。