Arduino uno R3+ESP8266接入机智云实现手机控制机械臂和小车运动

        今天来总结一下一周实战项目的一个收获,先总结一下物联网的部分功能,后续再补充小车的其他功能话不多说,直接展示。下面是视频演示。

Arduino+ESP8266遥控小车-机械臂

        OK了老铁们,下面,我将详细地介绍一下这个项目的细节,其中,项目过程中所遇到的问题,以及解决方法,都会在其中提到,欢迎友友们指出我的不足,同时,有更好的解决方法,也欢迎大家在评论区讨论,感谢各位大佬们!

一、小车简介:

        本小车采用Arduino uno R3 主控板,在小车上搭载了物联网开发板-ESP8266 WIFI模块,L298N电机驱动模块,LM2596降压电源模块,超声波测距模块、OLED显示模块、减速直流电机,舵机,按键,能够实现小车的基本运动,控制机械臂的夹取,WIFI联网手机控制,按键切换小车模式,OLED显示模式内容等功能,本文重点介绍WIFI联网控制小车运动和机械臂夹取功能,后续会更新上述的其他功能,谢谢!

二、硬件准备:

名称数量
Arduino uno R31块
ESP8266 Node MCU 物联网模块1块
降压模块1块
电机驱动模块1块
直流电机4个
舵机4个
12V锂电池1个

三、接线图:

      
  小编在这个降压过程中,原本是用L7805CV稳成5V的供给Arduino,后来发现在接入四个舵机和接入电机驱动的时候,发现有时候轮子不转了,后来在查看Arduino uno R3的数据手册,发现建议供电是7V至12V,低于7V的话,会供电不足,这个时候,才想到使用降压模块,降成8.5V供给Arduino。这里因为舵机需要的VCC、GND比较多,我把Arduino的5v、3.3V、GND多接出一排为后续做准备。

四、机智云创建:

①创建机智云账号,同时,点击创建新产品,选择玩具娱乐、遥控车方案。并给方案命名,其余保持默认选项即可。

②、编辑数据点、小车前进、后退、左转、右转,采用可写的布尔值。底座、右臂、左臂、夹子,采用可写的数值,这里的数值范围,根据机械臂每个部位可运动的大小而定。

③选择MCU开发、复制Product Secret,然后下载代码包。

④下载好的代码包,解压之后,把里面的Gizwits文件夹,复制到Arduino的library位置,小编的位置如下:这里如果下载新版的IDE的小伙伴,就需要找到自己安装的library的位置啦,小编是老版本的IDE。

⑤给无线WIFI模块烧录机智云开发的GAgent固件,烧录之后,可以使用机智云的串口调试助手,调试WIFI模块,这里的烧录固件,和调试使用都可以在机智云官网查找,如果找不到方法,或者烧录不成功,可以滴滴小编,小编快马加鞭,再出一次教程给到大家。

⑥把WIFI模块配置好了之后,调试成功,绑定之后,WIFI模块上电之后,我们就可以在机智云APP的界面上,看到我们的方案名称,我们的简易的控制界面就创建成功啦!

五、Arduino代码编写:

①首先打开我们机智云生成的Gizwits文件夹里面examples中的simpleTry文件作为模板:

②编写小车运动代码,PWM调速,uno开发板的数字引脚中,有“~”的I/O(3、5、6、9、10、11)口表示有PWM调速功能,这里选择6、5分别连接L298N的ENA、ENB使能端进行PWM调速。

void motorRun(int m,int v)
 {
  analogWrite(leftPWM,v);
  analogWrite(rightPWM,v);
  switch(m)
  {
    case FORWARD://左、右两个电机均正转
    //Serial.println("FORWARD");
    digitalWrite(leftmotor1,LOW);
    digitalWrite(leftmotor2,HIGH);
    digitalWrite(rightmotor1,LOW);
    digitalWrite(rightmotor2,HIGH);
    break;
 
    case BACKWARD://左、右两个电机均反转
    //Serial.println("BACKWARD");
    digitalWrite(leftmotor1,HIGH);
    digitalWrite(leftmotor2,LOW);
    digitalWrite(rightmotor1,HIGH);
    digitalWrite(rightmotor2,LOW);
    break;
 
    case TURNLEFT://左边两个电机反转、右边两个电机正转
    //Serial.println("TURNLEFT");
    digitalWrite(leftmotor1,HIGH);
    digitalWrite(leftmotor2,LOW);
    digitalWrite(rightmotor1,LOW);
    digitalWrite(rightmotor2,HIGH);
    break;
 
    case TURNRIGHT://左边两个电机正转、右边两个电机反转
    //Serial.println("TURNRIGHT");
    digitalWrite(leftmotor1,LOW);
    digitalWrite(leftmotor2,HIGH);
    digitalWrite(rightmotor1,HIGH);
    digitalWrite(rightmotor2,LOW);
    break;
 
    default://四个电机都停止转动
    //Serial.println("STOP");
    digitalWrite(leftmotor1,LOW);
    digitalWrite(leftmotor2,LOW);
    digitalWrite(rightmotor1,LOW);
    digitalWrite(rightmotor2,LOW);
 
    }
  }

③检测手机端相应按键控制,并执行相应的小车运动,由于数字 I/O口输出范围为0~255,若输出x,则电机的输入电压为(x/255*5)V,这里将6、5接口的输出设置为100,这样小车运动的速度适中。

    if(varR_FORWARD==1)
  {
    motorRun(FORWARD,100);   // 前进
  }
  else if(varR_BACKWARD==1)
  {
    motorRun(BACKWARD,100);   // 后退
  }
  else if(varR_TURNLEFT==1)
  {
    motorRun(TURNLEFT,100);   // 左转
  }
  else if(varR_TURNRIGHT==1)
  {
    motorRun(TURNRIGHT,100);   // 右转
  }
  else 
  {
    motorRun(STOP,0);   // 前进
  }

④机械臂运动代码,这里的舵机模块可以通过指令控制舵机转动的角度,此机械臂使用的是180°舵机。我采用的是,先调试舵机,使其90°的位置是我们机械臂静置时的位置,根据不同部分活动范围的不同,在机智云创建过程中,我们就设置好具体的范围,上面有给出,这里,当手机端给出不同的角度时,舵机会做出相应的变动。

 if(myGizwits.hasBeenSet(EVENT_pos0))
  {
    myGizwits.read(EVENT_pos0,&varR_pos0);//Address for storing data
  }

  if(myGizwits.hasBeenSet(EVENT_pos1))
  {
    myGizwits.read(EVENT_pos1,&varR_pos1);//Address for storing data
  }
  
  if(myGizwits.hasBeenSet(EVENT_pos2))
  {
    myGizwits.read(EVENT_pos2,&varR_pos2);//Address for storing data
  }
  
  if(myGizwits.hasBeenSet(EVENT_pos3))
  {
    myGizwits.read(EVENT_pos3,&varR_pos3);//Address for storing data
  }

  myservo0.write(varR_pos0);
  myservo1.write(varR_pos1);
  myservo2.write(varR_pos2);
  myservo3.write(varR_pos3);

六、总结一下,基本实现了手机遥控小车和机械臂运动,本文写得有不对的地方,欢迎大家指出,同时,大家有更好的想法,也欢迎大家一起讨论!需要源码的可以私信小编,欢迎大家私信小编讨论!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值