Introduction: Micro Sumo

Micro Sumo is a small robot of the dimensions that can be used in a micro Sumo contest

You can also customize the Micro Sumo order to abtain something else for example special character robot, attach a pencil on the back of the Micro Sumo and you have a Draw Robot

Step 1:

As preparation I have some parts drawn with sketchup and print with my Prusa i3

Step 2:

As a first step, I saw a square of a euro experiment board of + - 38 mm (equivalent to 14 holes)

I use two motors from a discarded 9g servo, but the motors are still good

Then place the Board in the Mal

Take a Motor and place it in the corner and at the Mal

Solder now quickly the Motor to the Board, soldering as quickly as possible in order not to cause damage to the Motor

Take the second Motor and do the same as the first but in the other corner

Now remove the Mal
The motors are now precisely on the circuit board

Step 3:

Now comes the interesting part

On the first picture you can see where the components are soldered honors

2x 2N2222A Transistor

2x1N4007 Diode

3x1K Resistor

2xPhototransistoren or LDR

2x10K Resistor

1xRode Led

1xATtiny85 Microcomputer

Place all the components on the circuit board

Look closely at the polarity of the components

I have the components separate the sensors from the front and drive behind

There is also a mirror image of the circuit board, this have I done that you can better see if everything is set correctly

Step 4:

ATtiny Inputs & Outputs

Both models need only a supply voltage and no external components to function!

The remaining six pins can be used as inputs and outputs.

Advice to use only five because pin 1, which is a Reset pin but can be programmed once. The ATtiny to program thousands of times as long as you do not programmmerd the Reset pin.

This is in fact necessary for reprogramming.

ATtiny versions

They are available in 10MHz and 20MHz versions.

Full size (PDIP) and SMD (SOIC).

The input voltage varies by model 1,8Volt or 2,7Volt with a maximum of 5,5Volt.

ATtiny programming with the Arduino

The ATtiny can be programmed by using your Arduino.

Be the ATtiny with the same C ++ code work.

You have to put the Arduino into an ISP mode so that the program stopped going to work.

Supported commands are:

• pinMode ()

• Digital write ()

• digital read ()

• analog read ()

• analog write ()

• SHIFTOUT ()

• pulseIn ()

• millis ()

• micros ()

• Delay ()

• Delay microsecond ()

Present necessities in order to use the programmer

Hardware

• Arduino Uno or Arduino duemilanoveHardware

• ATtiny program held hardware

• ATtiny 45 or ATtiny 85Software

• Arduino IDE version 0023 or newer software

• ATtiny45_85 plug-in Arduino plug-in installed

Download the plugin attiny45_85

Unzip the zip file

Copy the folder to attiny45_85 arduino-0023 / hardware /

Programming the Arduino so that he will support the programmer-shield

Start the Arduino IDE 0023 software

Connect the Arduino without the programmer-shield

Go into the Arduino software to File -> Examples -> ArduinoISP

Upload program the code that appears in the image ATtiny

Place the shield with the ATtiny 45 or 85 ATtiny it.

The Arduino can just keep coupled to the USB port

If the shield is well built, the green LED should slowly and gradually go out

Click on File -> New and paste the following code in the window:

# define ledPin 4

void setup(){

pinMode(ledPin, OUTPUT);

}

void loop(){

digitalWrite(ledPin, HIGH);

delay(300);

digitalWrite(ledPin, LOW);

delay(300); }

Click Tools -> Board -> ATtiny45 (w / Arduino as ISP) OR ATtiny85 (w / Arduino as ISP)

Now upload the code

If all goes well then fire the upper green led during programming, then flashes the red LED.

You have just programmed the ATtiny.

Step 5:

This is a simple line follower program

int leftInput=3;

int rightInput=2;

int leftMotor=1;

int rightMotor=0;

int leftValue = 0;

int rightValue = 0;

void setup(){

//Serial.begin(9600);

pinMode (leftMotor, OUTPUT);

pinMode (rightMotor, OUTPUT);

}

void loop(){

leftValue = digitalRead(leftInput);

rightValue= digitalRead(rightInput);

if ( leftValue ==HIGH && rightValue ==HIGH)

{

digitalWrite (leftMotor, HIGH); digitalWrite (rightMotor, HIGH);

} else {

if ( leftValue==LOW && rightValue==HIGH)

{

digitalWrite (leftMotor, LOW); digitalWrite (rightMotor, HIGH);

} else {

if (leftValue==HIGH && rightValue==LOW)

{

digitalWrite (rightMotor, LOW);

digitalWrite (leftMotor, HIGH);

} else {

if (leftValue ==LOW && rightValue ==LOW)

{

digitalWrite (rightMotor, LOW);

digitalWrite (leftMotor, LOW);

}}

}

}}