在萬物互聯(lián)的時代,各家互聯(lián)網(wǎng)公司都大力推廣物聯(lián)網(wǎng)平臺,WIFI作為連接平臺的其中一種樞紐,ESP8266就是其中的一個典型代表。ESP8266模塊內(nèi)置TCP/IP協(xié)議棧,采用串口AT指令集操作方式,操作簡單。
ESP8266工作模式有AP、STA、AP+STA共存模式;內(nèi)置TCP/IP協(xié)議棧,通信方式支持TCP和UDP兩種方式。
TCP/IP協(xié)議源于1969年,是針對Internet開發(fā)的一種體系結(jié)構(gòu)和協(xié)議標準,目的在于解決異種計算機網(wǎng)絡(luò)的通信問題。使得網(wǎng)絡(luò)在互聯(lián)時能為用戶提供一種通用、一致的通信服務(wù)。是Internet采用的協(xié)議標準。 TCP/IP是一組通信協(xié)議的代名詞,是由一系列協(xié)議組成的協(xié)議簇。它本身指兩個協(xié)議集:
TCP(傳輸控制協(xié)議)。
IP(互聯(lián)網(wǎng)絡(luò)協(xié)議)。
TCP協(xié)議:
即傳輸控制協(xié)議,是一個可靠的、面向連接的協(xié)議。 具有連接建立、數(shù)據(jù)傳輸和連接釋放這三個階段,在傳送數(shù)據(jù)時是按序傳送的。
UDP協(xié)議:
采用無連接的方式,不管發(fā)送的數(shù)據(jù)包是否到達目的主機,數(shù)據(jù)包是否出錯。收到數(shù)據(jù)包的主機也不會告訴發(fā)送方是否正確收到了數(shù)據(jù),它的可靠性是由上層協(xié)議來保障的。
1.STA+UDP相關(guān)配置指令
"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",//設(shè)置透傳模式
"AT+CIPSEND\r\n",//發(fā)送數(shù)據(jù)
2.STA+UDP模式配置函數(shù)設(shè)計
/*******************************************************************************************************************
**形參: 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.關(guān)回顯.......\r\n");
if(ESP8266_SendCmd((u8 *)"ATE0\r\n",(u8 *)"OK"))return 2;
printf("4.設(shè)置為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.設(shè)置透傳.......\r\n");
if(ESP8266_SendCmd((u8 *)"AT+CIPMODE=1\r\n",(u8 *)"OK"))return 8;
printf("10.發(fā)送數(shù)據(jù).......\r\n");
if(ESP8266_SendCmd((u8 *)"AT+CIPSEND\r\n",(u8 *)">"))return 9;
esp8266_info.port=localprot;
return 0;
}
運行效果:
-
TCP
+關(guān)注
關(guān)注
8文章
1377瀏覽量
79186 -
UDP
+關(guān)注
關(guān)注
0文章
327瀏覽量
34011 -
ESP8266
+關(guān)注
關(guān)注
50文章
962瀏覽量
45246
發(fā)布評論請先 登錄
相關(guān)推薦
評論