ESP2866-12 + Arduino

Fiz esse programa aqui e deu um erro que eu não achei na internet:

//Inclui as funções de Wifi do ESP#include <ESP8266WiFi.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>

//Cria um server na porta 80 (porta
//padrão para onde os navegadores 
//enviam as requisições http)
WiFiServer server(80);

#include "EmonLib.h"
 
EnergyMonitor SCT013;
 
int pinSCT = A0;   //Pino analógico conectado ao SCT-013
 
float tarifa = 0.59; //*************************************************************************************************************
int tensao = 220; //************************************************************************************************************************
double custo = 0;
int consumo = 0;
double potencia = 0.0000;
long tempo = 0;

void setup(){
    Serial.begin(115200);
      SCT013.current(pinSCT, 6.0606);
    Serial.print("Conectando");
  //Faz o ESP se conectar à rede WiFi. No nosso exemplo o ssid 
  //da rede é TesteESP e a senha é 87654321
  WiFi.begin("SENAI BIBLIOTECA", "moppcla6249"); //*****************************************************************************************************************
//Enquanto o ESP não se conectar à rede
 while (WiFi.status() != WL_CONNECTED)
 
 {
   //Esperamos 100 milisegundos
   delay(100);
   Serial.print(".");
 }
  
 //Se chegou aqui é porque conectou à rede, então mostramos 
 //no monitor serial para termos um feedback
 Serial.println("");
 Serial.println("Conectou");
 
 //Configurações do IP fixo. Você pode alterar 
 //conforme a sua rede ************************************************************************************************************************************
 IPAddress ip(192, 168, 1, 1); 
 IPAddress gateway(255, 255, 255, 0);
 IPAddress subnet(255, 255, 255, 0);
 Serial.print("Configurando IP fixo para : ");
 Serial.println(ip);
 //Envia a configuração
 WiFi.config(ip, gateway, subnet);
//Inicializa o server que criamos na porta 80
 server.begin();
  
 //Mostramos no monitor serial o IP que o ESP possui para verificarmos se 
 //é o mesmo que configuramos
 Serial.print("Server em: ");
 Serial.println(WiFi.localIP());
}

void loop() {  

//Verifica se algum cliente está tentando se conectar
  WiFiClient client = server.available();
  if (!client)
  {
    //Se não houver nenhum cliente podemos retornar pois não há nada a fazer
    return;
  }
 
  Serial.println("Novo cliente conectou");
  //Esperamos até que o cliente nos envie a requisição
  while (!client.available())
  {
    delay(100);
  }
   //Fazemos a leitura da requisição
  String req = client.readStringUntil('\r');
  Serial.print("Requisição: ");
  Serial.println(req);

//Este é o html que iremos retornar para o cliente
  //É composto basicamente de dois botões (ON e OFF) para o GPIO0 e dois botões (ON e OFF) para o GPIO2
  //A parte que nos interessa é o <a href=' com a ação vinculada a cada botão
  //Quando clicamos em um destes botões essa informação chegará até o ESP para que ele verifique qual ação deve executar
  //A parte dentro de '<style>' é apenas para modificarmos o visual da página que será exibida, você pode alterá-la como queira
  String html =
 " <html>"
   "<head>"
    "<h1>AUTOSHOWER</h1>"
  "</head>"
      "<style>"
      "  h1{"
       "   color:#2af;"
      "  }"
        "  h2{"
        "  color:#000;"
       " }"
       "body{"
         " text-align: center;"
         " font-family: arial;"
         " font-size:14px;"
          "padding: 25px;"
       " }"
 
       " p{"
        "  color:#000;"
        "  }"
       " }"
      "  button{"
         " outline: none;"
         " border: 2px solid #2af;"
         " border-radius:18px;"
         " background-color:#FFF;"
         " color: #2af;"
         " padding: 10px 50px;"
        "}"
  ""
     "   button:active{"
         " color: #fff;"
         "background-color:#1fa3ec;"
       " }"
     " </style>"
   " </head>"
   " <body>"
"<h2>Mês Atual</h2>"
  " <p id='consumo'>Consumo: </p>"
  " <p id='custo'>Custo: </p>"
  " </body"

  " Refresh();"
   "setInterval(refresh, 1000);"
  " function refresh()"
   "{"
    " refresConsumo()"
    " refreshCusto();"
   "}"
"function refreshConsumo()"
   "{"
   "  var xmlhttp = new XMLHttpRequest();"
   "  xmlhttp.onreadystatechange = function() {"
      " if (xmlhttp.readyState == XMLHttpRequest.DONE && xmlhttp.status == 200){"
      "  document.getElementById('consumo').innerHTML = 'Consumo: ' + JSON.parse(xmlhttp.responseText).consumo + 'C';"
      " }"
    " };"
    " xmlhttp.open('GET', 'http://[INSIRA O IP]/consumo', true);"
    " xmlhttp.send();"
  " }"
"function refreshCusto()"
 "  {"
   "  var xmlhttp = new XMLHttpRequest();"
    " xmlhttp.onreadystatechange = function() {"
    "   if (xmlhttp.readyState == XMLHttpRequest.DONE && xmlhttp.status == 200){"
     "   document.getElementById('custo').innerHTML = 'Custo: ' + JSON.parse(xmlhttp.responseText).custo + 'C';"
    "   }"
    " };"
   "  xmlhttp.open('GET', 'http://[INSIRA O IP]/custo', true);"
   "  xmlhttp.send();"
  " }"
"</html>";
  
  //Escreve o html no buffer que será enviado para o cliente
  client.print(html);
  //Envia os dados do buffer para o cliente
  client.flush();
  double Irms = SCT013.calcIrms(1480);   // Calcula o valor da Corrente   
 for (Irms>0; tempo<2592000; tempo++){

    potencia= potencia + (Irms*tensao);
  delay (1000);
 }
  consumo = potencia * 0,000000277777777;
  custo = consumo * tarifa;
  
  //Fecha a conexão com o cliente
   client.stop();
   Serial.println("Cliente desconectado");
  }

Erro:

Arduino: 1.8.6 (Windows 7), Placa:"Generic ESP8266 Module, 80 MHz, Flash, ck, 26 MHz, 40MHz, QIO, 512K (no SPIFFS), 2, v2 Lower Memory, Disabled, None, Only Sketch, 115200"
O sketch usa 266052 bytes (53%) de espaço de armazenamento para programas. O máximo são 499696 bytes.
Variáveis globais usam 30752 bytes (37%) de memória dinâmica, deixando 51168 bytes para variáveis locais. O máximo são 81920 bytes.
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed
Este relatório teria mais informações com
"Mostrar a saida detalhada durante a compilação"
opção pode ser ativada em "Arquivo -> Preferências"

Boas
Esse erro está te a dizer que não conseguiu subir o firmware para o ESP.Verifica as ligações ou a porta serie que tens atribuída ao ESP.
Que board estas a usar?
Algumas placas fazem o reset necessário para carregar um novo firmware outras mais antigas não...