机器谱 发表于 2023-1-5 09:26:04

WiFi遥控履带机械臂小车搬运功能的实现

本帖最后由 机器谱 于 2023-1-5 09:26 编辑

1. 功能描述本文提供的示例所实现的功能为:用手机APP,通过WiFi通信遥控样机实现移动和搬运。

2. 电子硬件在这个示例中,采用了以下硬件,请大家参考:

主控板Basra(兼容Arduino Uno)
扩展板Bigfish2.1
电池7.4V锂电池
通信WiFi无线路由器
2510通信转接板


       本部分及后面的APP设置内容,可与如何使用探索者通信模块-WiFi无线路由器【https://www.robotway.com/h-col-141.html】一文对照阅读。
       为斜三角履带底盘样机【https://www.robotway.com/h-col-125.html】安装WiFi无线路由器和摄像头。
硬件连接步骤:(1)在2510通信转接板的4针接口上,按如图方式插上3根杜邦线。

(2)杜邦线的另一端插接在WiFi模块的串口针上。

(3)连接USB线。


(4)将整套装置固定在样机上(注意:图中贴有黄色便条的MEGA2560主控板部分与本文所述功能无关,请忽略)。


3. 示例程序编程环境:Arduino 1.8.19手机APP的键值按上述规则进行配置,然后单片机接收到不同的信息,对应执行不同的动作。
例程代码(Rescue_Robot_Clear.ino)如下:/*********************************************************************

版权说明:Copyright 2022 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.

         Distributed under MIT license.See file LICENSE for detail or copy at

         https://opensource.org/licenses/MIT

         by 机器谱 2022-9-28 https://www.robotway.com/

************************* wifi protocol ****************************

* ff 00 xx 00 ff Controlled robot motion,xx :00 ~ 04

xx: 00:Stop

01:Forward

02:Backword

03:Left

04:Right

* ff 02 01 xx ff

left speed slider, adjust speed, xx : 0 ~ 10

* ff 02 02 xx ff

right speed slider, operate panel, xx : 0 ~ 10


参考:WIFI机器人网·机器人创意工作室上位机与下位机通信协议(V1.1版)

http://www.wifi-robots.com/thread-7051-1-1.html


*************************** main process *****************************

__________________________

|                        \

start - wait mode - infrared start - automode 60s

\   \                     |

\ ------------------ wifi mode - wait 10s

\____________________________________|

*************************** servo motor ******************************


            引脚   角度

机械手爪   D3    打开:90 夹取:60

机械手臂   D4    抬起:90 放下:60


注:上述舵机角度为本套程序使用的,可根据需求修改。 ********************************************************************/


#include <Servo.h>


Servo servoX;

Servo servoY;


bool dataComplete;

bool isPanelOpen;

bool isPanelDown;


int ServoMotorOpenD3 = 90; //舵机角度

int ServoMotorCloseD3 = 60;

int ServoMotorUpD4 = 90;

int ServoMotorDownD4 = 60;


int moveDirection; // 1-forward, 2-backward, 3-left, 4-right, 5-stop


int inputData; //data from wifi


int GripperDireciton; // 0 - close, 10 - open

int DownDireciton; // 0 - Down, 10 - Up


void setup()

{

Serial.begin(9600);


servoX.attach(3);

servoY.attach(4);


isPanelOpen = false;

isPanelDown = false;


GripperDireciton = 10;

DownDireciton = 10;

}


void loop()

{

WiFi_Rescue_Robot();

}

void WiFi_Rescue_Robot()

{

WifiControl();

Move(moveDirection);

}


void WifiControl()

{

//control by wifi

if (dataComplete) //接收完 WiFi 数据后

{

//operate wheel

if(inputData == 0x00)

{

if(inputData != moveDirection)

{

moveDirection = inputData;

}

}

//speed slider

else if(inputData == 0x02)

{

//adjust speed

if(inputData == 0x01)

{

if(inputData != DownDireciton)

{

DownDireciton = inputData;

if(DownDireciton == 0 && !isPanelDown)

{

servoY.write(ServoMotorDownD4);

isPanelDown = true;

}

else if(DownDireciton == 10 && isPanelDown)

{

servoY.write(ServoMotorUpD4);

isPanelDown = false;

}

}

}

//operate panel

else if(inputData == 0x02)

{

if(inputData != GripperDireciton)

{

GripperDireciton = inputData;

if(GripperDireciton == 0 && !isPanelOpen)

{

servoX.write(ServoMotorCloseD3);

isPanelOpen = true;

}

else if(GripperDireciton == 10 && isPanelOpen)

{

servoX.write(ServoMotorOpenD3);

isPanelOpen = false;

}

}

}

}

}

}


void serialEvent()

{

static int i;

static boolean revStart;

while (Serial.available())

{

//get data from wifi

int inData = Serial.read();

if (inData == 0xff && !revStart)

{

             revStart = true;

}

else if(revStart)

{

inputData = inData;

i++;

if(i > 3)

{

if(inputData == 0xff)

{

dataComplete = true;

i = 0;

revStart = false;

}

else

{

i = 0;

revStart = false;

}

}

}

}

}


void Move(int direction)

{

switch (direction)

{

case 0x01:MoveForward();break;

case 0x02:MoveBackward();break;

case 0x03:MoveLeft();break;

case 0x04:MoveRight();break;

case 0x05:MoveStop();break;

default:MoveStop();break;

}

}


void MoveForward()

{

//motor_0 clockwise

digitalWrite(5, LOW);

digitalWrite(6, HIGH);

//motor_1 clockwise

digitalWrite(9, LOW);

digitalWrite(10, HIGH);

}


void MoveBackward()

{

//motor_0 clockwise

digitalWrite(5, HIGH);

digitalWrite(6, LOW);

//motor_1 clockwise

digitalWrite(9, HIGH);

digitalWrite(10, LOW);

}

void MoveRight()

{

//motor_0 clockwise

digitalWrite(5, HIGH);

digitalWrite(6, LOW);

//motor_1 clockwise

digitalWrite(9, LOW);

digitalWrite(10, HIGH);

}


void MoveLeft()

{

//motor_0 clockwise

digitalWrite(5, LOW);

digitalWrite(6, HIGH);

//motor_1 clockwise

digitalWrite(9, HIGH);

digitalWrite(10, LOW);

}


void MoveStop()

{

//motor_0 clockwise

digitalWrite(5, HIGH);

digitalWrite(6, HIGH);

//motor_1 clockwise

digitalWrite(9, HIGH);

digitalWrite(10, HIGH);

}
4. 安卓手机APP设置及操作(1)安装WIFIRobot.apk到安卓手机内。(2)打开主控板的开关启动设备,并使用手机连接GL-AR150-xxx(xxx为随机数字与字母)密码:goodlife

(3)打开“WIFIROBOTS”APP。

(4)选择设置(以V1.06版界面为例,你也可以安装其他版本,设置方法相同)



(5)按照下图所示进行参数配置,点击确定


(6)点击前后左右可以控制救援机器人运动,如下图。

(7)点击速度调整可以打开调整面板,如下图

(8)滑动写有左侧速度的控件,将其调整为0,可以控制清障手臂向下运动,如下图。


(9)将左侧速度的控件,调整为10,可以控制清障手臂向上运动,如下图。


(10)将右侧速度的控件,调整为0,可以控制清障手臂夹取障碍物,如下图。

(11)将右侧速度的控件,调整为10,可以控制清障手臂松开障碍物,如下图。



5. 资料下载​资料内容:
​①样机-WiFi遥控搬运-例程
​②WiFi无线路由器-安卓APK文件
​资料下载地址:https://www.robotway.com/h-col-155.html


页: [1]
查看完整版本: WiFi遥控履带机械臂小车搬运功能的实现