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,在透传模式时不会有返回。

  • 5
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Arduino ESP8266 TCP透传是一种将数据通过TCP协议传输的技术。它可以让ArduinoESP8266模块之间进行通信,实现数据的传输和控制。通过TCP透传,可以实现远程控制、数据采集等功能。同时,它也可以应用于物联网、智能家居等领域。 ### 回答2: Arduino是一款广泛应用在嵌入式设备中的开源电子平台,通过Arduino开发板可以实现许多智能化设备。ESP8266是一款基于WiFi模块的芯片,可以与其他电子设备进行连接和数据交互。TCP透传是基于TCP/IP协议中的透传方式实现的一种数据交互方式,可以将数据包通过TCP/IP协议直接传输。 ArduinoESP8266通过串口通信可以实现数据传输,而利用TCP透传,则可以实现两者之间的无线连接,同时充分利用ESP8266的WiFi模块进行网络通信,从而实现无线控制。 在实现TCP透传时,需要首先在ESP8266中搭建一个Web服务器,建立一个TCP连接,并监听指定端口。同时,在Arduino端,利用ESP8266的AT指令,将需要发送的数据经过封装,发送到指定的IP和端口上,从而实现两端之间的数据交互。 在使用TCP透传时,需要注意以下几点: 1. 端口号需要匹配,Arduino需要发送数据到ESP8266监听的同一端口; 2. 数据包需要进行大小限制,以避免网络拥塞或内存溢出等问题; 3. 数据需要进行可靠性保障,例如数据校验和传输成功确认等措施。 总之,通过使用TCP透传ArduinoESP8266可以实现两端之间的无线连接和数据交互,从而实现更加智能化的电子设备控制。 ### 回答3: Arduino ESP8266 TCP透传是一种通过ESP8266 WiFi模块与Arduino芯片进行通信的技术,它可以实现两个设备间的数据传输。具体来说,通过TCP协议将数据通过ESP8266模块传输到远程设备,实现两个设备之间的数据通信。 在使用Arduino ESP8266 TCP透传时,需要先将ESP8266模块和Arduino芯片连接。ESP8266模块的WiFi功能可以让其通过网络与远程设备通信,而Arduino芯片则通过代码控制信息的发送和接收。在将数据传输到远程设备时,ESP8266模块可以充当TCP客户端或TCP服务器。当ESP8266模块作为TCP客户端时,它将连接到远程TCP服务器,等待连接成功后将数据发送给服务器。当ESP8266模块作为TCP服务器时,它将等待远程TCP客户端连接,连接成功后将与客户端进行通信。 在使用Arduino ESP8266 TCP透传时,需要注意几个方面。首先,需要确保ESP8266Arduino之间的通信传输是可靠的。其次,需要确保发送和接收的数据格式正确,并且数据长度不超过ESP8266模块的缓冲区大小。最后,在使用ESP8266模块作为TCP服务器时,需要注意确保TCP客户端的连接安全性。 总之,Arduino ESP8266 TCP透传是一种实现两个设备间数据通信的技术。通过ESP8266模块和Arduino芯片的合作,可以轻松地实现数据的传输。在使用时需要注意数据传输的可靠性和数据格式的正确性,确保数据能够准确地传输到远程设备。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值