2017006500

Buy from US Buy from UK Buy from DE Buy from IT Buy from FR Buy from ES
amzus amzuk

I. Objective:

In this tutorial, we will use KOOKYE Smart DIY kit to make a simple program controlled smart car. Once the car installation is completed, we will use a UNO R3 board to control the car movements including go forward, go back, left turn and right turn.

II. How It Work:

Three Parts of Car Motor: DC motor,gear reducer and encoder.
There are 6 pin wires from encoder motor,two of them (red and black wires) come from the DC motor.
The pinout K1 or K2 and K3 or K4 on L298N board can be used for driving the left motor and right motor respectively.
The pinout ENA and ENB can be used to adjust the motor speed via input PWM signal.
The pinout N1,N2,N3 and N4 can be used to control the forward and backward direction of motor.

Motor(Left) Motor (Right)
ENA IN1 IN2 DC motor status ENB IN3 IN4 DC motor status
0 x x stop 0 x x stop
1 0 1 rotate clockwise 1 0 1 rotate clockwise
1 1 0 rotate counterclockwise 1 1 0 rotate counterclockwise
1 1 1 brake 1 1 1 brake
1 0 0 brake 1 0 0 brake

III. Software Installation:

Step 1: Install latest Arduino IDE (If you have Arduino IDE version after 1.1.16, please skip this step)
Download Arduino IDE from https://www.arduino.cc/en/Main/Software?setlang=en , then install the software.

Step 2:Download Lesson Two sample code from http://www.kookye.com/download/car/tank_robot_lesson3.zip , unzip the download zip file tank_robot_lesson2.zip, you will see a folder called tank_robot_lesson3.

Step 3: Connect UNO R3 board to PC with USB cable, Open Arduino IDE -> click file -> click Open -> choose code “smartcar-lesson2.ino” in tank_robot_lesson3 folder, load the code into arduino.

open

Step 4: Choose corresponding board and port for your project,upload the sketch to the board.

port

IV. Understanding the Code:

Part 1: Define the pinout as the table

#define IN1  8    //K1、K2 motor direction
#define IN2  9    //K1,K2 motor direction
#define IN3  10    //K3,K4 motor direction
#define IN4  12   //K3,K4 motor direction
#define ENA  5    //needs to be a PWM pin to be able to control motor speed ENA
#define ENB  6   //needs to be a PWM pin to be able to control motor speed ENB

Part 2: Understand the structure,value and function.

void go_ahead() //motor rotate clockwise -->robot go ahead
{
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4,HIGH);
}
void go_back()  //motor rotate counterclockwise -->robot go back
{
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4,LOW); 
}
void go_stop()   //motor brake  -->robot stop
{
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4,LOW); 
}
void turn_left()  //left motor rotate counterclockwise and right motor rotate clockwise -->robot turn left
{
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
}
void turn_right() //left motor rotate clockwise and right motor rotate counterclockwise -->robot turn right
{
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);
}
/*set motor speed */
void set_motorspeed(int lspeed,int rspeed)  //change motor speed
{
  analogWrite(ENA,lspeed);//lspeed:0-255
  analogWrite(ENB,rspeed);//rspeed:0-255  
}

Part 3: Data initialization. We need to set the correct work mode to each pinouts(ENA,ENB,N1,N2,N3,N4) on driver board and call the above function in part 2.

 void setup() 
{
  pinMode(IN1, OUTPUT); 
  pinMode(IN2, OUTPUT); 
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT); 
  pinMode(ENA, OUTPUT); 
  pinMode(ENB, OUTPUT);  
  set_motorspeed(255,255);//maximum speed go_ahead(),delay(5000),go_stop();  //robot forward 5s
  go_back(),delay(5000),go_stop();  //robot go back 5s
  turn_left(),delay(5000),go_stop();//robot turn left 5s
  turn_right(),delay(5000),go_stop();//robot turn right 5s
  go_stop();//stop
}

V. Hardware Installation:

Step 1: Install ESP8266 Expansion Board on UNO R3 board.
lesson2-HW-1

Step 2: Move the wire connected to digit ports(D5,D6,D8,D9,D10,D12) in UNO R3 board to its counterpart digit pin in ESP8266 wifi Board. Connected the port(GND,VCC,VT) in voltage meter and the port (GND,12V,VO) in L298N Board.

L298N-esp8266 wifi

L298N-voltage meter

Step 3: Turn the switch of esp8266 to “1” and “2” position, as the following photo shows.

lesson2-HW-2
(If you have finished the above steps on lesson one, please skip these step)

Step 4: Testing. the tank car will go forward for 5s,go back for 5s ,turn left for 5s and turn right for 5s in sequence.You also can change the example code to make the car movements as your need.