Arduino e ESP8266

Salve a tutti, da qualche tempo sto cercando di dotare il mio arduino di una connessione wifi. Il progetto per cui ne ho la necessità è una stazione meteo che invia mediante un url i dati su un database Mysql, attualmente il mio progetto utilizza una ethernet shield, ora però vorrei provare a renderla “wireless” quindi ho deciso di acquistare un esp-01 con il relativo adattatore per non aver problemi di alimentazione, ho provato il suo funzionamento attraverso il seguente codice e funziona tutto.

#include <SoftwareSerial.h>

SoftwareSerial esp8266(2, 3);

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(115200);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

  Serial.println("Started");

  // set the data rate for the SoftwareSerial port
  esp8266.begin(115200);
  esp8266.write("AT\r\n");
}

void loop() {
  if (esp8266.available()) {
    Serial.write(esp8266.read());
  }
  if (Serial.available()) {
    esp8266.write(Serial.read());
  }
}

Quindi sono subito passato a creare lo sketch per il mio scopo, attraverso degli esempi trovati in rete. Ma qui noto che il mio codice si blocca subito dopo il reset del modulo dandomi come risposta in seriale “OK NOT FOUND”, qui sotto vi allego una parte del codice con cui ho problemi

#include <SoftwareSerial.h>
#include <Wire.h>


SoftwareSerial esp8266(2, 3);               // RX, TX

String network = "wificasa";                            // your access point SSID
String password = "-";                  // your wifi Access Point password
#define IP "-"                        // IP address of thingspeak.com
String GET = "GET /update?key=----------------";    // replace with your channel key


void setup()
{
    Serial.begin(9600);                             // Setting hardware serial baud rate to 9600
    
  esp8266.begin(9600);                        // Setting softserial baud rate to 9600
  delay(2000);
}

void loop() 
{
    setupesp8266();                                   
    delay(30000);
}

//-------------------------------------------------------------------
// Following function setup the esp8266, put it in station made and 
// connect to wifi access point.
//------------------------------------------------------------------
void setupesp8266()                                   
{

      Serial.println("Reseting esp8266");
    esp8266.flush();
    esp8266.println(F("AT+RST"));
    delay(10000);
    if (esp8266.find("OK"))
    {
        Serial.println("Found OK");
        Serial.println("Changing espmode");
  
      esp8266.flush();
      changingMode();
      delay(5000);
      esp8266.flush();
      connectToWiFi();
    }
    else
    {

        Serial.println("OK not found");

    }
}

//-------------------------------------------------------------------
// Following function sets esp8266 to station mode
//-------------------------------------------------------------------
bool changingMode()
{
    esp8266.println(F("AT+CWMODE=1"));
    if (esp8266.find("OK"))
    {

        Serial.println("Mode changed");
  
      return true;
    }
    else if(esp8266.find("NO CHANGE")){

        Serial.println("Already in mode 1");

      return true;
    }
    else
    {

        Serial.println("Error while changing mode");
        
      return false;
    }
}

//-------------------------------------------------------------------
// Following function connects esp8266 to wifi access point
//-------------------------------------------------------------------
bool connectToWiFi()
{

    Serial.println("inside connectToWiFi");
    
  String cmd = F("AT+CWJAP=\"");
  cmd += network;
  cmd += F("\",\"");
  cmd += password;
  cmd += F("\"");
  esp8266.println(cmd);
  delay(15000);
  
  if (esp8266.find("OK"))
  {
   
      Serial.println("Connected to Access Point");
      
    return true;
  }
  else
  {
   
      Serial.println("Could not connect to Access Point");
      
    return false;
  }
}

//-------------------------------------------------------------------
// Following function sends sensor data 
//-------------------------------------------------------------------
void updateTemp(String voltage1,String voltage2)
{  
  String cmd = "AT+CIPSTART=\"TCP\",\"";
  cmd += IP;
  cmd += "\",80";
  esp8266.println(cmd);
  delay(5000);
  if(esp8266.find("Error")){
    
      Serial.println("ERROR while SENDING");
      
    return;
  }
  cmd = GET + "&field1=" + voltage1 + "&field2=" + voltage2 + "\r\n";
  esp8266.print("AT+CIPSEND=");
  esp8266.println(cmd.length());
  delay(15000);
  if(esp8266.find(">"))
  {
    esp8266.print(cmd);
    
      Serial.println("Data sent");
    
  }else
  {
    esp8266.println("AT+CIPCLOSE");
    
      Serial.println("Connection closed");
      
  }
}

1° Sketch funzionante esp8266.begin(115200);

2° Sketch non funzionante esp8266.begin(9600);