0% found this document useful (0 votes)
11 views8 pages

Programación

The document outlines a basic educational application for remote control of a WiFi-enabled robot using NodeMCU and ESP8266. It includes programming code for motor control, WiFi connection setup, and handling various commands through a web server. The code provides functions for movement, lighting, and sound control of the robot.

Uploaded by

profeedwin72
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views8 pages

Programación

The document outlines a basic educational application for remote control of a WiFi-enabled robot using NodeMCU and ESP8266. It includes programming code for motor control, WiFi connection setup, and handling various commands through a web server. The code provides functions for movement, lighting, and sound control of the robot.

Uploaded by

profeedwin72
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd


🧩 Aplicaciones educativas
 Robótica básica
 Sistemas embebidos
 Programación IoT
 Control remoto vía WiFi
 Integración con sensores (opcional)

Programación:

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <ArduinoOTA.h>
// ok funciona ok
// connections for drive Motor FR & BR
int in1 = D5;
int in2 = D6;
// connections for drive Motor FL & BL
int in3 = D7;
int in4 = D8;

const int buzPin = D0; // (use active buzzer)


const int ledPin = D1; // (use super bright LED izq)
const int ledPinb = D2; // (se super bright LED der)
const int wifiLedPin = D3; // set digital pin D3 as indication, the LED turn on if
NodeMCU connected to WiFi as STA mode

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


int SPEED = 122;
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 = ""; // set Wifi networks you want to connect to


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

void setup() {
[Link](115200); // set up Serial library at 115200 bps
[Link]();
[Link]("*WiFi Robot Remote Control Mode - L298N 2A*");
[Link]("------------------------------------------------");

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


pinMode(ledPin, OUTPUT); // sets the LED pin as an Output
pinMode(ledPinb, OUTPUT); // sets the LED pin as an Output
pinMode(wifiLedPin, OUTPUT); // sets the Wifi LED pin as an Output
digitalWrite(buzPin, LOW);
digitalWrite(ledPinb, LOW);
digitalWrite(ledPin, LOW);
digitalWrite(wifiLedPin, HIGH);

// Set all the motor control pins to outputs


pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);

// 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([Link](), HEX);
int i = chip_id.length() - 4;
chip_id = chip_id.substring(i);
chip_id = "WiFi_RC_Car-" + chip_id;
String hostname(chip_id);

[Link]();
[Link]("Hostname: " + hostname);

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


[Link](WIFI_STA);
[Link](sta_ssid.c_str(), sta_password.c_str());
[Link]("");
[Link]("Connecting to: ");
[Link](sta_ssid);
[Link]("Password: ");
[Link](sta_password);

// try to connect with Wifi network about 10 seconds


unsigned long currentMillis = millis();
previousMillis = currentMillis;
while ([Link]() != WL_CONNECTED && currentMillis - previousMillis <= 10000)
{
delay(500);
[Link](".");
currentMillis = millis();
}

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


if ([Link]() == WL_CONNECTED) {
[Link]("");
[Link]("*WiFi-STA-Mode*");
[Link]("IP: ");
[Link]([Link]());
digitalWrite(wifiLedPin, LOW); // Wifi LED on when connected to Wifi as STA mode
delay(3000);
} else {
[Link](WIFI_AP);
[Link](hostname.c_str());
IPAddress myIP = [Link]();
[Link]("");
[Link]("WiFi failed connected to " + sta_ssid);
[Link]("");
[Link]("*WiFi-AP-Mode*");
[Link]("AP IP address: ");
[Link](myIP);
digitalWrite(wifiLedPin, HIGH); // Wifi LED off when status as AP mode
delay(3000);
}

[Link]("/", HTTP_handleRoot); // call the 'handleRoot' function when a client


requests URI "/"
[Link](HTTP_handleRoot); // when a client requests an unknown URI (i.e.
something other than "/"), call function "handleNotFound"
[Link](); // actually start the server
[Link](); // enable to receive update/uploade firmware via Wifi OTA
}

void loop() {
[Link](); // listen for update OTA request from clients
[Link](); // listen for HTTP requests from clients

command = [Link]("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 = 60;
else if (command == "1") SPEED = 70;
else if (command == "2") SPEED = 81;
else if (command == "3") SPEED = 95;
else if (command == "4") SPEED = 105;
else if (command == "5") SPEED = 122;
else if (command == "6") SPEED = 150;
else if (command == "7") SPEED = 196;
else if (command == "8") SPEED = 272;
else if (command == "9") SPEED = 400;
else if (command == "q") SPEED = 1023;
}

// function prototypes for HTTP handlers


void HTTP_handleRoot(void) {
[Link](200, "text/html", ""); // Send HTTP status 200 (Ok) and send some text to the
browser/client

if ([Link]("State")) {
[Link]([Link]("State"));
}
}

void handleNotFound() {
[Link](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(in1, SPEED);
digitalWrite(in2, LOW);
analogWrite(in3, SPEED);
digitalWrite(in4, LOW);
}

// function to move backward


void Backward() {
digitalWrite(in1, LOW);
analogWrite(in2, SPEED);
digitalWrite(in3, LOW);
analogWrite(in4, SPEED);
}

// function to turn right


void TurnRight() {
digitalWrite(in1, LOW);
analogWrite(in2, SPEED);
analogWrite(in3, SPEED);
digitalWrite(in4, LOW);
}

// function to turn left


void TurnLeft() {
analogWrite(in1, SPEED);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
analogWrite(in4, SPEED);
}

// function to move forward left


void ForwardLeft() {
analogWrite(in1, SPEED);
digitalWrite(in2, LOW);
analogWrite(in3, SPEED / speed_Coeff);
digitalWrite(in4, LOW);
}

// function to move backward left


void BackwardLeft() {
digitalWrite(in1, LOW);
analogWrite(in2, SPEED);
digitalWrite(in3, LOW);
analogWrite(in4, SPEED / speed_Coeff);
}

// function to move forward right


void ForwardRight() {
analogWrite(in1, SPEED / speed_Coeff);
digitalWrite(in2, LOW);
analogWrite(in3, SPEED);
digitalWrite(in4, LOW);
}

// function to move backward right


void BackwardRight() {
digitalWrite(in1, LOW);
analogWrite(in2, SPEED / speed_Coeff);
digitalWrite(in3, LOW);
analogWrite(in4, SPEED);
}

// function to stop motors


void Stop() {
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}

// 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);
digitalWrite(ledPinb, HIGH);
}

// function to turn off LED


void TurnLightOff() {
digitalWrite(ledPin, LOW);
digitalWrite(ledPinb, LOW);
}

You might also like