Arduino 自动初始化ESP8266为透传模式

来源:互联网 发布:上海华测导航待遇知乎 编辑:程序博客网 时间:2024/06/06 01:47

通过上篇可以把esp8266设置成透传模式,但掉电后esp8266会退出透传模式,需要重新初始化,这样arduino和esp8266结合使用时,每次重启后都要通过电脑重新设置esp8266进入透传模式,这里通过把AT指令写进arduino程序中来实现上电自动初始化esp8266。上代码。

#include <SoftwareSerial.h>boolean firstTime = true;String returnStr = "";SoftwareSerial mySerial(13, 12); // RX, TXvoid setup() {  // Open serial communications and wait for port to open:  Serial.begin(9600);  while (!Serial) {    ; // wait for serial port to connect. Needed for native USB port only  }  Serial.println("Goodnight moon!");  // set the data rate for the SoftwareSerial port  mySerial.begin(9600);//set esp8266 boud 9600} void loop() { // run over and over    while(firstTime){        mySerial.println("test");        delay(800);        while(mySerial.available() > 0){                returnStr += char(mySerial.read());                delay(2);        }        if(returnStr.length() < 1){            firstTime = false;            break;        }                returnStr = "";        mySerial.println("AT+RST");        while(true){//wait for ok            while(mySerial.available() > 0){                returnStr += char(mySerial.read());                delay(2);            }            if(returnStr.lastIndexOf("invalid") != -1){                Serial.println(returnStr);                break;            }        }                returnStr = "";        mySerial.println("AT+CIPMODE=1");        while(true){//wait for ok            while(mySerial.available() > 0){                returnStr += char(mySerial.read());                delay(2);            }            if(returnStr.lastIndexOf("OK") != -1){                Serial.println(returnStr);                break;            }        }                returnStr = "";        mySerial.println("AT+CWJAP=\"Chen302lab\",\"au302lab\"");        while(true){//wait for ok            while(mySerial.available() > 0){                returnStr += char(mySerial.read());                delay(2);            }            if(returnStr.lastIndexOf("OK") != -1){                Serial.println(returnStr);                break;            }        }                returnStr = "";        mySerial.println("AT+CIPMUX=0");        while(true){//wait for ok            while(mySerial.available() > 0){                returnStr += char(mySerial.read());                delay(2);            }            if(returnStr.lastIndexOf("OK") != -1){                Serial.println(returnStr);                break;            }        }                        returnStr = "";        mySerial.println("AT+CIPSTART=\"TCP\",\"192.168.1.114\",8080");        while(true){//wait for ok                while(mySerial.available() > 0){                    returnStr += char(mySerial.read());                    delay(2);                }                if(returnStr.lastIndexOf("OK") != -1){                    Serial.println(returnStr);                    break;                }        }                returnStr = "";        mySerial.println("AT+CIPSEND");        while(true){//wait for ok                while(mySerial.available() > 0){                    returnStr += char(mySerial.read());                    delay(2);                }                if(returnStr.lastIndexOf("OK") != -1){                    Serial.println(returnStr);                    break;                }        }        firstTime = false;    }//        if (mySerial.available())         Serial.write(mySerial.read());    if (Serial.available()) {        mySerial.write(Serial.read());            }          }

这里把esp8266波特率设置为9600,esp8266短时间掉电不会退出透传模式,所以通过发送字符串test测试是否退出透传模式,如果退出了就会返回error,在透传模式时不会有返回。

0 0
原创粉丝点击