物联网机械臂小车-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8400|回复: 2

[项目] 物联网机械臂小车

[复制链接]
发表于 2017-10-5 10:37 | 显示全部楼层 |阅读模式
本帖最后由 国产招财猫 于 2017-10-26 22:42 编辑

参赛项目:
物联网机械臂小车

参赛组员:
1人
国产招财猫
大一电子爱好者,入门Arduino半年

项目简介:
本项目结合乐高积木和Arduino编程,利用乐高积木搭建机械臂,配合Arduino编程,使用户可以通过在手机上或者电脑上远程控制小车的自由移动和机械臂的夹持功能,从而实现远程移动物体的功能。


预计完成时间:
预计10月初

联系方式:
331245059@qq.com

以下为项目更新内容
参赛作品:物联网机械臂小车
原件:
Rosbot主控板
                                             
KittenBot WiFi模块
车体(带直流减速电机)
少许乐高积木
舵机
2节18650(+电池座)+DC电源插头

功能:
结合乐高积木和KittenBot的主控板和WiFi模块,通过手机端下载官方的KittenbotApp控制小车运动(电脑端需下载模拟器)
KittenbotAPP下载地址:http://cdn.kittenbot.cn/KittenbotApp_v1.52.apk

制作:
先利用积木搭建出机械爪形状,靠舵机拉动实现抓取功能

再将整体固定到车体上(只买了舵机,整个乐高的机械爪加舵机有点重,利用舵机带不动,所以就直接粘在车体上了……)
(制作成臂状可以通过ServoFunction创建多个Servo,不过要用扭矩更大的来实现关节功能)
整体
(局部插线)

源码:
(因Servo库中使用舵机功能与使用的9,10脚的轮子功能有冲突,所以不能使用Servo库)
car.ino
[mw_shl_code=bash,true]#include "Motor.h"
#include "ServoFunction.h"
Motor myMotor(5, 6, 9, 10);
ServoFunction myServo(11);
int pos = 40;
int x, y;
bool servoFlag = false, catchFlag = false;
void setup (){
  Serial.begin(115200);
  Serial.println("Begin");
  delay(1000);
}
void loop (){
   while (Serial.available()){
    if (Serial.read() == 'M'){
        int temp = Serial.parseInt();
        if (temp == 201){
          Serial.findUntil(" ", '\n');
          y = Serial.parseInt();
          Serial.findUntil(" ", '\n');
          x = Serial.parseInt();
          while (Serial.read() != '\n');
          if (!myMotor.move(y, x))
              servoFlag = true;
        }
    }
  }
  serialEvent();
}
void serialEvent(){
  if (!servoFlag) return;
  if (Serial.available()) return;
  servoFlag = !servoFlag;
  myMotor.stop();
  if (catchFlag){
    catchFlag = !catchFlag;
    for (pos = 40; pos >= 0; pos -= 5) {
      myServo.turn(pos);
      delay(15);
    }
  }
  else{
    catchFlag = !catchFlag;
    for (pos = 0; pos <= 40; pos += 5) {
      myServo.turn(pos);              
      delay(15);                     
    }
  }
}[/mw_shl_code]
Motor.cpp
[mw_shl_code=cpp,true]#include "Motor.h"
#include <Arduino.h>

Motor::Motor(char pin1, char pin2, char pin3, char pin4):
  M1pinF(pin1), M1pinB(pin2), M2pinF(pin3), M2pinB(pin4)
{
        motorInit();
}

Motor::~Motor(){
}

void Motor::motorInit(){
  pinMode(M1pinF, OUTPUT);
  pinMode(M1pinB, OUTPUT);
  pinMode(M2pinF, OUTPUT);
  pinMode(M2pinB, OUTPUT);
  stop();
}

bool Motor::move(char y, char x){
  if (y < 30 && y > -30) return false;
  int M1pwm, M2pwm;
  if (x != 50 && x != -50){
    M1pwm = M2pwm = y > 0 ? y + 120 : y - 120;
  }
  else if (x == 50){
    M1pwm = 255;
    M2pwm = -255;
  }
  else{
    M1pwm = -255;
    M2pwm = 255;
  }
  motorMove(M1pwm, M2pwm);
  return true;
}

void Motor::stop(){
    digitalWrite(M1pinF, LOW);
    digitalWrite(M1pinB, LOW);
    digitalWrite(M2pinF, LOW);
    digitalWrite(M2pinB, LOW);
}

void Motor::motorMove(int M1pwm, int M2pwm){
    motorFunction(M2pinF, M2pinB, M2pwm);
  motorFunction(M1pinF, M1pinB, M1pwm);

}

void Motor::motorFunction(char pinF, char pinB, int pwm){
  if (pwm == 0) {
    digitalWrite(pinF, LOW);
    digitalWrite(pinB, LOW);
    return;
  }
  if (pwm > 0){
    analogWrite(pinF, pwm);
    digitalWrite(pinB, LOW);
  }
  else {
    analogWrite(pinB, -pwm);
    digitalWrite(pinF, LOW);
  }
}[/mw_shl_code]
ServoFunction.cpp
[mw_shl_code=bash,true]#include "ServoFunction.h"
#include <Arduino.h>

ServoFunction::ServoFunction(int servoPin) : servoPin(servoPin) {
  pinMode(servoPin, OUTPUT);
}

ServoFunction::~ServoFunction(){
}

void ServoFunction::turn(int angle){
  for(int i=0;i<50;i++){
    int pulsewidth = (angle * 11) + 500;
    digitalWrite(servoPin, HIGH);
    delayMicroseconds(pulsewidth);
    digitalWrite(servoPin, LOW);
    delayMicroseconds(20000 - pulsewidth);  
  }
}
[/mw_shl_code]

演示视频:
视频链接:http://v.youku.com/v_show/id_XMzA2NTIzODkxMg==.html?spm=a2h0k.8191407.0.0&from=s1.8-1-1.2


源码压缩包:
car.rar (1.8 KB, 下载次数: 30)
舵机.png

车体

车体

RosBot

RosBot

WiFi

WiFi
整体.png
固定.png
爪2.png
爪.png
积木.png
局部插线.png
发表于 2018-3-25 19:31 | 显示全部楼层
66666666666
发表于 2019-3-29 19:51 | 显示全部楼层
如果换成Arduino板子的话,还能用这WiFi模块吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 02:55 , Processed in 0.222840 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表