Article
arduino wifi模块 esp8266 AT指令详解
可用指令
* 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操作。
具体的截屏和后续测试会持续更新。