使用ESP8266和L298N构建手机遥控车

文章目录

  • 1.前言
  • 2.资料
  • 2.1原理图
  • 2.2程序源码
  • 2.3 APP下载
  • 3. 原视频信息
  • 1.前言

    这个是从YouTube上搬运来的,如图所示

    2.资料

    2.1原理图

    1.因为单片机提供的电流不足以驱动电机,所以需要驱动电路,也就是L298N;
    2.接线图如下图和表格所示,其中9V电池可以用3.3V的;


    对应接线图

    2.2程序源码

    /*
    Code Name: Arduino Wifi Control Car 
    Code URI: https://circuitbest.com/category/arduino-projects/
    Additional Board Manager URL: http://arduino.esp8266.com/stable/package_esp8266com_index.json 
    Install: ESP8266 by ESP8266 Community
    Author: Make DIY
    Author URI: https://circuitbest.com/author/admin/
    Description: This program is used to control a robot using a app
    that communicates with Arduino through a ESP8266 Module.
    App URI: https://drive.google.com/file/d/1pvtWsTeXhcJdpHMfGlFmbGDuH7eoLfoP/view?usp=sharing
    Version: 2.0
    License: Remixing or Changing this Thing is allowed. Commercial use is not allowed.
    */
    
    
    #define ENA   14          // Enable/speed motors Right        GPIO14(D5)
    #define ENB   12          // Enable/speed motors Left         GPIO12(D6)
    #define IN_1  15          // L298N in1 motors Rightx          GPIO15(D8)
    #define IN_2  13          // L298N in2 motors Right           GPIO13(D7)
    #define IN_3  2           // L298N in3 motors Left            GPIO2(D4)
    #define IN_4  0           // L298N in4 motors Left            GPIO0(D3)
    
    #include <ESP8266WiFi.h>
    #include <WiFiClient.h> 
    #include <ESP8266WebServer.h>
    
    String command;             //String to store app command state.
    int speedCar = 800;         // 400 - 1023.
    int speed_Coeff = 3;
    
    const char* ssid = "Make DIY";
    ESP8266WebServer server(80);
    
    void setup() {
     
     pinMode(ENA, OUTPUT);
     pinMode(ENB, OUTPUT);  
     pinMode(IN_1, OUTPUT);
     pinMode(IN_2, OUTPUT);
     pinMode(IN_3, OUTPUT);
     pinMode(IN_4, OUTPUT); 
      
      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, LOW);
          digitalWrite(IN_2, HIGH);
          analogWrite(ENA, speedCar);
    
          digitalWrite(IN_3, LOW);
          digitalWrite(IN_4, HIGH);
          analogWrite(ENB, speedCar);
      }
    
    void goBack(){ 
    
          digitalWrite(IN_1, HIGH);
          digitalWrite(IN_2, LOW);
          analogWrite(ENA, speedCar);
    
          digitalWrite(IN_3, HIGH);
          digitalWrite(IN_4, LOW);
          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, LOW);
          digitalWrite(IN_2, HIGH);
          analogWrite(ENA, speedCar/speed_Coeff);
     
          digitalWrite(IN_3, LOW);
          digitalWrite(IN_4, HIGH);
          analogWrite(ENB, speedCar);
       }
    
    void goAheadLeft(){
          
          digitalWrite(IN_1, LOW);
          digitalWrite(IN_2, HIGH);
          analogWrite(ENA, speedCar);
    
          digitalWrite(IN_3, LOW);
          digitalWrite(IN_4, HIGH);
          analogWrite(ENB, speedCar/speed_Coeff);
      }
    
    void goBackRight(){ 
    
          digitalWrite(IN_1, HIGH);
          digitalWrite(IN_2, LOW);
          analogWrite(ENA, speedCar/speed_Coeff);
    
          digitalWrite(IN_3, HIGH);
          digitalWrite(IN_4, LOW);
          analogWrite(ENB, speedCar);
      }
    
    void goBackLeft(){ 
    
          digitalWrite(IN_1, HIGH);
          digitalWrite(IN_2, LOW);
          analogWrite(ENA, speedCar);
    
          digitalWrite(IN_3, HIGH);
          digitalWrite(IN_4, LOW);
          analogWrite(ENB, speedCar/speed_Coeff);
      }
    
    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 == "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;
          else if (command == "S") stopRobot();
    }
    
    void HTTP_handleRoot(void) {
    
    if( server.hasArg("State") ){
           Serial.println(server.arg("State"));
      }
      server.send ( 200, "text/html", "" );
      delay(1);
    }
    
    

    2.3 APP下载

    https://wwdy.lanzouf.com/ibIId0s6mnhc
    密码:d5k6

    3. 原视频信息

    https://www.youtube.com/watch?v=o_AvH5nuwLg

    物联沃分享整理
    物联沃-IOTWORD物联网 » 使用ESP8266和L298N构建手机遥控车

    发表评论