arduino wifi模块 esp8266 AT指令详解 - 云起网

云起网

您现在的位置是:首页> arduino文档手册 -> arduino wifi模块 esp8266 AT指令详解

Article

arduino wifi模块 esp8266 AT指令详解

云起网2018-10-11 arduino文档手册382
esp8266的AT指令有三类:基础指令; wifi功能指令; TCP/IP工具箱指令;

可用指令

*      AT指令有三:基础指令; wifi功能指令; TCP/IP工具箱指令;

*      基础指令:

*              AT                      测试指令

*              AT+RST              重启模块

*              AT+GMR             查看版本信息 

*      wifi功能指令:

*              AT+CWMODE      选择WIFI应用模式

*              AT+CWJAP          加入AP

*              AT+CWLAP          列出当前可用AP

*              AT+CWQAP         退出与AP的连接

*              AT+CWSAP          设置AP模式下的参数

*              AT+CWLIF            查看已接入设备的IP

*      TCP/IP工具箱指令

*              AT+ CIPSTATUS   获得连接状态

*              AT+CIPSTART      建立TCP连接或注册UDP端口号

*              AT+CIPSEND       发送数据

*              AT+CIPCLOSE     关闭TCP或UDP

*              AT+CIFSR            获取本地IP地址

*              AT+CIPMUX         启动多连接

*              AT+CIPSERVER    配置为服务器

*              AT+CIPMODE        设置模块传输模式

*              AT+CIPSTO           设置服务器超时时间


每一条指令一般对应4种操作方式:


               测试操作 AT+x=?       该命令用于查询设置命令或内部程序设置的参数以及其取值范围。


               查询操作 AT+x?         该命令用于返回参数的当前值


               设置操作 AT+x=xxxxx 该命令用于设置用户自定义的参数值。


               执行操作 AT+x           该命令用于执行受模块内部程序控制的变参数不可变的功能。

void setup() {
    Serial.begin(9600);
    Serial1.begin(115200);
}

void loop() {
if(Serial.available()){
  int command = Serial.read();
  switch(command) {
    case 48: Serial1.print("AT\r\n");break;// 0
    case 97: Serial.println("");Serial1.print("AT+RST\r\n");                                        break;   //a 复位
    case 98: Serial.println("");Serial1.print("AT+GMR\r\n");                                        break;   //b 显示版本信息 
    //------------------------------------------------------------------------------    
    case 99: Serial.println(""); Serial1.print("AT+CWMODE?\r\n");                                   break;   //c 查询模式  
    case 100: Serial.println("");Serial1.print("AT+CWMODE=3\r\n");                                  break;   //d 设定模式
    case 101: Serial.println("");Serial1.print("AT+CWJAP?\r\n");                                    break;   //e 查询AP信息
    case 102: Serial.println("");Serial1.print("AT+CWJAP=\"ssid\",\"password\"\r\n");               break;   //f 连接AP
    case 103: Serial.println("");Serial1.print("AT+CWLAP=<ssid>,< mac >,<ch>\r\n");                 break;   //G      
    case 104: Serial.println("");Serial1.print("AT+CWLAP\r\n");                                     break;   //h 
    case 105: Serial.println("");Serial1.print("AT+CWQAP=?\r\n");                                   break;   //i    
    case 106: Serial.println("");Serial1.print("AT+CWQAP\r\n");                                     break;   //j 断开AP   
    case 107: Serial.println("");Serial1.print("AT+CWSAP?\r\n");                                    break;   //k
    case 108: Serial.println("");Serial1.print("AT+CWSAP=<ssid>,<pwd>,<chl>,<ecn>\r\n");            break;   //l    
    case 109: Serial.println("");Serial1.print("AT+CWLIF\r\n");                                     break;   //m   
    //-------------------------------------------------------------------------------    
    case 110: Serial.println("");Serial1.print("AT+CIPSTART=\"TCP\",\"www.baidu.com\",80\r\n");     break;   //n 连接服务器
    case 111: Serial.println(""); 
              Serial1.print("AT+CIPMODE=0\r\n");delay(200); 
              Serial1.print("AT+CIPCLOSE\r\n");                                                     break;   //o 断开服务器
    case 112: Serial.println("");
              Serial1.print("AT+CIPMODE=1\r\n");delay(200);
              Serial1.print("AT+CIPSEND\r\n");  delay(200);                                         break;   //p         
   //------------------------------------------------------------------------------    
    case 113: Serial.println("");                                
              Serial1.print("GET / HTTP/1.1\n");
              Serial1.print("Host:www.baidu.com\n");
              Serial1.print("User-Agent: abc\n");
              Serial1.print("Connection: close\n");
              Serial1.print("\n");                                                                  break;   //q 连接Server
    case 114: Serial.println("");Serial1.print("AT+CLEAR");                                         break;   //u              
    case 115: Serial.println("");Serial1.print("AT+CLEAR");                                         break;   //u                      
    case 116: Serial.println("");Serial1.print("+++");  delay(200);Serial1.print("\n");             break;   //t 断开Server
    //------------------------------------------------------------------------------       
    case 117: Serial.println("");Serial1.print("AT+CIPMUX=1\r\n");                                  break;   //u 设置多点模式
    case 118: Serial.println("");Serial1.print("AT+CIPSERVER=1,5566\r\n");                          break;   //v 设置为服务器模,端口5566
    case 119: Serial.println("");Serial1.print("AT+CIPSEND=0,6\r\n");   delay(100);Serial1.print("123456");   break;   //w  发送数据到客户端
    case 120: Serial.println("");Serial1.print("AT+CIPSERVER=0\r\n");                               break;   //x  取消服务器模式
    case 121: Serial.println("");Serial1.print("AT+CIPMUX=0\r\n");                                  break;   //y  取消多点模式之后才可以断开AP
    default: Serial.println("");Serial1.println("Wrong command!");
   }
  }
  delay(100);  
  String cmd = "";
  int st = 0;
  while(Serial1.available()) {
      char feedback = Serial1.read();
      cmd += feedback;
      st = 1;
   }
  if(st == 1) {Serial.println(cmd); st = 0;}
}

注意事项

每条指令发送完要换行,8266才能正确识别指令和执行指令。

print内容包括双引号时候需要在双引号之前加 \ ,才能通过IDE的编译。

作为客户端访问服务器之后,如果不执行断开服务器指令,之后发送的指令不会被接收。

断开服务器的命令为发送"+++"加一个空行,服务器即可断开,之后可以进行AT操作。

具体的截屏和后续测试会持续更新。


文章评论

共有0条评论来说两句吧...