0% found this document useful (0 votes)
10 views28 pages

Sriharsh and Sathwik 1

Uploaded by

clababhyasa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views28 pages

Sriharsh and Sathwik 1

Uploaded by

clababhyasa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 28

ROBOTIC SATHWIK MANKALA AND

COMPETION SRIHARSH KOLA


INDEX
•Introduction
•Materials and Tools Required
•Robot Design
•Building the Base and Wheel
Assembly
•Building the Extendable Arm and
Gripper
•Wiring and Electronics Setup
•Programming the Robot
•Smartphone Control Implementation
•Testing and Calibration
•Final Adjustments and Optimization
•Safety Considerations
INTRODUCTION
in this guide, we will build a compact
robot capable of omnidirectional
movement, extendable arms, and a
versatile gripper. This robot will be
controlled via a smartphone
application.
Materials and Tools Required
Materials:
•Microcontroller: Arduino Nano or Raspberry Pi Zero
•Motors: 4x N20 DC motors with encoders
•Wheels: 4x Mecanum wheels (40mm size)
•Servos: 3x SG90 micro servos (for arm and gripper)
•Sensors: MPU6050 (IMU), HC-SR04 (proximity sensor), FSR (force sensor)
•Power Supply: 7.4V LiPo battery pack
•Chassis: 3D-printed parts or custom-cut acrylic/metal parts
•Miscellaneous: Jumper wires, connectors, screws, nuts, etc.
Robot Design
Building the Base and Wheel
Assembly

Assemble the Chassis:


 Cut or 3D print the base according to your design.
 Secure the motors to the base using screws and nuts.
 Attach the Mecanum wheels to the motor shafts.

Mount the Microcontroller:


 Secure the Arduino Nano or Raspberry Pi Zero to the base.
 Ensure all necessary ports and pins are accessible.

Install the Battery Pack:


 Place the battery pack in a secure location on the base.
 Ensure it’s easily removable for charging.
Building the Extendable Arm and
Gripper

Assemble the Arm:


 Construct the telescoping sections or folding mechanism.
 Attach the arm servos at the joints to control extension and retraction.

Attach the Gripper:


 Secure the gripper to the end of the arm.
 Ensure the gripper can open and close smoothly using the servo.

Integrate Force Sensors:


 Attach force sensors to the gripper to adjust grip force based on feedback.
Robot Design

Base Design
The base will house the microcontroller, motors, wheels, battery
pack, and sensors. The size should be within 8.5 x 11 inches.
Arm Design
The extendable arm will use telescoping sections or folding
mechanisms to increase its reach. The arm will be controlled by
servos.
Gripper Design
The gripper will use flexible fingers to hold various objects securely.
Force sensors will help adjust the grip.
Wiring and Electronics
Setup
Connect Motors to Microcontroller:
 Connect the motor driver to the microcontroller.
 Wire the motors to the motor driver outputs.

Wire the Servos:


 Connect the arm and gripper servos to the appropriate PWM pins on the
microcontroller.

Sensor Connections:
 Connect the MPU6050 to the I2C pins.
 Wire the proximity sensor to the digital input pins.
 Connect the force sensors to the analog input pins.

Power Connections:
 Connect the battery pack to the power inputs on the microcontroller and motor driver.
Programming the Robot

#include <Servo.h>
#include <Wire.h>
#include "MPU6050.h"

MPU6050 mpu;

// Define servos
Servo armServo1;
Servo armServo2;
Servo gripperServo;

// Define pins
const int armServo1Pin = 9;
const int armServo2Pin = 10;
const int gripperPin = 11;
const int forceSensorPin = A0;
const int motorPins[] = {3, 5, 6, 9};

void setup() {
Wire.begin();
mpu.initialize();
armServo1.attach(armServo1Pin);
armServo2.attach(armServo2Pin);
gripperServo.attach(gripperPin);
for (int i = 0; i < 4; i++) {
pinMode(motorPins[i], OUTPUT);
}
Serial.begin(9600);
}

void loop() {
// Read IMU data
int16_t ax, ay, az;
mpu.getAcceleration(&ax, &ay, &az);
float tiltAngle = atan2(ay, az) * 180 / PI;
int forceValue = analogRead(forceSensorPin);
int gripperPosition = map(forceValue, 0, 1023, 0, 180);
gripperServo.write(gripperPosition);

// Example arm movement sequence


armServo1.write(45);
armServo2.write(45);
gripperServo.write(0);
delay(1000);
gripperServo.write(gripperPosition);
delay(1000);
armServo1.write(0);
armServo2.write(0);
delay(1000);
gripperServo.write(0);
delay(1000);
}

void move(int direction, int speed) {


int motorSpeeds[4];
switch (direction) {
case 0: // Forward
motorSpeeds[0] = speed;
motorSpeeds[1] = speed;
motorSpeeds[2] = speed;
motorSpeeds[3] = speed;
break;
case 1: // Backward
motorSpeeds[0] = -speed;
motorSpeeds[1] = -speed;
motorSpeeds[2] = -speed;
motorSpeeds[3] = -speed;
break;
case 2: // Left
motorSpeeds[0] = -speed;
motorSpeeds[1] = speed;
motorSpeeds[2] = speed;
motorSpeeds[3] = -speed;
break;
case 3: // Right
motorSpeeds[0] = speed;
motorSpeeds[1] = -speed;
motorSpeeds[2] = -speed;
motorSpeeds[3] = speed;
break;
}
for (int i = 0; i < 4; i++) {
analogWrite(motorPins[i], motorSpeeds[i]);
}
}

You might also like