实验13 WIFI通信实验

1. 实验目的

带有WIFI扩展模块的串口屏,可以实现WIFI通信。目前带WIFI模块的串口屏可以实现TCP服务器、TCP客户端、UDP客户端、MQTT客户端。WIFI模块可配置为station或softAP模式。

本实验以常用的UDP客户端作为讲解。其他模式也大同小异,也会在本实验最后一一展示测试步骤。

2. 页面设计

(1)、按钮控件,连接wifi或断开wifi。选中按钮可以查看脚本代码。

int res=0;

if(button8.txt == "连接WIFI")
{
    res = page0.network0.openAp();
    if(res == 0)
    {
        text9.txt = "连接成功";
        button8.txt = "断开WIFI";
    }
    else
        text9.txt = "连接失败" + intToString(res);    
}
else
{
    page0.network0.closeAp();
    if(res == 0)
    {
        text9.txt = "断开成功";
        button8.txt = "连接WIFI";
    }
    else
        text9.txt = "断开失败" + intToString(res);        
}

(2)、文本控件。用于显示接收UDP报文的远端地址

(3)、整数控件。用于显示接收UDP报文的端口号

(4)、整数控件。用于显示接收UDP报文的数据长度

(5)、文本控件。用于显示接收UDP报文的数据内容

(6)、文本控件。用于显示要发送的字符串,点击可触发键盘编辑

(7)、按钮控件。发送UDP报文,选中可以看到脚本

//发送字节
//byte a[5] = {0x31,0x32};
//network0.send(a,0,2);

//发送字符串
network0.sendString(text1.txt);

(8)、网络控件。选中可以查看配置的属性和接收脚本。

数据接收的脚本为

num62.val = network0.rxPort; //接收到远端端口
text22.txt= network0.rxAddr; //接收到远端地址
num24.val = network0.rxLen;     //接收到的数据长度
text13.txt= stringDecode(network0.rxBuf,0,network0.rxLen);//接收到的数据。将接收到的字节数组rxBuf转换为字符串,赋值给text13的txt属性

3. 下载验证(UDP客户端)

1、编译后,下载到屏幕,可看到如下初始化界面。

2、点击界面上“连接WIFI”按钮,系统会去连接名称为Redmi_1A6A,密码为88888888的wifi(要连接的WIFI名称和密码是在工程里配置的,客户在验证时需要修改为自己的wifi)。大约2秒,则会提示连接成功。若连接不成功,检查WiFi名称和密码是否填写正常,大小写是否区分,是否外接WIFI天线。或者先用手机、电脑连一连这个wifi,看能否正常连接。

3、由于我们需要测试UDP通信,屏作为了一个UDP客户端,那我们至少还需要一个UDP客户端,两个UDP客户端互相通信。这里为了便于测试,我们使用电脑的网络调试助手作为另一个UDP客户端。用电脑连上同一个WIFI,名称为 Redmi_1A6A,如下图。

4、查询电脑本地IP地址。 win+R弹窗输入cmd然后点击确定,可以看到本地的IP地址(连接网络的情况下才能查询到IP地址)。如下图

可以看到测试的电脑连上wifi后的IP地址为192.168.31.200。所以我们需要在VP 软件配置远端地址remoteAddr为192.168.31.300(客户在验证时需要修改为自己的IP地址)

5、打开网络调试助手。协议类型选中UDP,本地主机地址选择192.168.31.300,端口号输入203,点击连接。

网络调试助手发送字符串sany lcd。串口屏则会收到UDP报文,显示收到报文的地址为192.168.31.300,端口号203,数据长度8,数据类容为sany lcd;

串口屏上点击发送按钮,网络调试将会收到对应的数据,这里收到的数据为字符串 text。

测试结果如下:

4. 下载验证(TCP客户端)

1、编译后,下载到屏幕,可看到如下初始化界面。

2、点击界面上“连接WIFI”按钮,系统会去连接名称为Redmi_1A6A,密码为88888888的wifi(要连接的WIFI名称和密码是在工程里配置的,客户在验证时需要修改为自己的wifi)。大约2秒,则会提示连接成功。若连接不成功,检查WiFi名称和密码是否填写正常,大小写是否区分,是否外接WIFI天线,或者先用手机、电脑连一连这个wifi,看能否正常连接。

3、屏作为了一个TCP服务器端,那我们至少还需要一个TCP客户端。这里为了便于测试,我们使用电脑的网络调试助手作为TCP客户端。用电脑连上同一个WIFI,如下图。

4、查询电脑本地IP地址。 win+R弹窗输入cmd然后点击确定,可以看到本地的IP地址。如下图

可以看到测试的电脑连上wifi后的IP地址为192.168.31.200。所以我们需要在VP 软件配置远端地址remoteAddr为192.168.31.300(客户在验证时需要修改为自己的IP地址)

5、打开网络调试助手。协议类型选择TCP Server,本地主机地址选择192.168.31.300(客户在验证时需要修改为自己的IP地址),端口号输入203,点击连接即打开了TCP服务器端口。

6、屏上点击”连接服务器”按钮。

7、串口屏上点击发送按钮,网络调试将会收到对应的数据,这里收到的数据为字符串 text。

8、网络调试助手发送字符串sany lcd。串口屏则会收到UDP报文,显示收到报文的地址为192.168.31.300,端口号203,数据长度8,数据类容为sany lcd;

测试结果如下:

5. 下载验证(TCP服务器)

1、编译后,下载到屏幕,可看到如下初始化界面。

2、点击界面上“连接WIFI命令”,系统会去连接名称为Redmi_1A6A,密码为88888888的wifi(要连接的WIFI名称和密码是在工程里配置的,客户在验证时需要修改为自己的wifi)。大约2秒,则会提示连接成功。若连接不成功,检查WiFi名称和密码是否填写正常,大小写是否区分,是否外接WIFI天线,或者先用手机、电脑连一连这个wifi,看能否正常连接。

3、由于我们需要测试TCP通信,屏作为了一个TCP服务器端,那我们至少还需要一个TCP客户端。这里为了便于测试,我们使用电脑的网络调试助手作为一个TCP客户端。用电脑连上同一个WIFI,如下图。

4、查询电脑本地IP地址。 win+R弹窗输入cmd然后点击确定,可以看到本地的IP地址。如下图

可以看到测试的电脑连上wifi后的IP地址为192.168.31.200。所以我们需要在VP 软件配置远端地址remoteAddr为192.168.31.300(客户在验证时需要修改为自己的IP地址)

5、打开网络调试助手。协议类型选中TCP client,本地主机地址选择192.168.31.300(客户在验证时需要修改为自己的IP地址),端口号输入203,点击连接。

6、网络调试助手发送字符串sany lcd。串口屏则会收到TCP报文,显示收到报文的地址为192.168.31.300,端口号203,数据长度8,数据类容为sany lcd;

7、串口屏上点击发送按钮,网络调试将会收到对应的数据,这里收到的数据为字符串 text。

测试结果如下:

6. 下载验证(MQTT客户端)

由于我们需要测试MQTT通信,屏作为了一个MQTT客户端。屏使用的是安信可公司的WIFI模组,这里我们使用安信可提供的MQTT服务器作为测试

MQTT服务器 :wx.ai-thinker.com 连接端口:1883

MQTT服务器控制台 :wx.ai-thinker.com 连接端口:18083

1、 编译后,下载到屏幕,可看到如下初始化界面。

2、 点击界面上“连接WIFI命令”,系统会去连接名称为Redmi_1A6A,密码为88888888的wifi(要连接的WIFI名称和密码是在工程里配置的,客户在验证时需要修改为自己的wifi)。大约2秒,则会提示连接成功。若连接不成功,检查WiFi名称和密码是否填写正常,大小写是否区分,是否外接WIFI天线,或者先用手机、电脑连一连这个wifi,看能否正常连接。

3、 点击界面上的“连接服务器”按钮。系统会按照网络控件的配置连接MQTT服务器:wx.ai-thinker.com 连接端口:1883

4、 点击界面上的“subscribe”按钮,将会订阅主题aithinker.

5、 登录MQTT服务器控制台wx.ai-thinker.com 连接端口:18083

打开浏览器输入http://wx.ai-thinker.com:18083

username: admin

password: public

登录后点击Settings设置成中文界面方便进行调试

6、点击Websocket选项,连接区域直接点击连接,参数默认。设置好订阅主题和消息主题并点击订阅,主题均为aithinker

7、消息输入sany lcd,点击发送

屏即可收到主题为aithinker的报文,结果如下:

8、点击屏上的“publish”按钮。控制台上会收到一个主题aithinker,消息为text.