ESP8266簡單幾步建立伺服器

2022-09-08 03:15:06 字數 3807 閱讀 7037

don』t talk,show me code

at+restore		//恢復出廠設定(簡單粗暴)

at+rst //重啟一哈

at+cwmode=

3//設定wifi為state和ap模式

at+cwjap=

"qq"

,"qwertyuiop789000"

//連線wifi,「熱點名」,「熱點密碼」

at+cipmux=

1//建立tcp server

at+cipserver=1,

8080

//開啟tcp server ,埠設定為8080(到這裡已經建立成功了)

/*這倆要不要都行*/

at+cipmode=

1//傳送模式設定為透傳模式

具體設定:

/*.h*/

/*連線ap巨集定義*/

#define ssid "qq"

#define pwd "qwertyuiop789000"

#define defaltip "192.168.137.111"

/*傳送接收緩衝區長度巨集定義*/

#define txbuffer_len 50

#define rxbuffer_len 30

/*.c*/

u8 txbuffer[txbuffer_len]=;

//網路通訊資料傳送緩衝

u8 rxbuffer[rxbuffer_len]=;

//網路通訊資料接收緩衝

char empty_buffer[5]

="0000"

;//用於清空盒子,下次使用

/** * 功能:外設串列埠初始化

* 引數:

* 無

*/void

inituart2

(void

)/**

* 功能:指定某個uart傳送乙個位元組

* 引數:usartx:使用的目標串列埠x為1-3

* byte:待傳送位元組

* 返回值:none

*/static

void

sendbyte

(usart_typedef *usartx, u16 byte)

/** * 功能:指定某個串列埠傳送字串

* 引數:usartx:使用的目標串列埠x為1-3

* str:字串指標

* 返回值:none

*/void

sendstring

(usart_typedef *usartx,

char

*str)

}/**

* 功能:串列埠2中斷服務函式

* 引數:none

* 返回值:none

*/void

usart2_irqhandler

(void)}

if(usart_getitstatus

(usart2, usart_it_idle))}

/** * 功能:查詢字串中是否包含另乙個字串

* 引數:

* dest:待查詢目標字串

* src:待查詢內容

* retry_cn:查詢超時時間

* 返回值:查詢結果,非0為查詢成功,0為失敗

* 說明:

* 當發出乙個at指令後,需要一段時間等待esp8266回覆,因此就需要等待一段時間,

* 這個時間通常是幾百ms(除了連線伺服器和ap指令),本程式一般指令通常等待

* 2s,耗時的連線ap和伺服器的設定等待為8s,其實花不了那麼多時間,但如果發生超時

* 就一定可以判斷是通訊問題

*/u8 findstr

(u8* dest,u8* src,u16 retry_cn)

if(retry==0)

//如果超時則有問題,此時返回0

result_flag =1;

//執行到這裡說明一切正常, 表示查詢成功

if(result_flag)

else

}/**

* 功能:初始化esp8266

* 引數:none

* 返回值:初始化結果,非0為初始化成功,0為失敗

*/u8 initesp8266

(void

)memset

(rxbuffer,

0,rxbuffer_len)

;//清空接收緩衝

sendstring

(usart2,

"ate0\r\n");

//關閉回顯 if(

findstr

(rxbuffer,

"ok"

,200)==

0)//設定不成功

return1;

//設定成功

}/**

* 功能:檢查esp8266是否正常

* 引數:none

* 返回值:esp8266返回狀態

* 非0 esp8266正常

* 0 esp8266有問題

*/u8 checkesp8266

(void

)else

//esp8266不正常

}/**

* 功能:連線熱點

* 引數:

* ssid:熱點名

* pwd:熱點密碼

* 返回值:

* 連線結果,非0連線成功,0連線失敗

*/u8 connectap

(u8* ssid,u8* pwd,u8* defaltip)

}memset

(txbuffer,

0,rxbuffer_len)

;//清空傳送緩衝

memset

(rxbuffer,

0,rxbuffer_len)

;//清空接收緩衝

sprintf((

char

*)txbuffer,

"at+cwjap=\"%s\",\"%s\"\r\n"

,ssid,pwd)

;//連線目標ap

sendstring

(usart2,

(char

*)txbuffer);if

(findstr

(rxbuffer,

"ok"

,800)!=

0)//連線成功且分配到ip

return0;

}/**

* 功能:連線熱點

* 引數:

* ssid:熱點名

* pwd:熱點密碼

* 返回值:

* 連線結果,非0連線成功,0連線失敗

* 說明:

* 失敗的原因有以下幾種(uart通訊和esp8266正常情況下)

* 1. wifi名和密碼不正確

* 2. 路由器連線裝置太多,未能給esp8266分配ip

*/u8 creatserver

(void

)else

return0;

}/**

* 功能:處理從手機端接收的控制資料

* 引數:24c02中的驗證碼

* 返回值:none

* 說明:

*/void

proserverdate()

ESP8266 利用網頁控制ESP8266

說明 發出 gpio 1 就輸出 亮燈 gpio 0 就輸出 滅燈 include const char ssid jia 這裡輸入wifi名稱 const char password lm654321 這裡輸入wifi密碼 wifiserver server 80 開啟板子的80埠 int val...

ESP8266學習筆記

因為此模式可控性高且方便,所以推薦此模式 測試指令 at 應用模式設定 at cwmode 3 ap 模式 1 esp8266模組作為熱點,實現手機或電腦直接與模組通訊,實現區域網無線控制。sta 模式 2 esp8266模組通過路由器連線網際網路,手機或電腦通過網際網路實現對裝置的遠端控制 sta...

ESP8266輸出控制

gpio的輸出 esp8266的輸出控制。在esp8266引腳作為gpio輸出時,首先要配置gpio為輸出模式,這個和普通的32位微控制器的io輸出是一樣的,然後提供改變io口的電平來控制輸出模組的狀態。在這裡我用我自己手上的一款esp8266的微控制器為例。gpio相關介面位於 esp8266 n...