Upload Coding WifiCar OTA esp8266 Tanpa Kabel

Jurnalku by Fajar Himawan

Upload Coding WifiCar OTA esp8266

Tanpa kabel - Cukup hanya dg wifi hape Android








Coding:


/******************* WiFi Robot Obstacle Avoidance - L298N 2A

modif-2

by Jurnalku

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;


// ultrasonic setup:

const int trigPin = D7; // trig pin connected to Arduino's pin D7

const int echoPin = D8; // echo pin connected to Arduino's pin D8

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


// defines variables

int distanceCm = 0;

int distanceHold = 20;

int SPEED = 300;       // set 1023 to max speed motor


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


void setup() {

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

  Serial.println();

  Serial.println("*WiFI Robot Obstacle Avoidance - L298N 2A*");

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

 

  pinMode(trigPin, OUTPUT);  // Sets the trigPin as an Output

  pinMode(echoPin, INPUT);   // Sets the echoPin as an Input

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

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

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

  }


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


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

  analogWrite(enA, SPEED);

  analogWrite(enB, SPEED);

 

  // move forward - Initial state

  digitalWrite(in1, HIGH);

  digitalWrite(in2, LOW);

  digitalWrite(in3, HIGH);

  digitalWrite(in4, LOW);

}


// main program loop

void loop() {

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


  distanceCm=getDistance(); // variable to store the distance measured by the sensor 

  Serial.println(distanceCm); // print the distance that was measured


  //if the distance is less than value of distanceHold, The robot will stop and scanning for any object around it

  if(distanceCm <= distanceHold){

    // turn right

    digitalWrite(in1, LOW);

    digitalWrite(in2, HIGH);

    digitalWrite(in3, HIGH);

    digitalWrite(in4, LOW);

    delay(400);

 

    // move forward

    digitalWrite(in1, HIGH);   

    digitalWrite(in2, LOW);

    digitalWrite(in3, HIGH);

    digitalWrite(in4, LOW);

  }

}


// returns the distance measured by the HC-SR04 distance sensor

int getDistance() {

  int echoTime;                   //variable to store the time it takes for a ping to bounce off an object

  int calcualtedDistance;         //variable to store the distance calculated from the echo time

 

  //send out an ultrasonic pulse that's 10ms long

  digitalWrite(trigPin, HIGH);

  delayMicroseconds(10);

  digitalWrite(trigPin, LOW);


  echoTime = pulseIn(echoPin, HIGH);      //use the pulsein command to see how long it takes for the

                                          //pulse to bounce back to the sensor


  calcualtedDistance = echoTime / 58.26;  //calculate the distance of the object that reflected the pulse (half the bounce time multiplied by the speed of sound)

  return calcualtedDistance;              //send back the distance that was calculated


}





Please Select Embedded Mode For Blogger Comments

أحدث أقدم