-
Notifications
You must be signed in to change notification settings - Fork 0
Robot Wifi con Servos
javierre edited this page Jun 9, 2019
·
3 revisions
TBD
Versión con Servos de Rotación continua.
/*
NodeMCU Access Point - Servidor Web por Dani No www.esploradores.com
Crea un servidor Web en modo Access Point que permite encender y apagar un LED conectado a la salida D4 (GPIO02) del módulo NodeMCU.
Este código de ejemplo es de público dominio.
http://www.esploradores.com/access-point-servidor-web-nodemcu/
*/
#include <ESP8266WiFi.h> //Incluye la librería ESP8266WiFi
#include <Servo.h>
Servo servoi, servod;
#define turnspeed 1700 //0--> 1024
#define forwardspeed 1700 //0 --> 1024
#define stopm 1490 //0 --> 1024
const char ssid[] = "WemosWifiRobot"; //Definimos la SSDI de nuestro servidor WiFi -nombre de red-
const char password[] = "12345678"; //Definimos la contraseña de nuestro servidor
WiFiServer server(80); //Definimos el puerto de comunicaciones
int estado = 0; //Definimos la variable que va a recoger el estado del motor
void halt() //0
{
servoi.write(stopm); //Stop
servod.write(stopm); //Stop
}
void forward()//1
{
Serial.println("forward");
servoi.write(forwardspeed);
servod.write(1300);
}
void reverse()//2
{
Serial.println("reverse");
servoi.write(1300);
servod.write(1700);
}
void right()//3
{
Serial.println("right");
servoi.write(1600);
servod.write(1600);
}
void left()//4
{
Serial.println("left");
servoi.write(1400);
servod.write(1400);
}
void setup() {
servoi.attach(D3);
servod.attach(D4);
Serial.begin(9600);
halt();
server.begin(); //inicializamos el servidor
WiFi.mode(WIFI_AP);
WiFi.softAP(ssid, password); //Red con clave, en el canal 1 y visible
//WiFi.softAP(ssid, password,3,1); //Red con clave, en el canal 3 y visible
//WiFi.softAP(ssid); //Red abierta
Serial.println();
Serial.print("Direccion IP Access Point - por defecto: "); //Imprime la dirección IP
Serial.println(WiFi.softAPIP());
Serial.print("Direccion MAC Access Point: "); //Imprime la dirección MAC
Serial.println(WiFi.softAPmacAddress());
//IPAddress local_ip(192, 168, 1, 1); //Modifica la dirección IP, por defecto es http://192.168.4.1
//IPAddress gateway(192, 168, 1, 1);
//IPAddress subnet(255, 255, 255, 0);
//WiFi.softAPConfig(local_ip, gateway, subnet);
//Serial.println();
//Serial.print("Access Point - Nueva direccion IP: ");
//Serial.println(WiFi.softAPIP());
}
void loop()
{
// Comprueba si el cliente ha conectado
WiFiClient client = server.available();
if (!client) {
return;
}
// Espera hasta que el cliente envía alguna petición
Serial.println("nuevo cliente");
while(!client.available()){
delay(1);
}
// Imprime el número de clientes conectados
Serial.printf("Clientes conectados al Access Point: %dn", WiFi.softAPgetStationNum());
// Lee la petición
String peticion = client.readStringUntil('\r');
Serial.println(peticion);
client.flush();
// Comprueba la petición
if (peticion.indexOf('/robot=H') != -1) {
estado = 0;
halt();
}
if (peticion.indexOf('/robot=F') != -1) {
estado = 1;
forward();
}
if (peticion.indexOf('/robot=B') != -1) {
estado = 2;
reverse();
}
if (peticion.indexOf('/robot=R') != -1) {
estado = 3;
right();
}
if (peticion.indexOf('/robot=L') != -1) {
estado = 4;
left();
}
// Envía la página HTML de respuesta al cliente
client.println("HTTP/1.1 200 OK");
client.println(""); //No olvidar esta línea de separación
client.println("<!DOCTYPE HTML>");
client.println("<meta charset='UTF-8'>");
client.println("<html>");
String chck0="";
String chck1="";
String chck2="";
String chck3="";
String chck4="";
//Imprime el estado del led
client.print("<h1>El Robot está ahora: ");
if(estado == 0) {
chck0=" checked ";
client.print("PARADO</h1>");
} else if(estado==1){
chck1=" checked ";
client.print("AVANZANDO</h1>");
} else if(estado==2){
chck2=" checked ";
client.print("RETROCEDIENDO</h1>");
} else if(estado==3){
chck3=" checked ";
client.print("GIRANDO A LA DCHA</h1>");
}
else if(estado==4){
chck4=" checked ";
client.print("GIRANDO A LA IZDA</h1>");
}
//Se crean enlaces para modificar el estado del LED
client.println("Presiona <a href='/robot=H'>AQUÍ</a> para parar el robot<br>");
client.println("Presiona <a href='/robot=F'>AQUÍ</a> para avanzar<br>");
client.println("Presiona <a href='/robot=B'>AQUÍ</a> para retroceder<br>");
client.println("Presiona <a href='/robot=R'>AQUÍ</a> para girar a la derecha<br>");
client.println("Presiona <a href='/robot=L'>AQUÍ</a> para girar a la izquierda<br>");
//Se crean cajas de comprobación (checkbox) para modificar el estado del LED
client.println("<input type='checkbox' "+chck0+" onClick=location.href='/robot=H'> PARAR </input><br>");
Serial.println("<input type='checkbox' "+chck0+" onClick=location.href='/robot=H'> PARAR </input><br>");
client.println("<input type='checkbox' "+chck1+" onClick=location.href='/robot=F'> AVANZAR </input><br>");
client.println("<input type='checkbox' "+chck2+" onClick=location.href='/robot=B'> RETROCEDER </input><br>");
client.println("<input type='checkbox' "+chck3+" onClick=location.href='/robot=B'> GIRAR DCHA </input><br>");
client.println("<input type='checkbox' "+chck4+" onClick=location.href='/robot=R'> GIRAR IZDA </input><br>");
//Se crean botones con estilos para modificar el estado del LED
client.println("<button type='button' onClick=location.href='/robot=F' style='margin:auto; background-color:green; color:#A9F5A9; padding:5px; border:2px solid black; width:200;'><h2> AVANZAR</h2> </button>");
client.println("<button type='button' onClick=location.href='/robot=H' style='margin:auto; background-color:red; color:#F6D8CE; padding:5px; border:2px solid black; width:200;'><h2> PARAR</h2> </button>");
client.println("<button type='button' onClick=location.href='/robot=B' style='margin:auto; background-color:yellow; color:black; padding:5px; border:2px solid black; width:200;'><h2> RETROCEDER</h2> </button>");
client.println("<button type='button' onClick=location.href='/robot=R' style='margin:auto; background-color:orange; color:black; padding:5px; border:2px solid black; width:200;'><h2> GIRAR DCHA</h2> </button>");
client.println("<button type='button' onClick=location.href='/robot=L' style='margin:auto; background-color:blue; color:black; padding:5px; border:2px solid black; width:200;'><h2> GIRAR IZDA</h2> </button><br><br>");
client.println("</html>");
delay(1);
Serial.println("Petición finalizada"); // Se finaliza la petición al cliente. Se inicaliza la espera de una nueva petición.
//Desconexión de los clientes
//WiFi.softAPdisconnect();
}
-
- Acelerómetro-GY-61
- Brújula GY-273
- Buzzer o zumbador
- ESP8266 Deauther
- GPS NEO-6M
- Heltec LoRa
- IMU (Accel, Gyro, Magn)
- Joystick analógico
- Láser lidar 2D
- LDR Keyes K-018
- Leds RGB WS2811
- Led Superlumínico Keyestudio
- Motor DC
- Motor Lego NXT
- NodeMCU
- OLED
- Botón-pulsador
- RFID522
- Sensor barométrico BMP180
- Sensor de distancia HCSR04
- Sensor de distancia SHARP
- Sensor de temperatura DHT11
- Sensor infrarrojo de obstáculos (YL63)
- Servo de rotación continua FS90R
- Servo SG90
- Tacómetro
- TTGO Camera
- Wemos D1 Mini