Burn-E PaperCraft Robot

by ahmedazouz in Circuits > Arduino

5655 Views, 48 Favorites, 0 Comments

Burn-E PaperCraft Robot

IMG_20171227_204724.jpg
Paper Craft Arduino Robot Burn-E  (Part 1)

I am a software developer. I have read a lot about the field of robotics then I decided to enter into this interesting world.

Appeared in my mind a question Why did not make a robot to do some cool staff? then I have already started to learn programming of electrical circuits, and annexd to the talent in making paper craft models.

Robot Head

IMG_20171127_204022.jpg
IMG_20171125_215248.jpg
IMG_20171127_190427.jpg
IMG_20171127_204045.jpg

First step (The IDEA):

I used this paper craft model form paper-replika : Download the paper model from here

And I saw that, when I place the electronics parts inside the model and Make the MAQUETTE Alive, I think it will be cool Idea.

* I fold the Model Head then I put Ultrasonic sensor Inside, Instead of the robot's eyes.

Testing the Sensors

IMG_20171127_230839.jpg
IMG_20171129_213429.jpg

Testing the sensors after placing it inside the head.

I used an Arduino Uno and an ultrasonic sensor to make the robot measure the distance.

For example, if the object is 10 cm away from the sensor, and the speed of the sound is 340 m/s or 0.034 cm/µs the sound wave will need to travel about 294 u seconds. But what you will get from the Echo pin will be double that number because the sound wave needs to travel forward and bounce backward. So in order to get the distance in cm we need to multiply the received travel time value from the echo pin by 0.034 and divide it by 2.

Here is full tutorial how to use ultrasonic sensors : https://www.arduino.cc/en/Tutorial/Ping

Body Mechanism

IMG_20171129_192019.jpg
IMG_20171129_221146.jpg
IMG_20171206_224826.jpg

To make the robot more realistic, I put three servo motors inside the body to control the movement of the head and arms.

Have a look what is servo motor and what its able to do :

https://www.arduino.cc/en/Reference/Servo

Robot Arms

IMG_20171206_224945.jpg
download (1).jpg
Paper Craft Arduino Robot Burn-E (Part 2)

The Robot still miss two arms :) So I installed the structure of the Arm paper model as shown then I placed the servo gear inside it, so as to easily control them.

Circuit

0CIR.jpg
circuit.jpg

The Circuit is very simple and its contents of:

1 Arduino Uno R3

1 Red LED 3 Micro Servo

1 Piezo

1 Ultrasonic Distance Sensor

1 150 ohm Resistor

1 Green LED

1 Slideswitch

1 Temperature Sensor [TMP36]

Testing & Code

Burn-E  Arduino Robot testing radar mode

update:

I've created multi moods for this robot, in this video I will show you how it works..

In this video the robot must be connected to PC via USB cable and I've build a graphical radar screen to show the objects that placed in the range of head sensors.

#include Servo.h

Servo Hservo,Rservo,Lservo; // create servo object to control a servo

// defines pins numbers const int trigPin = 6; const int echoPin = 7; int piezoPin = 11; int led = 13; const int temperaturePin = 0;

// defines variables long duration; int distance,val;

void setup() {

pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output pinMode(echoPin, INPUT); // Sets the echoPin as an Input pinMode(led, OUTPUT);

Serial.begin(9600); // Starts the serial communication

Rservo.attach(8); // right arm servo Hservo.attach(9); // head servo Lservo.attach(10); // left arm servo } void loop() {

float voltage, degreesC; voltage = getVoltage(temperaturePin); degreesC = (voltage - 0.5) * 100.0; // Clears the trigPin digitalWrite(trigPin, LOW); delayMicroseconds(2); // Sets the trigPin on HIGH state for 10 micro seconds digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Reads the echoPin, returns the sound wave travel time in microseconds duration = pulseIn(echoPin, HIGH); // Calculating the distance distance= duration*0.034/2; delay(50);

if (distance < 10) // { // Prints the distance on the Serial Monitor Serial.print("Distance: "); Serial.println(distance); // print the currnet distance on serial port tone(piezoPin, 1000, 500); // this will alarm the sound every time distance digitalWrite(led, HIGH); delay(1000); // wait 1 1second } else { noTone(piezoPin); digitalWrite(led, LOW); delay(50); }

if(Serial.available()) { String value = Serial.readStringUntil('\n'); // read the string from serial window Serial.println(value); if(value == "left") { Hservo.write(80); // moving the head little left delay(15); Lservo.write(60); // left arm up delay(15); Rservo.write(20); // right arm down delay(15); } else if(value == "right") { Hservo.write(40); // moving the head little right delay(15); Lservo.write(20); // left arm down delay(15); Rservo.write(60); // right arm up delay(15); } else if(value == "temp") { Serial.print("voltage: "); // print temperature Serial.print(voltage); Serial.print(" deg C: "); } } }

float getVoltage(int pin) { // point value, which is the true voltage on that pin (0 to 5V). return (analogRead(pin) * 0.004882814); }