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

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

#include <SoftwareSerial.h>
boolean firstTime = true;
String returnStr = "";
SoftwareSerial mySerial(13, 12); // RX, TX
void 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,在透传模式时不会有返回。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值