-
1 知识介绍
-
2 PPT
-
3 教学视频
-
4 章节测试
-
5 时代精神
-
6 教案
1. 完善工程代码
前面我们学习了ESP8266 Wi-Fi工作原理以及ESP8266 Wi-Fi通讯模块AT指令。下面我们编写程序使用ESP8266 Wi-Fi通讯模块将M3主控模块接入物联网云平台。
1.1 任务要求
任务:在物联网云平台上车创建Wi-Fi工程,通过M3主控模块发送AT指令控制Wi-Fi通信模块,实现Wi-Fi模块连接到物联网云平台。要实现本任务,需要配置CloudReference.h头文件,编写Wi-Fi模块要连接的热点名称和密码函数、将Wi-Fi模块配置成station函数、Wi-Fi模块建立TCP连接函数、Wi-Fi模块发送数据函数等函数,在这些函数的基础上再编写连接到物联网云平台服务器函数。
1.2 工作流程
第一步:在头文件中定义Wi-Fi连接热点名称、密码、物联网云平台IP地址、端口号、设备标识和传输密钥。在左窗口双击WiFiToCloud找到CloudReference.h文件。CloudReference.h文件的主要功能是定义连接云平台相关参数。其中云平台IP地址和端口是不允许修改的,基于用户定义的相关数据,可以根据实际自行修改。
第二步:在左窗口双击WiFiToCloud找到WiFiToCloud.c文件。WiFiToCloud.c文件的主要功能是将Wi-Fi模块连接到物联网云平台服务器。
WiFiToCloud.c文件主要包含7个函数:Wi-Fi模块配置成station函数、Wi-Fi模块要连接的热点名称和密码函数、Wi-Fi模块建立TCP连接函数、Wi-Fi模块发送数据函数、连接到物联网云平台服务器函数、发送传感数据到服务器函数和解析服务器数据函数。
Wi-Fi模块配置成station函数ESP8266_SetStation:此函数的主要功能就是将ESP8266 Wi-Fi模块设置成station工作模式。此函数返回值为0时,说明配置station工作模式成功。返回值<0时,说明配置station工作模式失败。主要代码分析如下:
SendAtCmd函件:发送AT指令字符串,此函数两个参数中第一个参数是要发送的AT指令,第二个参数是AT指令长度。AT_CWMODE是一个宏定义,用于设置Wi-Fi通讯模块为station模式。
if语句是通过将接收到的数据与OK进行比较确定设置通信模式成功与否,如果返回字符串中包含OK,则通信成功,否则通信失败。
Wi-Fi模块要连接的热点名称和密码函数ESP8266_SetAP(void):此函数的主要功能就是设置ESP8266要连接的热点名称和密码。通过定义发送数据数组,使用memset函数初始化内存数组;使用sprintf函数将热点名称和密码格式化后放入要发送的数组;接着使用SendAtCmd函数发送AT指令,告诉系统要连接的热点名称和密码;最后通过在接收到的数据中查找是否包含OK字符串,确定通信成功与否。
Wi-Fi模块建立TCP连接函数:此函数的主要功能是让ESP8266建立TCP连接,函数结构与设置ESP8266要连接的热点名称和密码函数具有类似性。SendAtCmd函数发送AT指令,告诉系统要连接的服务器IP地址和端口号。
Wi-Fi模块发送数据函数:此函数的主要功能是将IpBuf里的数据发送到云平台。首先定义发送指令,然后清空该数组数据,接着将发送指令格式化进数组,通过发送AT指令将要发送的数据长度发送给云平台,接着判断指令是否发送成功,如果发送成功,接下来就使用SendStrLen发送字符串IpBuf到AT指令串口,然后通过循环等待,确定收到的数据中包含SEND OK即为发送完毕,返回值为0时,说明发送数据成功。返回值<0时,说明发送数据失败。
连接到物联网云平台服务器函数:此函数主要功能是连接到服务器。函数使用到前面的设置Wi-Fi通讯模式连接热点名称和密码,连接服务器以及发送数据的函数。
程序首先通过三次循环设置Wi-Fi通讯模块为station模式,若设置不成功则返回错误标志。接下来进行设置热点名称和密码,不成功,设置错误标志信息,并返回。然后尝试三次连接服务器,服务器IP地址为:120.77.58.34,端口为:8600,连接成功,则进行下一步工作,否则,返回错误标志。最后,通过格式化函数sprintf将设备ID和密钥格式化进TextBuf数组,并将该数组发送到服务器完成连接到服务器的通信过程。发送成功后等待500ms,获取到服务器的返回状态并检查是否握手成功,成功,返回0,否则,返回-5。
2. WI-FI接入云平台
2.1 工作流程
2.1.1 硬件连接
首先,使用设置好的soft-AP+station工作模式的Wi-Fi模块,用 AT+CWQAP 断开现有热点的连接,设置Wi-Fi模块连接已经开启的一个热点,然后连接M3主控模块和Wi-Fi模块。将M3主控模块的rx4接口连接到Wi-Fi模块的tx接口,将M3主控模块的tx4接口连接到Wi-Fi模块的rx接口,注意 Wi-Fi 模块的 JP2 拨到右边 J6 处,此时Wi-Fi 模块不占用NewLab的串口。
2.1.2 登录物联网云平台创建Wi-Fi模块相应的工程
注册并登录物联网云平台,物联网云平台地址为 http://www.nlecloud.com。
新增项目,点击开发者中心,点击新增项目,给项目取名为“Wi-Fi 连接云平台 test1”。行业类别选智能家居,联网方案选WIFI,点击下一步完成新建项目。
添加设备,给设备取名为“esp8266 模块”。通讯协议选择TCP,设备标识可自定义,点击确定添加设备后,可查看设备的详细信息。
点击该设备可以看到该设备的详细信息,记录下“设备标识”和“传输密钥”。
创建一个传感器,点击添加的设备,在跳转的界面中点击“马上创建一个传感器”。
输入传感器名称为“开关量传感器”,标识名为“alarm”,传输类型选择“只上报”,数据 类型为“整数型”,然后点击“确定”完成传感器的创建。
修改 Wi-Fi 连接云平台的程序并编译与下载。打开资源包../ Wi-Fi 数据通信/M3 核心模块_连云平台/project/WiFiToCloudM3.uvprojx。第一步在 CloudReference.h 头文件中定义 Wi-Fi 连接热点名称、密码,物联网云平台 IP 地址、端口号,设备标识和传输密钥。第二步在 WiFiToCloud.c 的 int8_t ESP8266_IpStart()函数中,通过 At 指令设置 Wi-Fi 通讯模块连接服务器 IP 地址和端口号。第三步在 WiFiToCloud.c 的 int8_t ESP8266_IpSend()函数中,通过 At 指令告诉 WiFi 通讯模块准备传输数据和数据长度。 第四步在 WiFiToCloud.c 的 int8_t ConnectToServer 函数中通过发送 AT 指令给 ESP8266 Wi-Fi 通讯模块将 M3 主控模块接入物联网云平台。第五步是编译程序后进行程序的下载,下载程序时,应将 M3 主控模块上的 JP1 拨到 BOOT 位置, 程序下载成功后将 JP1 拨到 NC 位置,并按一下 M3 主控模块上的复位按钮。
在物联网云平台“设备管理”中,选择“实时数据开”,可以看到实时上报的传感器数据。
在物联网云平台“历史传感数据”中,可以查看“开关量报警”设备的上报数据。


