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