Vnkythuat.com

Chế tạo xe điều khiển đơn giản

Các bạn có nhớ những thời thơ bé, chúng ta rất đam mê xe điều khiển bằng tay, mà không có tiền để mua phải không nào, các bạn có nghĩ đến một ngày nào đó chúng ta có thể tự làm ra một chiếc xe mà có thể điều khiển được một cách đơn giản nhất không nào, thì bài viết này sẽ giúp bạn chế tạo ra một chiếc xe điều khiển đơn giản nhất

Chế tạo xe điều khiển đơn giản

A. Video sản phẩm hoàn thiện

Xem thêm một số sản phẩm khác :

B. Chuẩn bị

Những thứ mà chúng ta cần chuẩn bị đã được liệt kê như hình bên trên

1. Mạch cầu H L298N
2. Node MCU ESP8266
3. Khung đỡ lắp ráp
4. Bộ lắp pin cho thiết bị và pin và nút nhấn công tắc
6. Dây điện cấm
7. 2 Motor vàng và 2 bánh xe và 1 bánh xe quay

C. Mua thiết bị ở đâu và Hỗ trợ

Bên chúng tôi hỗ trợ 100% khi bạn lắp ráp, đảm bảo khi nào thành công thì thôi

Liên hệ :

D. Hướng dẫn lắp ráp

Bước 1 : Lắp bánh xe , motor vào khung

Bước 2: Lắp mạch điện như hình bên dưới

Hình ảnh thật sau khi kết nối xong

Bước 4: Nạp code vào node MCU

// vnkythuat.com
// nguyendoan

#include <ESP8266WiFi.h>
#include <WiFiClient.h> 
#include <ESP8266WebServer.h>

// left motor
#define ENA D0
#define IN_1 D1
#define IN_2 D2

// right motor
#define IN_3 D3
#define IN_4 D4
#define ENB D6

String command;             //String to store app command state.
int speedCar = 1023;         // 400 - 1023.
int speedCar_half = 2;

const char* ssid = "tRobot";
ESP8266WebServer server(80);

void HTTP_handleRoot(void) {

if( server.hasArg("State") ){
       Serial.println(server.arg("State"));
  }
  server.send ( 200, "text/html", "" );
  delay(1);
}

void setup() {
 
 pinMode(ENA, OUTPUT);
 pinMode(IN_1, OUTPUT);
 pinMode(IN_2, OUTPUT);

 pinMode(ENB, OUTPUT);
 pinMode(IN_3, OUTPUT);
 pinMode(IN_4, OUTPUT);
 
  delay(1000);
  Serial.begin(115200);
  
// Connecting WiFi

  WiFi.mode(WIFI_AP);
  WiFi.softAP(ssid);

  IPAddress myIP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(myIP);
 
 // Starting WEB-server 
     server.on ( "/", HTTP_handleRoot );
     server.onNotFound ( HTTP_handleRoot );
     server.begin();    
}

void goAhead(){ 

      digitalWrite(IN_1, HIGH);
      digitalWrite(IN_2, LOW);
      analogWrite(ENA, speedCar);

      digitalWrite(IN_3, HIGH);
      digitalWrite(IN_4, LOW);
      analogWrite(ENB, speedCar);
  }

void goBack(){ 

      digitalWrite(IN_1, LOW);
      digitalWrite(IN_2, HIGH);
      analogWrite(ENA, speedCar);

      digitalWrite(IN_3, LOW);
      digitalWrite(IN_4, HIGH);
      analogWrite(ENB, speedCar);
  }

void goRight(){ 

      digitalWrite(IN_1, HIGH);
      digitalWrite(IN_2, LOW);
      analogWrite(ENA, speedCar);

      digitalWrite(IN_3, LOW);
      digitalWrite(IN_4, HIGH);
      analogWrite(ENB, speedCar);
  }

void goLeft(){

      digitalWrite(IN_1, LOW);
      digitalWrite(IN_2, HIGH);
      analogWrite(ENA, speedCar);

      digitalWrite(IN_3, HIGH);
      digitalWrite(IN_4, LOW);
      analogWrite(ENB, speedCar);
  }

void goAheadRight(){
      
      digitalWrite(IN_1, HIGH);
      digitalWrite(IN_2, LOW);
      analogWrite(ENA, speedCar);
 
      digitalWrite(IN_3, HIGH);
      digitalWrite(IN_4, LOW);
      analogWrite(ENB, speedCar/speedCar_half);
   }

void goAheadLeft(){
      
      digitalWrite(IN_1, HIGH);
      digitalWrite(IN_2, LOW);
      analogWrite(ENA, speedCar/speedCar_half);

      digitalWrite(IN_3, HIGH);
      digitalWrite(IN_4, LOW);
      analogWrite(ENB, speedCar);
  }

void goBackRight(){ 

      digitalWrite(IN_1, LOW);
      digitalWrite(IN_2, HIGH);
      analogWrite(ENA, speedCar);

      digitalWrite(IN_3, LOW);
      digitalWrite(IN_4, HIGH);
      analogWrite(ENB, speedCar/speedCar_half);
  }
  

void goBackLeft(){ 

      digitalWrite(IN_1, LOW);
      digitalWrite(IN_2, HIGH);
      analogWrite(ENA, speedCar/speedCar_half);

      digitalWrite(IN_3, LOW);
      digitalWrite(IN_4, HIGH);
      analogWrite(ENB, speedCar);
  }


void stopRobot(){  

      digitalWrite(IN_1, LOW);
      digitalWrite(IN_2, LOW);
      analogWrite(ENA, speedCar);

      digitalWrite(IN_3, LOW);
      digitalWrite(IN_4, LOW);
      analogWrite(ENB, speedCar);
 }

void loop() {
    server.handleClient();
    
      command = server.arg("State");
      
           if (command == "F") goAhead();
      else if (command == "B") goBack();
      else if (command == "L") goLeft();
      else if (command == "R") goRight();
      else if (command == "I") goAheadRight();
      else if (command == "G") goAheadLeft();
      else if (command == "J") goBackRight();
      else if (command == "H") goBackLeft();
      else if (command == "S") stopRobot();
// speed         
      else if (command == "0") speedCar = 400;
      else if (command == "1") speedCar = 470;
      else if (command == "2") speedCar = 540;
      else if (command == "3") speedCar = 610;
      else if (command == "4") speedCar = 680;
      else if (command == "5") speedCar = 750;
      else if (command == "6") speedCar = 820;
      else if (command == "7") speedCar = 890;
      else if (command == "8") speedCar = 960;
      else if (command == "9") speedCar = 1023;    
}

Bước 5: Cài App vào điện thoại Ardroid

Link tải về : Tải về

Bước 6: Liên kết giữa điện thoại và xe điều khiển

Chúng ta mở app lên và liên kết với wifi : tRobot

Kết quả: Như vậy là ta có thể điều khiển xe thoải máy rồi nhé

Exit mobile version