私はESP8266-07とArduino Nano Serialを使って通信しようとしています。私はリセットするためにATコマンドを使用して、無線LANに接続し、TCPサーバーに接続します。私は1つの機能的なスクリプトを持っているので、私はESP8266が正しく配線されていることを知っています。私は3.3V〜5Vロジックコンバータなどを使用しています...これは古い関数スクリプトです:ESP8266とシリアル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をシミュレートしているので、ちょうどESP8266のように "OK"と "OK"とタイプするだけです。しかし、私はそれをESP8266に接続すると何も動作しません。スクリプトの間違いはどこにありますか?私のSerial.find()の使用法は正しいですか?