Skip to main content

How To Make Wi-Fi Car With NodeMCU| NodeMCU Projects| Topped With Fun




Circuit Diagram:


 Code:


#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 Right           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 = 80;              // 400 - 1023.

int speed_Coeff = 3;


const char* ssid = "XXXXXXXXXXX";       //SSID Name

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);

}



Comments

Popular posts from this blog

IOT Based Heart Rate And SpO2 Tracker With NodeMCU MAX30100 And Blynk Application With Code Diagram

Circuit Diagram: SCL PIN - D1 , SDA PIN - D2 , INT PIN - D0 Code: #include <Wire.h> #include "MAX30100_PulseOximeter.h" #define BLYNK_PRINT Serial #include <Blynk.h> #include <ESP8266WiFi.h> #include <BlynkSimpleEsp8266.h> #include "Adafruit_GFX.h" #include "OakOLED.h" #define REPORTING_PERIOD_MS 1000 OakOLED oled; char auth[] = "*********************";             // Authentication Token Sent by Blynk char ssid[] = "********************";        //WiFi SSID char pass[] = "*********************";        //WiFi Password // Connections : SCL PIN - D1 , SDA PIN - D2 , INT PIN - D0 PulseOximeter pox; float BPM, SpO2; uint32_t tsLastReport = 0; const unsigned char bitmap [] PROGMEM = {   0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x18, 0x00, 0x0f, 0xe0, 0x7f, 0x00, 0x3f, 0xf9, 0xff, 0xc0,   0x7f, 0xf9, 0xff, 0xc0, 0x7f, 0xff, 0xff, 0xe0, 0x7f, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xff, 0xf0,  ...

How To Make A Self Balancing Car With MPU-6050| Arduino Uno Projects| Topped With Fun |MPU-6050

Library Download Link: https://drive.google.com/drive/folders/1d5Dg7tuMVFh8FhXe-vtYRD3qvV5eomoy?usp=sharing Circuit Diagram: Code: #include <PID_v1.h> #include <LMotorController.h> #include "I2Cdev.h" #include "MPU6050_6Axis_MotionApps20.h" #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #include "Wire.h" #endif #define MIN_ABS_SPEED 30 MPU6050 mpu; // MPU control/status vars bool dmpReady = false; // set true if DMP init was successful uint8_t mpuIntStatus; // holds actual interrupt status byte from MPU uint8_t devStatus; // return status after each device operation (0 = success, !0 = error) uint16_t packetSize; // expected DMP packet size (default is 42 bytes) uint16_t fifoCount; // count of all bytes currently in FIFO uint8_t fifoBuffer[64]; // FIFO storage buffer // orientation/motion vars Quaternion q; // [w, x, y, z] quaternion container VectorFloat gravity; // [x, y, z] gravity vector float ypr[3]; // [yaw, pitch, roll] yaw/p...