本帖最后由 roc2 于 2019-5-14 17:33 編輯
1、說明
MCU:零知開源開發(fā)板-標(biāo)準(zhǔn)板
零知標(biāo)準(zhǔn)板 (2).jpg (186.54 KB, 下載次數(shù): 54)
下載附件
2019-5-14 14:05 上傳
WIFI模塊:ESP-12F
WiFi模塊.png (85.41 KB, 下載次數(shù): 49)
下載附件
2019-5-14 14:05 上傳
開發(fā)工具:零知開源開發(fā)工具
開發(fā)工具界面.png (72.84 KB, 下載次數(shù): 55)
下載附件
2019-5-14 14:06 上傳
功能:通過串口連接零知標(biāo)準(zhǔn)板與ESP-12F WIFI模塊,實(shí)現(xiàn)聯(lián)網(wǎng)。本示例使用AP指令開發(fā)方式,開啟一個(gè)熱點(diǎn)并設(shè)置為TCP服務(wù)器模式,程序運(yùn)行后就可以被其他wifi功能的終端連接上進(jìn)行網(wǎng)絡(luò)通信。
2、操作步驟
(1)硬件連接
把ESP8266WiFi模塊連接到零知開發(fā)板的Serial1的引腳上(注意RX和TX交叉連接)
WIFI引腳接線.png (12.52 KB, 下載次數(shù): 43)
下載附件
2019-5-14 14:07 上傳
(2)打開零知開發(fā)工具,在【示例】中選擇如下選項(xiàng):
WiFi模塊界面.png (72.35 KB, 下載次數(shù): 63)
下載附件
2019-5-14 14:08 上傳
界面2.png (121.96 KB, 下載次數(shù): 64)
下載附件
2019-5-14 14:08 上傳
3、測試結(jié)果 程序燒寫到開發(fā)板后,打開零知開發(fā)工具的串口調(diào)試窗口,選擇波特率為115200,就可以看到如下所示:
WiFi測試結(jié)果.jpg (54.63 KB, 下載次數(shù): 44)
下載附件
2019-5-14 14:09 上傳
可以看到網(wǎng)絡(luò)功能開啟成功的信息,以及服務(wù)器開放的ip和端口號(hào)。
在手機(jī)上打開網(wǎng)絡(luò)設(shè)置界面,可以看到ESP8266的熱點(diǎn)信息,如下:
手機(jī)熱點(diǎn).jpg (156.21 KB, 下載次數(shù): 48)
下載附件
2019-5-14 14:10 上傳
再打開手機(jī)上的網(wǎng)絡(luò)調(diào)試助手工具,再到TCP客戶端項(xiàng)目中選擇增加,填寫正確的ip和端口,如下:
網(wǎng)絡(luò)調(diào)試助手.jpg (105.07 KB, 下載次數(shù): 47)
下載附件
2019-5-14 14:11 上傳
然后連接成功后會(huì)顯示如下:
連接成功.jpg (96.38 KB, 下載次數(shù): 55)
下載附件
2019-5-14 14:12 上傳
可以看到從esp8266 wifi模塊發(fā)送過來的信息,在發(fā)送框中發(fā)送信息,就可以在串口調(diào)試窗口中看到從手機(jī)上發(fā)過來的信息,如下:
最后結(jié)果.png (17.34 KB, 下載次數(shù): 53)
下載附件
2019-5-14 14:13 上傳
以上就實(shí)現(xiàn)了STM32與手機(jī)之間通過無線網(wǎng)絡(luò)的TCP協(xié)議的通信。
4、核心代碼 - / *
- **文件:AP_TCP_Server.ino
- * /
-
- #include “esp8266.h”
- #include <HardwareSerial.h>
-
- #define ssid “ESP8266-TCP服務(wù)器”// wifi熱點(diǎn)的名字
- #define password “12345678”// wifi熱點(diǎn)的密碼
-
- #define serverPort 8081 //服務(wù)端的端口號(hào)
-
- Esp8266 wifi;
-
- #define serialDebug Serial //用于調(diào)試信息打印
- #define serialEsp Serial1 //用于連接到esp8266的串口
-
- void setup(){
-
- delay(8000); //等待一段時(shí)間,以便查看串口的調(diào)試信息
-
- serialDebug.begin(115200);
- serialEsp.begin(115200);
-
- wifi.begin(&serialEsp,&serialDebug);
-
- if(wifi.enableAP(ssid,password)){
- wifi.debugPrintln(“AP成功開啟!”);
- }
- if(wifi.setMultiConnect()){
- wifi.debugPrintln(“開啟多連接模式成功!”);
- }
- if(wifi.openTCPServer(serverPort,180)){
- wifi.debugPrintln(“開啟TCP服務(wù)器成功!”);
- }
- wifi.debugPrintln(“服務(wù)器IP:”+ wifi.getIP()+“端口:”+ String(serverPort));
-
- }
-
- loop() {
-
- int state = wifi.getState();
- switch(state){
- case WIFI_NEW_MESSAGE://從客戶端接收到了新的信息,打印
- wifi.debugPrintln(String(wifi.getWorkingID())+“:”+ wifi.getMessage()); </font><font style="vertical-align: inherit;">// debug
- wifi.sendMessage(wifi.getWorkingID(),wifi.getMessage()); </font><font style="vertical-align: inherit;">//把接收到的信息發(fā)送回給客戶端
- wifi.setState(WIFI_IDLE);
- break;
- case WIFI_CLOSED://如果客戶機(jī)端口連接
- wifi.debugPrintln(String(wifi.getFailConnectID())+“:連接關(guān)閉!”);
- wifi.setState(WIFI_IDLE);
- break;
- case WIFI_IDLE:
- {
- int state = wifi.checkMessage();
- wifi.setState(state);
- break;
- }
- case WIFI_CLIENT_ON://客戶端連接成功
- wifi.sendMessage(wifi.getWorkingID(),“來自ESP8266:你好”);
- wifi.setState(WIFI_IDLE);
- break;
- }
- }
復(fù)制代碼 完整工程可到零知實(shí)驗(yàn)室官網(wǎng)免費(fèi)獲取。 |