Motor paso a paso con ESP8266

Buenas.
Estoy intentando hacer andar un motor paso a paso accionado a través de wifi. Para ello estoy utilizando una placa wemos D1 basada en ESP8266 y un motor paso a paso 28BYJ-48 con su driver de control (este se que funciona y lo he hecho funcionar en la misma plaqueta sin coneccion a internet )

Ahora bien cuando coloco el código para la conexión a internet se conecta y recibe las ordenes que le doy desde la pagina. Pero no cumple las condiciones de while() ni de los delay(). en definitiva no me hace andar el motor.

adjunto código

#include <ESP8266WiFi.h>
 
// Sustituir con datos de vuestra red
const char* ssid     = "Nombre red wifi";//nombre de la red
const char* password = "contraseña de la red";// contraseña

  // Para que prenda el motor cuando estamos haciendo andar por intenet
#define IN1  D3
#define IN2  D4
#define IN3  D5
#define IN4  D6
 int Vueltas=0;// cuenta las vueltas del motor
 unsigned long inicioMilisegundos;
// Secuencia de pasos (par máximo)
int paso [4][4] =
{
  {1, 1, 0, 0},
  {0, 1, 1, 0},
  {0, 0, 1, 1},
  {1, 0, 0, 1}
};
int Cero[4]={0,0,0,0};

WiFiServer server(80);
void setup()
{
  Serial.begin(115200);
  delay(10);
  
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.print("Conectando a:\t");
  Serial.println(ssid); 
 
  // Esperar a que nos conectemos 
  while (WiFi.status() != WL_CONNECTED) 
  {
    delay(200);
   Serial.print('.');
  }
 
  // Mostrar mensaje de exito y dirección IP asignada
  Serial.println();
  Serial.print("Conectado a:\t");
  Serial.println(WiFi.SSID()); 
  Serial.print("IP address:\t");
  Serial.println(WiFi.localIP());

  server.begin(); // iniciamos servidor web
  Serial.println("Servidor Iniciado");

  Serial.println("Ingrese desde un servidor web usando la siguiente direccion de IP:");
  Serial.println(WiFi.localIP()); // obtenemos la IP


}
 
void loop() {
  WiFiClient client=server.available();
  if(client){ //si hay un cliente presente 
    Serial.println("Nuevo Cliente");
    //esperamos hasta que hayan datos disponibles 
    while(!client.available()&&client.connected()){//
      delay(3);
      }
    //Leemos la primer linea de peticion del cliente  
    String linea1=client.readStringUntil('\r');
    Serial.println(linea1);
    
    if (linea1.indexOf("Prender")>0){//Buscamos en la primera linea Prender 
     
       Serial.println("Recibio señal de prendido");
       

       while (Vueltas<=64*64/2){  
        for (int i = 0; i < 4; i++){
          digitalWrite(IN1, paso[i][0]);
  
          digitalWrite(IN2, paso[i][1]);

          digitalWrite(IN3, paso[i][2]);

          digitalWrite(IN4, paso[i][3]);
          //inicioMilisegundos=millis();
          //while((unsigned long) millis()-inicioMilisegundos<2){// prueba usando millis en ves de delay}
          delay(2);
          Vueltas=Vueltas+1;
       }}
              Serial.print("Vueltas =");
       Serial.println(Vueltas);
       }
        
    if (linea1.indexOf("Apagar")>0){//Buscamos en la primera linea Apagar
        Vueltas=0;
        Serial.println("Recibio señal de apagado")
        Serial.print("Vueltas =");
        Serial.println(Vueltas);
          if(auxiliar=0 or Vueltas>64*64){
            digitalWrite(IN1,0);
            digitalWrite(IN2,0);
            digitalWrite(IN3,0);
            digitalWrite(IN4,0);}
            }
 
     client.flush();
     Serial.println("Enviando respuesta:....");
     // Encabezado http
     client.println("HTTP/1.1 200 OK");
     client.println("Content-Type: text/html");
     client.println("Connection: close");// la conexion se cierra despues de 
     client.println();
     //Pagina html para el navegador
     client.println("<!DOCTYPE HTML>");
     client.println("<html>");
     client.println("<head><title>Joaquin Marquisa</title>");
     client.println("<body>");
     client.println("<h1 align='center'>Motor paso a paso</h1>");
     client.println("<div style='text-align:center;'>");
     client.println("
");
     client.println("<button onClick=location.href='./Prender'>Prender Motor</button>");
     client.println("<button onClick=location.href='./Apagar'>Apagar Motor</button>");
     client.println("
");
     client.println("</div>");
     client.println("</body>");
     client.println("</html>");
  
     delay(1);
     Serial.println("respuesta Enviada");
     Serial.println();
  }
      
}

Es como que hace todo super rápido y no permite controlar el motor.
He probado usar una variable auxiliar y sacar la parte del motor al final del codigo y tampoco funciona.

Sepan disculpar si es alguna cosa básica que se me esta escapando, estoy arrancando con este mundo

A ver.. como siempre digo, hay dos cosas. el comando via HTML y el control del motor.
Probaste el control del motor SOLO?

Yo empezaría por ahi, ver que ocurre?, compartes GND con el driver del motor? Los drivers de motor requieren 5V asi que con los 3.3V del eSP8266 no va a funcionar.

Que driver usas?

De donde sacas los 5V?