在萬物互聯的時代,各家互聯網公司都大力推廣物聯網平臺,WIFI作為連接平臺的其中一種樞紐,ESP8266就是其中的一個典型代表。ESP8266模塊內置TCP/IP協議棧,采用串口AT指令集操作方式,操作簡單。
ESP8266工作模式有AP、STA、AP+STA共存模式;內置TCP/IP協議棧,通信方式支持TCP和UDP兩種方式。
TCP/IP協議源于1969年,是針對Internet開發的一種體系結構和協議標準,目的在于解決異種計算機網絡的通信問題。使得網絡在互聯時能為用戶提供一種通用、一致的通信服務。是Internet采用的協議標準。 TCP/IP是一組通信協議的代名詞,是由一系列協議組成的協議簇。它本身指兩個協議集:
TCP(傳輸控制協議)。
IP(互聯網絡協議)。
TCP協議:
即傳輸控制協議,是一個可靠的、面向連接的協議。 具有連接建立、數據傳輸和連接釋放這三個階段,在傳送數據時是按序傳送的。
UDP協議:
采用無連接的方式,不管發送的數據包是否到達目的主機,數據包是否出錯。收到數據包的主機也不會告訴發送方是否正確收到了數據,它的可靠性是由上層協議來保障的。
1.STA+UDP相關配置指令
"AT\r\n",//測試指令
"AT+RST\r\n",
"ATE0\r\n",
"AT+CWMODE=1\r\n",//STA模式
"AT+CWJAP="360WIFI_123","12345678"\r\n",//連接WIFI
"AT+CIFSR\r\n",//查詢IP
"AT+CIPSTART="UDP","172.20.7.2",10500,8080,0\r\n",//建立UDP
"AT+CIPMODE=1\r\n",//設置透傳模式
"AT+CIPSEND\r\n",//發送數據
2.STA+UDP模式配置函數設計
/*******************************************************************************************************************
**形參: wifi_name --WIFI名
** password --密碼
** remote_ip --遠端IP地址(255.255.255.255為廣播地址)
** remote_prot --遠端端口號
** localhost ---本地端口號
**返回值:0 --成功,
** 其它值 --失敗
**示例:ESP8266_UDP_STA_Mode("360WIFI_123","12345678","172.20.7.2",10500,8080);
*********************************************************************************************************************/
u8 ESP8266_UDP_STA_Mode(u8 *wifi_name,u8 *password,u8 *remote_ip,u16 remote_prot,u16 localprot)
{
char buff[100];
u8 i=0;
for(i=0;i<5;i++)
{
USARTx_SendStr(USART3,(u8 *)"+++"); //退出透傳模式
Delay_Ms(1000);
printf("1.測試指令.......\r\n");
if(ESP8266_SendCmd((u8 *)"AT\r\n",(u8 *)"OK")==0)break;
}
if(i==5)return 1;
printf("2.重啟模塊.......\r\n");
USARTx_SendStr(USART3,(u8 *)"AT+RST\r\n");
Delay_Ms(1000);
Delay_Ms(1000);
printf("3.關回顯.......\r\n");
if(ESP8266_SendCmd((u8 *)"ATE0\r\n",(u8 *)"OK"))return 2;
printf("4.設置為STA模式.......\r\n");
if(ESP8266_SendCmd((u8 *)"AT+CWMODE=1\r\n",(u8 *)"OK"))return 3;
printf("6.連接WIFI.......\r\n");
snprintf(buff,sizeof(buff),"AT+CWJAP=\"%s\",\"%s\"\r\n",wifi_name,password);
if(ESP8266_SendCmd((u8 *)buff,(u8 *)"OK"))return 5;
printf("7.查詢IP.......\r\n");
if(ESP8266_SendCmd((u8 *)"AT+CIFSR\r\n",(u8 *)"OK"))return 6;
ESP8266_GetData((char *)usart3_rx_buff,esp8266_info.ipaddr,"STAIP");
printf("8.建立UDP連接.....\r\n");
snprintf(buff,sizeof(buff),"AT+CIPSTART=\"UDP\",\"%s\",%d,%d,0\r\n",remote_ip,remote_prot,localprot);
if(ESP8266_SendCmd((u8 *)buff,(u8 *)"OK"))return 7;
printf("9.設置透傳.......\r\n");
if(ESP8266_SendCmd((u8 *)"AT+CIPMODE=1\r\n",(u8 *)"OK"))return 8;
printf("10.發送數據.......\r\n");
if(ESP8266_SendCmd((u8 *)"AT+CIPSEND\r\n",(u8 *)">"))return 9;
esp8266_info.port=localprot;
return 0;
}
運行效果:
-
TCP
+關注
關注
8文章
1351瀏覽量
78995 -
UDP
+關注
關注
0文章
324瀏覽量
33882 -
ESP8266
+關注
關注
50文章
962瀏覽量
44852
發布評論請先 登錄
相關推薦
評論