Project showcase

# Burn-E Paper Craft Robot © CERN-OHL

A moving robot works to calculate ambient objects and gives an alarm when it exceeds a certain limit; can be controlled by the computer.

• 2,472 views
• 16 respects

## Components and supplies

 Arduino UNO & Genuino UNO
×1
 Ultrasonic Sensor - HC-SR04 (Generic)
×1
 Servos (Tower Pro MG996R)
×3
 Buzzer
×1
 LED (generic)
×1
 Resistor 10k ohm
×1
 Slide Switch
×1
 Temperature Sensor
×1

## Apps and online services

 Arduino IDE

### Background

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

A question came to mind: why not make a robot to do some cool stuff? Then I have already started to learn how to program electrical circuits and annexed to this talent making paper craft models.

A moving robot works to calculate ambient objects and gives an alarm when it exceeds a certain limit and can be controlled by the computer.

### Step 1: (The IDEA)

And when I place the electronics parts inside the model and made the maquette alive.

*I fold the model head and then I put an ultrasonic sensor inside, instead of the robot's eyes.

### Step 2: Testing the Sensors

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 the full tutorial on how to use ultrasonic sensors: https://www.arduino.cc/en/Tutorial/Ping

### Step 3: Body Mechanism

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 at this servo motor and what it's able to do: https://www.arduino.cc/en/Reference/Servo

### Step 4: Robot Arms

The robot is still missing two arms. So I installed the structure of the arm paper model as shown then I placed the servo gear inside it, that way you can easily control them.

## Code

##### BurnE_Code.inoArduino
```// Includes the Servo library
#include <Servo.h>.
// Defines Tirg and Echo pins of the Ultrasonic Sensor
const int trigPin = 10;
const int echoPin = 11;
// Variables for the duration and the distance
long duration;
int distance;
Servo myServo; // Creates a servo object for controlling the servo motor
void setup() {
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
Serial.begin(9600);
myServo.attach(12); // Defines on which pin is the servo motor attached
}
void loop() {
// rotates the servo motor from 15 to 165 degrees
for(int i=15;i<=165;i++){
myServo.write(i);
delay(30);
distance = calculateDistance();// Calls a function for calculating the distance measured by the Ultrasonic sensor for each degree

Serial.print(i); // Sends the current degree into the Serial Port
Serial.print(","); // Sends addition character right next to the previous value needed later in the Processing IDE for indexing
Serial.print(distance); // Sends the distance value into the Serial Port
Serial.print("."); // Sends addition character right next to the previous value needed later in the Processing IDE for indexing
}
// Repeats the previous lines from 165 to 15 degrees
for(int i=165;i>15;i--){
myServo.write(i);
delay(30);
distance = calculateDistance();
Serial.print(i);
Serial.print(",");
Serial.print(distance);
Serial.print(".");
}
}
// Function for calculating the distance measured by the Ultrasonic sensor
int calculateDistance(){

digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH); // Reads the echoPin, returns the sound wave travel time in microseconds
distance= duration*0.034/2;
return distance;
}
```
```/*   Arduino Radar Project
*
*   Updated version. Fits any screen resolution!
*   Just change the values in the size() function,
*
*  by Dejan Nedelkovski,
*  www.HowToMechatronics.com
*
*/
import processing.serial.*; // imports library for serial communication
import java.awt.event.KeyEvent; // imports library for reading the data from the serial port
import java.io.IOException;
Serial myPort; // defines Object Serial
// defubes variables
String angle="";
String distance="";
String data="";
String noObject;
float pixsDistance;
int iAngle, iDistance;
int index1=0;
int index2=0;
PFont orcFont;
void setup() {

size (1920, 1080); // ***CHANGE THIS TO YOUR SCREEN RESOLUTION***
smooth();
myPort = new Serial(this,"COM4", 9600); // starts the serial communication
myPort.bufferUntil('.'); // reads the data from the serial port up to the character '.'. So actually it reads this: angle,distance.
}
void draw() {

fill(98,245,31);
textFont(orcFont);
// simulating motion blur and slow fade of the moving line
noStroke();
fill(0,4);
rect(0, 0, width, height-height*0.065);

fill(98,245,31); // green color
// calls the functions for drawing the radar
drawLine();
drawObject();
drawText();
}
void serialEvent (Serial myPort) { // starts reading data from the Serial Port
// reads the data from the Serial Port up to the character '.' and puts it into the String variable "data".
data = data.substring(0,data.length()-1);

index1 = data.indexOf(","); // find the character ',' and puts it into the variable "index1"
angle= data.substring(0, index1); // read the data from position "0" to position of the variable index1 or thats the value of the angle the Arduino Board sent into the Serial Port
distance= data.substring(index1+1, data.length()); // read the data from position "index1" to the end of the data pr thats the value of the distance

// converts the String variables into Integer
iAngle = int(angle);
iDistance = int(distance);
}
pushMatrix();
translate(width/2,height-height*0.074); // moves the starting coordinats to new location
noFill();
strokeWeight(2);
stroke(98,245,31);
// draws the arc lines
arc(0,0,(width-width*0.0625),(width-width*0.0625),PI,TWO_PI);
arc(0,0,(width-width*0.27),(width-width*0.27),PI,TWO_PI);
arc(0,0,(width-width*0.479),(width-width*0.479),PI,TWO_PI);
arc(0,0,(width-width*0.687),(width-width*0.687),PI,TWO_PI);
// draws the angle lines
line(-width/2,0,width/2,0);
popMatrix();
}
void drawObject() {
pushMatrix();
translate(width/2,height-height*0.074); // moves the starting coordinats to new location
strokeWeight(9);
stroke(255,10,10); // red color
pixsDistance = iDistance*((height-height*0.1666)*0.025); // covers the distance from the sensor from cm to pixels
// limiting the range to 40 cms
if(iDistance<40){
// draws the object according to the angle and the distance
}
popMatrix();
}
void drawLine() {
pushMatrix();
strokeWeight(9);
stroke(30,250,60);
translate(width/2,height-height*0.074); // moves the starting coordinats to new location
popMatrix();
}
void drawText() { // draws the texts on the screen

pushMatrix();
if(iDistance>40) {
noObject = "Out of Range";
}
else {
noObject = "In Range";
}
fill(0,0,0);
noStroke();
rect(0, height-height*0.0648, width, height);
fill(98,245,31);
textSize(25);

text("10cm",width-width*0.3854,height-height*0.0833);
text("20cm",width-width*0.281,height-height*0.0833);
text("30cm",width-width*0.177,height-height*0.0833);
text("40cm",width-width*0.0729,height-height*0.0833);
textSize(40);
text("Object: " + noObject, width-width*0.875, height-height*0.0277);
text("Angle: " + iAngle +" ", width-width*0.48, height-height*0.0277);
text("Distance: ", width-width*0.26, height-height*0.0277);
if(iDistance<40) {
text("        " + iDistance +" cm", width-width*0.225, height-height*0.0277);
}
textSize(25);
fill(98,245,60);
text("30",0,0);
resetMatrix();
text("60",0,0);
resetMatrix();
text("90",0,0);
resetMatrix();
text("120",0,0);
resetMatrix();
text("150",0,0);
popMatrix();
}
```

## Schematics

• 10 projects
• 88 followers

#### Published on

December 20, 2017

#### Members who respect this project

and 8 others

See similar projects
you might like

#### Tito - Arduino UNO 3D-printed robot

Project tutorial by Camilo Parra Palacio

• 16,643 views
• 47 respects

#### Mini Firefighter Robot

Project in progress by Alberto Ben

• 12,437 views
• 42 respects

#### Amazing 6WD Off-Road Robot | Arduino RC Robot

Project tutorial by Jithin Sanal

• 7,763 views
• 50 respects

#### Android Things Andy Robot Rasberry Pi3 And Arduino

Project showcase by Dwayne Hoang

• 2,627 views
• 7 respects

• 42,704 views