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

Dokumentasi Pelatihan BPBD JATIM - Optimalkan Kinerja di Bulan Ramadan, Bidang PK BPBD Jatim Bersama IGI Jatim Perkuat Kapasitas SDM Berbasis AI

Optimalkan Kinerja di Bulan Ramadan, Bidang PK BPBD Jatim Bersama IGI Jatim Perkuat Kapasitas SDM Berbasis AI SIDOARJO  – Memasuki bulan suc...