零知开源分享-ESP8266wifi模块的使用

1、说明
MCU:零知开源开发板-标准板

零知开源分享-ESP8266wifi模块的使用

WIFI模块:ESP-12F 

零知开源分享-ESP8266wifi模块的使用

开发工具:零知开源开发工具
零知开源分享-ESP8266wifi模块的使用

 

功能:通过串口连接零知标准板与ESP-12F WIFI模块,实现联网。本示例使用AP指令开发方式,开启一个热点并设置为TCP服务器模式,程序运行后就可以被其他wifi功能的终端连接上进行网络通信。
2、操作步骤

(1)硬件连接
把ESP8266WiFi模块连接到零知开发板的Serial1的引脚上(注意RX和TX交叉连接)

零知开源分享-ESP8266wifi模块的使用

2)打开零知开发工具,在【示例】中选择如下选项:

零知开源分享-ESP8266wifi模块的使用

零知开源分享-ESP8266wifi模块的使用

3、测试结果

程序烧写到开发板后,打开零知开发工具的串口调试窗口,选择波特率为115200,就可以看到如下所示:

零知开源分享-ESP8266wifi模块的使用

可以看到网络功能开启成功的信息,以及服务器开放的ip和端口号。
在手机上打开网络设置界面,可以看到ESP8266的热点信息,如下:

零知开源分享-ESP8266wifi模块的使用

再打开手机上的网络调试助手工具,再到TCP客户端项目中选择增加,填写正确的ip和端口,如下:

零知开源分享-ESP8266wifi模块的使用

然后连接成功后会显示如下:

零知开源分享-ESP8266wifi模块的使用

可以看到从esp8266 wifi模块发送过来的信息,在发送框中发送信息,就可以在串口调试窗口中看到从手机上发过来的信息,如下:

零知开源分享-ESP8266wifi模块的使用

以上就实现了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:你好,[url]www.lingzhilab.com[/url]”); 
                    wifi.setState(WIFI_IDLE); 
                    break;
        } 
}

 

完整代码可到零知实验室官网免费获取。