注意:ESP8266需要与单片机同时初始化,即共RESER端。
详细 : https://docs.espressif.com/projects/esp-at/zh_CN/latest/esp32/AT_Command_Set/Wi-Fi_AT_Commands.html
AT 启动AT测试
AT+RST 重启模块
AT+GMR 查看版本信息
AT+RESTORE 恢复出厂设置
AT+CWMODE=1/2/3 设置工作模式(1 -> Station 2 -> AP 3 -> AP+Station)
AT+CWSAP_DEF="WIFI名称","WIFI密码",通道号,加密方式 设置WIFI参数(只在AP开启后生效)
(通道建议:1,6,11)
(加密方式:0 -> OPEN 2 -> WPA_PSK 3 -> WPA2_PSK 4 -> WPA2_PSK)
AT+SAVETRANSL INK=1,"192.168.4.1",8080,"TCP" 开启开机透传,设置IP,端口号,建立TCP连接
(+++可以退出透传,不需要加换行)
两种通信方式:
(一),第三方热点,两个ESP8266连接,其中一个做TCP的服务器,一个做客户端(内网)。
(二),两个ESP8266-01S ,一个做TCP的服务器,一个做客户端(外网)。
//==========================================注意电压,必需稳定!!=========================================================
//设置ESP8266-01S为服务器Sever
/*
* wifi_name: WIFI名称
* wifi_password:WIFI密码
* chennel:WIFI通道
* mode: WIFI加密方式 例如:3 -> WPA2_PSK
* port_num: TCP端口号
*/
void ESP8266_Sever_Init(char* wifi_name,char* wifi_password,uint8_t chennel,uint8_t mode,uint16_t port_num)
{
printf("AT+RESTORE\r\n"); //恢复出厂设置
//or printf("AT+RES\r\n");
HAL_Delay(500);
printf("AT+CWMODE=2\r\n"); //设置WiFi为Station模式
HAL_Delay(500);
//连接WiFi,“热点名”,“热点密码”,通道5,加密方式为 WPA2_PSK
printf("AT+CWSAP=\"%s\",\"%s\",%d,%d\r\n",wifi_name,wifi_password,chennel,mode);
HAL_Delay(1500);
printf("AT+CIPMUX=1\r\n"); //启动多链接模式
HAL_Delay(500);
printf("AT+CIPSERVER=1,%d\r\n",port_num); //开启TCP Server ,端口设置为8080
HAL_Delay(500);
}
//======================================================客户端========================================================
//设置ESP8266-01S为客户端Client
/*
* wifi_name: WIFI名称
* wifi_password:WIFI密码
* IP:主机地址 例如: "192.168.4.1"
* port_num: TCP端口号
*/
void ESP8266_Client_Init(char* wifi_name,char* wifi_password,char* IP ,uint16_t port_num)
{
HAL_GPIO_TogglePin(GPIOC,LED_Pin);
printf("AT+RESTORE\r\n"); //设置WiFi为Station模式
//or printf("AT+RES\r\n");
HAL_Delay(2000); //这个时间变短,可能初始化失败
HAL_GPIO_TogglePin(GPIOC,LED_Pin);
printf("AT+CWMODE=1\r\n"); //设置WiFi为Station模式
HAL_Delay(1000);
HAL_GPIO_TogglePin(GPIOC,LED_Pin);
//连接WiFi,“热点名”,“热点密码”
printf("AT+CWJAP=\"%s\",\"%s\"\r\n",wifi_name,wifi_password);
HAL_Delay(4000);
HAL_GPIO_TogglePin(GPIOC,LED_Pin);
//连接上面创建的服务器,地址可以用AT+CIFSR查询出来,APIP后面的地址就是,端口号也要对应
printf("AT+CIPSTART=\"TCP\",\"%s\",%d\r\n",IP,port_num);
HAL_Delay(2000);
HAL_GPIO_TogglePin(GPIOC,LED_Pin);
printf("AT+CIPMODE=1\r\n");//设置透传模式
HAL_Delay(500);
HAL_GPIO_TogglePin(GPIOC,LED_Pin);
printf("AT+CIPSEND\r\n");//用于在wifi 透传模式下传输数据
HAL_Delay(500);
}