这是一个esp8266的代码
我想用另一个esp8266-01通过AT指令连接并正常通信应该怎么做,弄了好久了可以连接上但是一直无法通信
#include
#include
const char *ssid = "1213ESP826601"; //AP的SSID(WiFi名字)
const char *password = "345678910"; //AP的密码
int led = 14; //设置指示灯io,D5
int state_led=2; //IO2(D4),板载led,作为判断是否有设备连接
IPAddress sta_client; //保存sta设备的ip地址
/****************UDP设置项 *****************/
unsigned int read_Port = 8082; //监听端口
unsigned int send_Port = 8083; //发送端口
char readdata[512]; //数据缓存
WiFiUDP Udp; //定义udp
void setup()
{
Serial.begin(115200);
Serial.println("");
init_IO(); //初始化需要的IO引脚
init_AP();
Udp.begin(read_Port); //UDP设置监听指定端口
}
void loop()
{
//digitalWrite(led, 1);
int gotoAP=WiFi.softAPgetStationNum(); //获取当前连接到AP的设备数量
if (gotoAP==0)
{
digitalWrite(state_led, 1); //如果没有设备连接,熄灭WiFi状态LED
}
else
{
digitalWrite(state_led, 0); //如果有设备连接,点亮WiFi状态LED
Udp_Handler(Read_Udp());
}
}
//初始化io
void init_IO()
{
pinMode(led, OUTPUT);
digitalWrite(led, 0);
pinMode(state_led, OUTPUT); //设置指定io为输出模式
digitalWrite(state_led, 1); //初始化为高电平,关闭灯状态,板载led为低电平点亮
}
//初始化AP信息
void init_AP()
{
WiFi.mode(WIFI_AP); //设置为AP模式
WiFi.softAP(ssid, password); //配置AP信息,并开启AP
//默认IP为192.168.4.1 , 这里我自定义设置AP的ip段
IPAddress softLocal(192,168,1,1); //IP地址,用以设置IP第4字段
IPAddress softGateway(192,168,1,1); //IP网关,用以设置IP第3字段
IPAddress softSubnet(255,255,255,0);
//配置自定义的IP信息
WiFi.softAPConfig(softLocal, softGateway, softSubnet);
IPAddress myIP = WiFi.softAPIP(); //用变量myIP接收AP当前的IP地址
Serial.println(myIP); //打印输出myIP的IP地址
}
/*自定义函数
将接收的数据,以String类型返回,方便分析处理
*/
String Read_Udp() {
String data = "";
int packetSize = Udp.parsePacket();
if (packetSize) {
sta_client = Udp.remoteIP();
memset(readdata, 0x00, sizeof(readdata));
Udp.read(readdata, 511);
Udp.flush();
for (int i = 0; i < packetSize; i++) {
data += readdata[i];
}
Serial.println(data);
}
return data;
}
/************自定义函数,对接收数据分析处理************/
void Udp_Handler(String data) {
if (data != "") {
if (data == "打开") {
digitalWrite(led, 1);
myPrint("打开", 0);
}
else if (data == "关闭") {
digitalWrite(led, 0);
myPrint("关闭", 0);
}
else if (data == "请求") {
myPrint("收到", 0);
}
}
}
/*自定义函数
封装数据发送功能,方便调用
第一个参数,使用String类型作为发送内容
第二个参数,a为真,指定发送,对发送方返回数据,a为假,以保存的ip发送数据
*/
void myPrint(String data, bool a) {
if (a) {
Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
} else {
Udp.beginPacket(sta_client, send_Port);
}
Udp.print(data);
Udp.endPacket();
}
参考GPT和自己的思路:要使两个ESP8266通过AT指令连接并正常通信,需要以下步骤:
在ESP8266上配置SoftAP(软AP)并开启。
在ESP8266-01上使用AT指令连接到ESP8266的SoftAP。
通过UDP协议进行数据通信。
根据提供的代码,ESP8266已经配置好了SoftAP并开启了UDP监听端口。但在ESP8266-01上使用AT指令连接时,需要注意以下几点:
确保ESP8266-01上的固件版本支持AT指令模式。
将ESP8266-01的串口波特率设置为115200,与ESP8266一致。
使用AT+CWJAP="1213ESP826601","345678910" (SSID和密码与ESP8266一致)连接到ESP8266的SoftAP。可以在串口监视器中输入指令并查看返回值,确认连接成功。
在ESP8266-01上使用UDP协议与ESP8266进行数据通信。可以使用AT+CIPSTART="UDP","192.168.4.1",8082连接到ESP8266的UDP监听端口,并使用AT+CIPSEND发送数据。
根据提供的代码,ESP8266会返回接收到的数据,因此可以在ESP8266-01上通过发送"打开"、"关闭"、"请求"等数据进行测试。如果连接成功,ESP8266-01发送的数据应该能够被正确识别并响应。