Selector de colores con transmisión WIFI

Muy buenos dias a todos , el siguiente proyecto es un selector de colores que me permite trasmitir los datos del contador via wifi, en una pagina web local ,utilizando la tarjeta WEMOS D1, al momento de consultar la direccion desde un buscador este interfiere con el proyecto en si y hace que los servomotores se vuelvan locos ,como puedo solucionarlo, estoy utilizando comandos AT desde arduino para poder configurar el modulo wifi D1 wemos

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
#include <SoftwareSerial.h>  // libreria que permite establecer pines digitales
// para comunicacion serie (UART)
SoftwareSerial D1(12, 13);  // pin 10 como RX, pin 11 como TX
#define S0 3
#define S1 4
#define S2 5
#define S3 6
#define sensorOut 7
LiquidCrystal_I2C lcd(0x3F,16,2);  // Inicia el LCD en la dirección 0x27, con 16 caracteres y 2 líneas
Servo topServo;
Servo bottomServo;
Servo selecServo;
int frequency = 0;
int color=0;

//Variables conteo 
int val_RED=0; 
int val_YEL=0;
int val_GRE=0;
int val_BLU=0;
//infrarrojo
const byte pinObs=11;
int hayObs=HIGH;

void setup() {
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(2,INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(2),borrar,FALLING);
  pinMode(sensorOut, INPUT);
  pinMode(pinObs,INPUT);
  // Setting frequency-scaling to 20%
  digitalWrite(S0, HIGH);
  digitalWrite(S1, LOW);
  topServo.attach(8);
  bottomServo.attach(9);
  selecServo.attach(10);
  Serial.begin(9600);
   D1.begin(9600);    // incializa a 9600 bps la comunicacion con D1 Mini
 
 D1.println("AT+CWMODE=1");   // establece modo cliente (station)
 delay(1000);
 D1.println("AT+CWJAP=\"VECTOR\",\"12345epn\"");   // unirse a la red local
 delay(10000);
 D1.println("AT+CIPMUX=1");   // establece multiples conexiones en simultaneo
 delay(1000);
 D1.println("AT+CIPSERVER=1,80"); // inicia servidor web en puerto 80
 delay(1000);
 D1.println("AT+CIPSTA=\"192.168.1.115\"");
 delay(1000);


    lcd.init();
    lcd.backlight(); 
    lcd.setCursor(0, 0); //columna(0-15),filas(0-1)
    lcd.print("COLOR SENSOR"); 
    lcd.setCursor(0, 1);
    lcd.print("TIUPUL-DIAZ"); 
    delay(5000);
    lcd.clear();

  
}
void borrar (){
  delay(200);
val_RED=0; 
val_YEL=0;
val_GRE=0;
val_BLU=0;
  
}


void loop(){

    selecServo.write(43);
    delay(500);
    lcd_imprimir();
    hayObs=digitalRead(pinObs);
if(hayObs==LOW){
    

    for(int i = 60; i > 43; i--) {      // lectura de provision- sensor
    selecServo.write(i);
    delay(100);     //2
 }
 //delay(1000);  
  //SMS encedido 
  topServo.write(70);
  delay(500);

  for(int i = 70; i > 32; i--) {      // lectura de provision- sensor
    topServo.write(i);
    delay(10);     //2
  }
  delay(1000);
  
  color = readColor();
  delay(10);  
  switch (color) {
    case 1:
    bottomServo.write(45);    //50 rojo  
    delay(500);
    val_RED++;
    break;
    case 2:
    bottomServo.write(70);   //100 verde 
    val_GRE++;
    delay(500);
    break;
    case 3:
    bottomServo.write(125);   //125 amarillo 
    val_YEL++;
    delay(500);
    break;
    case 4:
    bottomServo.write(150);   //175 azul
    val_BLU++;
    delay(500);
    break;
    
    case 0:
    break;
  }
  delay(300);
  
  for(int i = 32; i > 1; i--) {   //72- 29
    topServo.write(i);
    delay(10);   //2
  } 
  delay(200);
  
  for(int i = 1; i < 70; i++) {    //29-72
    topServo.write(i);
    delay(10);   //2
  }
  color=0;
}else{
  //SMS Dispositivo apagado 

  topServo.write(70);
  bottomServo.write(90);
  selecServo.write(43);
  lcd_imprimir();
  }
delay(150);
  if(D1.available()){      // si hay datos disponibles desde el modulo
  delay(1000);
 if(D1.find("+IPD,")){      // busca por cadena +IPD,
  int conexion = D1.read()-48;    // lee el byte, resta 48 y almacena en variable conexion
 
 String pagina = "<!doctype html><html><head><meta http-equiv=\"refresh\" content=\"4\"></head><body>";
 pagina += "<h1>ROJO: ";   // cadena pagina con HTML incluido refesco cada 15 seg.
 int valRojo = val_RED ; // obtiene valor del conteo de rojo y lo almacena en una varible
 pagina += String(valRojo);   // agrega a cadena el valor de rojo convertido a String
 pagina += "
";      // agrega a cadena etiqueta para nueva linea
 pagina += "VERDE: ";     // agrega a cadena el texto Verde:
 int valVerde = val_GRE;  // obtiene valor de verde y almacena en variable
 pagina += String(valVerde);     // agrega a cadena el valor de verde convertido a String
 pagina += "
";      // agrega a cadena etiqueta para nueva linea
 pagina += "AZUL: "; // agrega a cadena el texto azul:
 int valAzul = val_BLU;// obtiene valor de azul y almacena en variable
 pagina += String(valAzul);
 pagina += "
";      // agrega a cadena etiqueta para nueva linea
 pagina += "AMARILLO: "; // agrega a cadena el texto amarillo:
 int valAmarillo =val_YEL;
 pagina += String(valAmarillo); 
 pagina += "</h1></body></html>"; // agrega etiquetas para cerrar el codigo HTML
 
 String enviar = "AT+CIPSEND=";   // crea cadena enviar con comando AT para enviar datos
 enviar+=conexion;      // agrega a la cadena el numero de conexion
 enviar+=",";       // agrega a la cadena una coma
 enviar+=pagina.length();   // agrega a la cadena la longitud de la cadena pagina
 D1.println(enviar);      // envia cadena enviar por conexion serie al modulo
 delay(1000);
 D1.println(pagina);      // envia cadena pagina por conexion serie al modulo
 delay(1000);
 
 String cerrar = "AT+CIPCLOSE=";  // crea cadena cerrar con comando AT para cerrar conexion
 cerrar+=conexion;      // agrega a cadena cerrar el numero de conexion
 D1.println(cerrar);      // envia la cadena cerrar por conexion serie al modulo
 delay(2000);
 }
 }

}
// Custom Function - readColor()
int readColor() {
  // Setting red filtered photodiodes to be read
  digitalWrite(S2, LOW);
  digitalWrite(S3, LOW);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  int R = frequency;
  // Printing the value on the serial monitor
  Serial.print("R= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.print("  ");
  delay(50);
  // Setting Green filtered photodiodes to be read
  digitalWrite(S2, HIGH);
  digitalWrite(S3, HIGH);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  int G = frequency;
  // Printing the value on the serial monitor
  Serial.print("G= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.print("  ");
  delay(50);
  // Setting Blue filtered photodiodes to be read
  digitalWrite(S2, LOW);
  digitalWrite(S3, HIGH);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  int B = frequency;
  // Printing the value on the serial monitor
  Serial.print("B= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.println("  ");
  delay(50);
  if(R<=148 & R>=125 & G<=230& G>=160){
    color = 1; // Red 40
    
  }
  if(R<=140 & R>=120 & G<=144 & G>=115){
    color = 2; // Green 75
    
  }
  if(R<=115 & R>=90 & G<=140 & G>=110){
    color = 3; // Yellow 115
    
  }
  if (G<=155 & G>=130 & B<=100 & B>=80){
    color = 4; // Blue 145
    
  }
  return color;  
}

//funcion LCD
int lcd_imprimir(){
    lcd.setCursor(0, 0); //columna(0-15),filas(0-1)
    lcd.print("RED:GRE:BLU:YEL:");    //NOMBRES COLORES
    lcd.setCursor(0, 1);              //VALOR ROJO
    lcd.print(val_RED); 
    lcd.setCursor(4, 1);              //VALOR VERDE
    lcd.print(val_GRE);
    lcd.setCursor(8, 1);              //VALOR AZUL
    lcd.print(val_BLU);
    lcd.setCursor(12, 1);             //VALOR ANMARILLO
    lcd.print(val_YEL);
   
  }

SensorColor_UNOv6.ino.ino (7.66 KB)