Kabar Terkini

Esp8266 WifiCarRobot di Taman Prestasi Surabaya

Esp8266 WifiCarRobot di Taman Prestasi Surabaya 

This my video:

https://youtu.be/R7RGQ7K4N78

Medan Berpasir Perlu Torsi yg Mantab


Esp8266 WifiCarRobot at Taman Prestasi Surabaya

https://ayojurnalku.blogspot.com/2022/07/esp8266-wificarrobot-di-taman-prestasi.html

Sandy Terrain Needs Stable Torque... i use 16volt to L298N ... very good ☕

This is my video:

https://youtu.be/R7RGQ7K4N78

👍


This is my code:


/******************* WiFi Robot Remote Control Mode - L298N 2A - aLittleModif

Modif-3:

WifiRobotCar-AP-password

by Fajar Himawan

********************/


#include <ESP8266WiFi.h> 

#include <ESP8266WebServer.h> 

#include <ArduinoOTA.h>

// connections for drive Motor FR & BR

int enA = D1;

int in1 = D2;

int in2 = D3;

// connections for drive Motor FL & BL

int in3 = D4;

int in4 = D5;

int enB = D6;


const int buzPin = D7;  // set digital pin D7 as buzzer pin (use active buzzer)

const int ledPin = D8;  // set digital pin D8 as LED pin (use super bright LED)

const int wifiLedPin = D0;  // set digital pin D0 as indication, the LED turn on if NodeMCU connected to WiFi as STA mode


String command;          // String to store app command state.

int SPEED = 1023;       // 330 - 1023.

int speed_Coeff = 3;


ESP8266WebServer server(80);      // Create a webserver object that listens for HTTP request on port 80


unsigned long previousMillis = 0;


String sta_ssid = "ota";      // set Wifi networks you want to connect to

String sta_password = "12345678";  // set password for Wifi networks



String AP_ssid = "APota";      // set Wifi networks you want to connect to

String AP_password = "12345678";  // set password for Wifi networks




void setup(){

  Serial.begin(115200);    // set up Serial library at 115200 bps

  Serial.println();

  Serial.println("*WiFi Robot Remote Control Mode - L298N 2A*");

  Serial.println("------------------------------------------------");

 

  pinMode(buzPin, OUTPUT);      // sets the buzzer pin as an Output

  pinMode(ledPin, OUTPUT);      // sets the LED pin as an Output

  pinMode(wifiLedPin, OUTPUT);  // sets the Wifi LED pin as an Output

  digitalWrite(buzPin, LOW);

  digitalWrite(ledPin, LOW);

  digitalWrite(wifiLedPin, HIGH);


  // Set all the motor control pins to outputs

  pinMode(enA, OUTPUT);

  pinMode(in1, OUTPUT);

  pinMode(in2, OUTPUT);

  pinMode(in3, OUTPUT);

  pinMode(in4, OUTPUT);

  pinMode(enB, OUTPUT);


  // Set the speed to start, from 0 (off) to 1023 (max speed)

  analogWrite(enA, SPEED);

  analogWrite(enB, SPEED);

  

  // Turn off motors - Initial state

  digitalWrite(in1, LOW);

  digitalWrite(in2, LOW);

  digitalWrite(in3, LOW);

  digitalWrite(in4, LOW);


  

  // set NodeMCU Wifi hostname based on chip mac address

  String chip_id = String(ESP.getChipId(), HEX);

  int i = chip_id.length()-4;

  chip_id = chip_id.substring(i);

  chip_id = "wificar-" + chip_id;

  String hostname(chip_id);

  

  Serial.println();

  Serial.println("Hostname: "+hostname);


  // first, set NodeMCU as STA mode to connect with a Wifi network

  WiFi.mode(WIFI_STA);

  WiFi.begin(sta_ssid.c_str(), sta_password.c_str());

  Serial.println("");

  Serial.print("Connecting to: ");

  Serial.println(sta_ssid);

  Serial.print("Password: ");

  Serial.println(sta_password);


  // try to connect with Wifi network about 1 seconds

  unsigned long currentMillis = millis();

  previousMillis = currentMillis;

  while (WiFi.status() != WL_CONNECTED && currentMillis - previousMillis <= 1000) {

    delay(500);

    Serial.print(".");

    currentMillis = millis();

  }


  // if failed to connect with Wifi network set NodeMCU as AP mode

  if (WiFi.status() == WL_CONNECTED) {

    Serial.println("");

    Serial.println("*WiFi-STA-Mode*");

    Serial.print("IP: ");

    Serial.println(WiFi.localIP());

    digitalWrite(wifiLedPin, LOW);    // Wifi LED on when connected to Wifi as STA mode

    delay(3000);

  } else {

    WiFi.mode(WIFI_AP);

    WiFi.softAP(hostname.c_str(),AP_password);

    //WiFi.softAP(AP_ssid,AP_password);

        

        

    IPAddress myIP = WiFi.softAPIP();

    Serial.println("");

    Serial.println("WiFi failed connected to " + sta_ssid);

    Serial.println("");

    Serial.println("*WiFi-AP-Mode*");

    Serial.print("AP IP address: ");

    Serial.println(myIP);

    digitalWrite(wifiLedPin, HIGH);   // Wifi LED off when status as AP mode

    delay(3000);

  }

 


  server.on ( "/", HTTP_handleRoot );       // call the 'handleRoot' function when a client requests URI "/"

  server.onNotFound ( HTTP_handleRoot );    // when a client requests an unknown URI (i.e. something other than "/"), call function "handleNotFound"

  server.begin();                           // actually start the server

  

  ArduinoOTA.begin();                       // enable to receive update/uploade firmware via Wifi OTA

}


void loop() {

    ArduinoOTA.handle();          // listen for update OTA request from clients

    server.handleClient();        // listen for HTTP requests from clients

    

      command = server.arg("State");          // check HTPP request, if has arguments "State" then saved the value

      if (command == "F") Forward();          // check string then call a function or set a value

      else if (command == "B") Backward();

      else if (command == "R") TurnRight();

      else if (command == "L") TurnLeft();

      else if (command == "G") ForwardLeft();

      else if (command == "H") BackwardLeft();

      else if (command == "I") ForwardRight();

      else if (command == "J") BackwardRight();

      else if (command == "S") Stop();

      else if (command == "V") BeepHorn();

      else if (command == "W") TurnLightOn();

      else if (command == "w") TurnLightOff();

      else if (command == "0") SPEED = 330;

      else if (command == "1") SPEED = 400;

      else if (command == "2") SPEED = 470;

      else if (command == "3") SPEED = 540;

      else if (command == "4") SPEED = 610;

      else if (command == "5") SPEED = 680;

      else if (command == "6") SPEED = 750;

      else if (command == "7") SPEED = 820;

      else if (command == "8") SPEED = 890;

      else if (command == "9") SPEED = 960;

      else if (command == "q") SPEED = 1023;

}


// function prototypes for HTTP handlers

void HTTP_handleRoot(void){

  server.send ( 200, "text/html", "" );       // Send HTTP status 200 (Ok) and send some text to the browser/client

  

  if( server.hasArg("State") ){

     Serial.println(server.arg("State"));

  }

}


void handleNotFound(){

  server.send(404, "text/plain", "404: Not found"); // Send HTTP status 404 (Not Found) when there's no handler for the URI in the request

}


// function to move forward

void Forward(){ 

  analogWrite(enA, SPEED);

  digitalWrite(in1, HIGH);

  digitalWrite(in2, LOW);

  digitalWrite(in3, HIGH);

  digitalWrite(in4, LOW);

  analogWrite(enB, SPEED);

}


// function to move backward

void Backward(){

  analogWrite(enA, SPEED);

  digitalWrite(in1, LOW);

  digitalWrite(in2, HIGH);

  digitalWrite(in3, LOW);

  digitalWrite(in4, HIGH);

  analogWrite(enB, SPEED);

}


// function to turn right

void TurnRight(){

  analogWrite(enA, SPEED);

  digitalWrite(in1, LOW);

  digitalWrite(in2, HIGH);

  digitalWrite(in3, HIGH);

  digitalWrite(in4, LOW);

  analogWrite(enB, SPEED);

}


// function to turn left

void TurnLeft(){

  analogWrite(enA, SPEED);

  digitalWrite(in1, HIGH);

  digitalWrite(in2, LOW);

  digitalWrite(in3, LOW);

  digitalWrite(in4, HIGH);

  analogWrite(enB, SPEED);

}


// function to move forward left

void ForwardLeft(){

  analogWrite(enA, SPEED);

  digitalWrite(in1, HIGH);

  digitalWrite(in2, LOW);

  digitalWrite(in3, HIGH);

  digitalWrite(in4, LOW);

  analogWrite(enB, SPEED/speed_Coeff);

}


// function to move backward left

void BackwardLeft(){

  analogWrite(enA, SPEED);

  digitalWrite(in1, LOW);

  digitalWrite(in2, HIGH);

  digitalWrite(in3, LOW);

  digitalWrite(in4, HIGH);

  analogWrite(enB, SPEED/speed_Coeff);

}


// function to move forward right

void ForwardRight(){

  analogWrite(enA, SPEED/speed_Coeff);

  digitalWrite(in1, HIGH);

  digitalWrite(in2, LOW);

  digitalWrite(in3, HIGH);

  digitalWrite(in4, LOW);

  analogWrite(enB, SPEED);

}


// function to move backward right

void BackwardRight(){ 

  analogWrite(enA, SPEED/speed_Coeff);

  digitalWrite(in1, LOW);

  digitalWrite(in2, HIGH);

  digitalWrite(in3, LOW);

  digitalWrite(in4, HIGH);

  analogWrite(enB, SPEED);

}


// function to stop motors

void Stop(){  

  analogWrite(enA, 0);

  digitalWrite(in1, LOW);

  digitalWrite(in2, LOW);

  digitalWrite(in3, LOW);

  digitalWrite(in4, LOW);

  analogWrite(enB, 0);

}


// function to beep a buzzer

void BeepHorn(){

  digitalWrite(buzPin, HIGH);

  delay(150);

  digitalWrite(buzPin, LOW);

  delay(80);

}


// function to turn on LED

void TurnLightOn(){

  digitalWrite(ledPin, HIGH);

}


// function to turn off LED

void TurnLightOff(){

  digitalWrite(ledPin, LOW);

}




No comments

Featured Post

Pengelolaan Kinerja Guru (PKG) tahun 2025

📑 [PKG 2025] Berikut ini materi/panduan untuk Penilaian Pengelolaan Kinerja Guru (PKG) tahun 2025. 1. Pengelolaan Kinerja Guru 2. Pengelola...