Я пытаюсь связаться с моим ESP8266-07 через Arduino Nano Serial. Я использую AT-команды для сброса, подключения Wi-Fi, подключения TCP-сервера и т. Д. У меня есть один функциональный скрипт, поэтому я знаю, что ESP8266 правильно подключен. Я использую 3.3V до 5V логического преобразователя и так далее ... Это старший функциональный скрипт:ESP8266 с командами Serial AT
void esp_connect() {
Serial.println("AT+RST");
delay(2);
esp_timefuse = millis();
while(Serial.find("ready") == false) {
if(esp_timefuse - millis() >= 5000)
esp_connect();
}
Serial.println("AT+CWMODE=3");
delay(2);
esp_timefuse = millis();
while(Serial.find("OK") == false) {
if(esp_timefuse - millis() >= 2000)
esp_connect();
}
Serial.println("AT+CWJAP=\"WiFi 7-pekiel\",\"43664366\"");
delay(2);
esp_timefuse = millis();
while(Serial.find("OK") == false) {
if(esp_timefuse - millis() >= 2000)
esp_connect();
}
Serial.println("AT+CIPMUX=1");
delay(2);
esp_timefuse = millis();
while(Serial.find("OK") == false) {
if(esp_timefuse - millis() >= 2000)
esp_connect();
}
Serial.println("AT+CIPSTART=0,\"TCP\",\"10.10.10.6\",3600");
delay(2);
esp_timefuse = millis();
while(Serial.find("OK") == false) {
if(esp_timefuse - millis() >= 2000)
esp_connect();
}
}
Но я не доволен. Я стараюсь сделать это лучше всего. Поэтому я написал этот скрипт:
void esp_connect() {
Serial.println("AT+RST");
Serial.flush();
Serial.setTimeout(5000);
if(Serial.find("ready"));
else esp_connect();
Serial.println("AT+CWMODE=3");
Serial.flush();
Serial.setTimeout(2000);
if(Serial.find("OK"));
else esp_connect();
Serial.println("AT+CWJAP=\"WiFi 7-pekiel\",\"43664366\"");
Serial.flush();
if(Serial.find("OK"));
else esp_connect();
Serial.println("AT+CIPMUX=1");
Serial.flush();
if(Serial.find("OK"));
else esp_connect();
Serial.println("AT+CIPSTART=0,\"TCP\",\"10.10.10.6\",3600");
Serial.flush();
if(Serial.find("OK"));
else esp_connect();
}
Когда я тестирую этот новый скрипт через последовательный монитор, все работает. Я имитирую ESP8266, поэтому просто набираю «OK» и «OK», как ESP8266. Но когда я подключаю его к ESP8266, ничего не работает. Где ошибка в моем сценарии? Является ли использование Serial.find() правильным?