Arduino Nano Serial を介して ESP8266-07 と通信しようとしています。AT コマンドを使用して、リセット、wifi の接続、TCP サーバーの接続などを行っています。機能するスクリプトが 1 つあるので、ESP8266 が正しく配線されていることがわかります。私は 3.3V から 5V へのロジック コンバーターなどを使用しています... これは古い機能スクリプトです。
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() の使い方は正しいですか?