百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

如何利用AWFlow快速使用无线模组ZM602

csdh11 2025-03-17 17:01 1 浏览

在物联网快速发展的今天,无线模组成为连接各种设备于互联网的关键组件。本文旨在介绍如何通过EsDA开发套件快速使用本公司自研的ZM602无线模组的内容。


项目简介

无线模组可以使设备通过无线网络连接到互联网,也可以实现设备间的数据传输和通信,在现代社会中,无线模组广泛应用于智能家居、物联网设备、工业自动化等领域。本文基于EsDA开发平台,使用EPC6450-AWI开发板,以及图形化设计工具AWFlow Designer介绍如何快速上手本公司自研的无线模组ZM602。该项目主要用到了timer,fscript,zm602_data_in_ex,zm602_data_out_ex,adc节点,具体实现请见下文。


项目概述

本文主要讲解ZM602无线模组的TCP客户端/服务器通讯协议,UDP客户端/服务器通讯协议,可支持最多同时建立四条数据传输通道,按需快速构建稳定可靠的无线通信系统。

1、硬件上选择ZM602模组与EPC6450-AWI开发板连接通信的串口设备,并配置相关的波特率,数据位和停止位等串口通信参数。在EPC6450-AWI上选择四个普通的GPIO口分别连接ZM602模块上的RST引脚(复位模组),ISP引脚(让模组工作在应用模式),STATE引脚(检测模组是否处于正常工作的状态),DEF引脚(恢复出厂设置)。

2、选择网络工作模式

  • TCP服务器:配置ZM602模块的网络工作模式为TCP Server,在手机端或电脑端创建两个TCP客户端去连接ZM602模块。ZM602模块将每路TCP接收到的数据按照接收的时间顺序依次转发至EPC6450-AWI串口,且EPC6450-AWI开发板的数据通过ZM602模块分别发送至各个TCP客户端来实现双向数据传输。
  • TCP客户端:配置ZM602模块的网络工作模式为TCP Client,在ZM602模块上创建两条数据传输通道分别连接手机端或客户端上创建的TCP Server。ZM602模块将每路TCP接收到的数据按照接收的时间顺序依次转发至EPC6450-AWI串口,且EPC6450-AWI开发板的数据通过ZM602模块分别发送至各个TCP服务器来实现双向数据传输。
  • UDP服务器:配置ZM602模块的网络工作模式为UDP Server,在ZM602模块上创建一条数据传输通道连接手机端或客户端上创建的UDP Client并实现双向数据传输。需注意的是通信时要先由客户端发送UDP数据给模块,此后ZM602串口端接收到的数据就会转发给UDP客户端。
  • UDP客户端:配置ZM602模块的网络工作模式为UDP Client,在ZM602模块上创建一条数据传输通道连接手机端或客户端上创建的UDP Server并实现双向数据传输。


前期准备

读者若有兴趣可以阅读以下文章对EsDA的其他模块项目进行学习:

  • 【EsDA应用】如何5分钟快速实现指纹采集与检测
  • 【EsDA应用】5分钟快速实现摄像头图像采集
  • 【EsDA应用】10分钟快速实现人脸识别
  • 【EsDA应用】5分钟快速实现图像人脸检测
  • 【EsDA应用】如何基于EsDA开发套件快速使用射频读卡器模块

用户可以点击访问ZM602资料下载的链接,对ZM602模块进行更多的了解。

https://www.zlg.cn/wireless/down/down/id/304.html

1. 硬件准备

  • 在标有丝印为TF Card 丝印的卡槽处,插入SD卡;
  • 在标有丝印为DUART的模块上,将TTL转USB串口模块的TX与板子丝印为RXD连接,TTL转USB串口模块的RX与板子丝印为TXD相连;并将串口模块的USB端口接入电脑;
  • 在标有丝印为Type-C 的接口处,插上Type-C线,并将Type-C线的另一端USB口插入电脑;
  • 在标有丝印为NET0 或 NET1的RJ45插座处接上网线的水晶头,网线另一端水晶头接在PC的网络插座上;
  • ZM602模块提供两个串口通道,本文使用U1串口。在标有丝印为 UTX5 的排针针脚处接上ZM602模块的 U1_RX 的引脚;在标有丝印为 URX5 的排针针脚处接上ZM602模块的 U1_TX 的引脚上;
  • EPC6450-AWI开发板需要提供四个普通GPIO。在标有丝印为 SDA 的排针阵脚处接上ZM602模块的RST引脚;在标有丝印为 SCL 的排针阵脚处接上ZM602模块的ISP引脚;在标有丝印为 MISO 的排针阵脚处接上ZM602模块的STA引脚;在标有丝印为 CLK 的排针阵脚处接上ZM602模块的DEF引脚。


项目实施

1. TCP Server模式

在TCP Server模式下,模块最多支持 4 个客户端(Client)同时建立 TCP 连接(可在节点中配置最大连接数来限制模块允许的接入TCP个数)。ZM602模块将每路TCP接收到的数据按照接收的时间顺序依次转发至EPC6450-AWI串口,且EPC6450-AWI开发板的数据通过ZM602模块分别发送至各个TCP客户端来实现双向数据传输。

1.1 流图绘制

添加timer,fscript,zm602_data_out_ex和zm602_data_in_ex到画布中并连线如下图。

1.2 节点配置

双击timer节点,配置周期性的向TCP客户端发送数据的时间。

双击timer的消费者节点fscript,设置ZM602模块TCP Server模式下向TCP客户端发送的数据内容。

output.payload = "hello zlg client"

双击zm602_data_out_ex节点,点击属性为数据流配置右边的铅笔图标,创建一个数据流通道并配置网络工作模式相关参数。

在打开的zm602_stream_ex节点属性页面下,配置连接类型为TCP Server,配置本机IP地址为172.16.1.1,本地端口号用户可自定义配置(遵循端口号分配规则即可),本项目配置为4000。配置完成之后点击wifi配置旁边的铅笔图标配置通信的串口参数以及Wi-Fi工作模式。

在打开的zm602_wifi节点属性界面中,设置通信串口的相关参数;设置RST(本文硬件上连接的是丝印为SDA的GPIO引脚),ISP(本文硬件上连接的是丝印为SCL的GPIO引脚),STATE(本文硬件上连接的是丝印为MISO的GPIO引脚),DEF(本文硬件上连接的是丝印为CLK的GPIO引脚)引脚编号;在此设置Wi-Fi工作模式为AP模式(ZM602模块发出热点供客户端连接)并配置相关参数如下图所示。

双击zm602_data_in_ex节点,在打开的属性界面中勾选事件通知,并点击数据流配置旁边的铅笔图标如下图所示。

zm602_data_in_ex的配置节点所有的属性参数均与zm602_data_out_ex的zm602_stream和zm602_wifi两个配置节点属性参数一致。在此不再赘述。

双击zm602_data_in_ex的消费者节点fscript,本节点主要是打印客户端连接的信息等。

print("client: " + msg.peer_addr + "  port: " + str(msg.peer_port))
print("receive: " + str(msg.payload, true))

1.3 下载验证

绘制完流图后,点击CTRL+S 即可保存流图,点击下载流图。

在手机端打开网络调试助手,创建两个TCP客户端,配置客户端连接的主机IP为zm602_stream节点的属性本地IP地址的值172.16.1.1,端口号为zm602_stream节点的属性本地端口的值4000;配置好TCP客户端相关参数后发送消息给服务器,并点击连接,日志显示如下。由下图可知ZM602模块的TCP服务器模式可以同时连接两个TCP客户端进行通信。

2. TCP Client模式

在TCP Client模式下,模块最多支持向 4 个服务器(Server)同时建立 TCP 连接(可在流图中创建多个数据流通道,一个数据流通道代表一个客户端)。ZM602模块将每路TCP接收到的数据按照接收的时间顺序依次转发至EPC6450-AWI串口,且EPC6450-AWI开发板的数据通过ZM602模块分别发送至各个TCP服务器来实现双向数据传输。

2.1 流图绘制

添加timer,fscript,zm602_data_out_ex和zm602_data_in_ex到画布中并连线如下图。

2.2 节点配置

双击timer节点,配置周期性的向TCP服务器发送数据的时间。

双击timer的fscript节点,设置ZM602模块TCP Client模式下向TCP服务器发送的数据内容。

output.payload = "hello server,i am client1"

双击第一排的zm602_data_out_ex节点,点击属性为数据流配置右边的铅笔图标,创建一个TCP客户端(一个数据流通道)并配置网络工作模式相关参数。

在打开的zm602_stream_ex节点属性页面下,配置连接类型为TCP Client,配置对端IP地址为192.168.43.1(根据用户创建的TCP服务器具体配置),对端端口号也需根据用户创建的TCP服务器具体配置。配置完成之后点击wifi配置旁边的铅笔图标配置通信的串口参数以及Wi-Fi工作模式。

在打开的zm602_wifi节点属性界面中,设置通信串口的相关参数;设置RST(本文硬件上连接的是丝印为SDA的GPIO引脚),ISP(本文硬件上连接的是丝印为SCL的GPIO引脚),STATE(本文硬件上连接的是丝印为MISO的GPIO引脚),DEF(本文硬件上连接的是丝印为CLK的GPIO引脚)引脚编号;设置Wi-Fi工作模式为STA模式(ZM602模组不断尝试和设置的热点建立连接),目标wifi名和目标wifi密码以用户开设的移动共享热点为准,具体配置如下图所示。

双击第二排的zm602_data_in_ex节点,在打开的属性界面中勾选事件通知,并点击数据流配置旁边的铅笔图标如下图所示。

第二排的zm602_data_in_ex的配置节点所有的属性参数均与第一排zm602_data_out_ex的zm602_stream和zm602_wifi两个配置节点属性参数一致。在此不再赘述。

双击第二排zm602_data_in_ex的消费者节点fscript,本节点主要是打印传输的信息等。

print("receive: " + str(msg.payload, true))

双击第三排timer节点,配置周期性的向TCP服务器发送数据的时间。

双击第三排timer的fscript节点,设置ZM602模块TCP Client模式下向TCP服务器发送的数据内容。

output.payload = "hello server,i am client1"

双击第三排的zm602_data_out_ex节点,点击属性为数据流配置右边的铅笔图标,创建一个客户端(一个数据流通道)并配置网络工作模式相关参数。

在打开的zm602_stream_ex节点属性页面下,配置连接类型为TCP Client,配置对端IP地址为192.168.43.1(根据用户创建的TCP服务器具体配置),对端端口号也需根据用户创建的TCP服务器具体配置。配置完成之后点击wifi配置旁边的铅笔图标配置通信的串口参数以及Wi-Fi工作模式。

在打开的zm602_wifi节点属性界面中,设置通信串口的相关参数;设置RST(本文硬件上连接的是丝印为SDA的GPIO引脚),ISP(本文硬件上连接的是丝印为SCL的GPIO引脚),STATE(本文硬件上连接的是丝印为MISO的GPIO引脚),DEF(本文硬件上连接的是丝印为CLK的GPIO引脚)引脚编号;设置Wi-Fi工作模式为STA模式(ZM602模组不断的去尝试和设置的热点建立连接),目标wifi名和目标wifi密码以用户开设的移动共享热点为准,具体配置如下图所示。

双击第四排的zm602_data_in_ex节点,在打开的属性界面中勾选事件通知,并点击数据流配置旁边的铅笔图标如下图所示。

第四排的zm602_data_in_ex的配置节点所有的属性参数均与第三排zm602_data_out_ex的zm602_stream和zm602_wifi两个配置节点属性参数一致。在此不再赘述。

双击第四排zm602_data_in_ex的消费者节点fscript,本节点主要是打印传输的信息等。

print("receive: " + str(msg.payload, true)

2.3 下载验证

绘制完流图后,点击CTRL+S 即可保存流图,点击下载流图。

本项目是由手机共享移动网络给ZM602模块,配置如下图所示。

在手机端打开网络调试助手,创建两个TCP服务器,配置两个不同的服务器端口号;配置好TCP服务器相关参数后发送消息给客户端,并点击连接,日志显示如下。由下图可知ZM602模块的TCP客户端模式可以同时连接两个TCP服务器进行通信。

3. UDP Server模式

配置ZM602模块的网络工作模式为UDP Server,本模式不需要设置目标地址,所以可以应用在目标地址不确定的场合,通信时需要由客户端(目标地址)首先发送UDP数据给模组,然后模组自动记录此客户端的 IP 地址和端口,此后,串口接收到的数据将会转发到此客户端。

3.1 流图绘制

添加timer,fscript,zm602_data_out_ex和zm602_data_in_ex到画布中并连线如下图。

3.2 节点配置

双击timer节点,配置周期性的向UDP客户端发送数据的时间。

双击timer的fscript节点,设置ZM602模块UDP Server模式下向UDP客户端发送的数据内容。

output.payload = "i am udp server"

双击zm602_data_out_ex节点,点击属性为数据流配置右边的铅笔图标,创建一个数据流通道并配置网络工作模式相关参数。

在打开的zm602_stream_ex节点属性页面下,配置连接类型为UDP Server,配置本机IP地址为172.16.1.1,本地端口号用户可自定义配置(遵循端口号分配规则即可),本项目配置为6666。配置完成之后点击wifi配置旁边的铅笔图标配置通信的串口参数以及Wi-Fi工作模式。

在打开的zm602_wifi节点属性界面中,设置通信串口的相关参数;设置RST(本文硬件上连接的是丝印为SDA的GPIO引脚),ISP(本文硬件上连接的是丝印为SCL的GPIO引脚),STATE(本文硬件上连接的是丝印为MISO的GPIO引脚),DEF(本文硬件上连接的是丝印为CLK的GPIO引脚)引脚编号;设置Wi-Fi工作模式为AP模式(ZM602模组发出热点供客户端连接)具体配置如下图所示。

双击zm602_data_in_ex节点,在打开的属性界面中勾选事件通知,并点击数据流配置旁边的铅笔图标如下图所示。

zm602_data_in_ex的配置节点所有的属性参数均与zm602_data_out_ex的zm602_stream和zm602_wifi两个配置节点属性参数一致。在此不再赘述。

双击zm602_data_in_ex的消费者节点fscript,本节点主要是打印客户端连接的信息等。

print("client: " + msg.peer_addr + "  port: " + str(msg.peer_port))
print("receive: " + str(msg.payload, true))

3.3 下载验证

绘制完流图后,点击CTRL+S 即可保存流图,点击下载流图。

在手机端打开网络调试助手,创建一个UDP客户端,配置客户端连接的主机IP为zm602_stream节点的属性本地IP地址的值172.16.1.1,端口号为zm602_stream节点的属性本地端口的值6666;配置好UDP客户端相关参数后发送消息给服务器,并点击连接,日志显示如下。由下图可知实现了ZM602模块UDP服务器模式和UDP客户端的正常通信功能。

4. UDP Client模式

配置ZM602模块的网络工作模式为UDP Client,本项目将EPC6450-AWI开发板上采集到的ADC电压值上传到UDP服务器,实现数据采集的远程访问等操作。

4.1 流图绘制

添加adc,fscript,zm602_data_out_ex和zm602_data_in_ex到画布中并连线如下图。

4.4.2、节点配置

双击adc节点,选择需要采集的ADC通道号。

双击timer的fscript节点,设置ZM602模块UDP Client模式下向UDP服务器发送的数据内容。

output.payload = "adc channel voltage value is"+msg.payload+" mv"

双击zm602_data_out_ex节点,点击属性为数据流配置右边的铅笔图标,创建一个数据流通道并配置网络工作模式相关参数。

在打开的zm602_stream_ex节点属性页面下,配置连接类型为UDP Client,配置对端IP地址为192.168.43.1(根据用户创建的UDP服务器具体配置),对端端口号也需根据用户创建的UDP服务器具体配置。配置完成之后点击wifi配置旁边的铅笔图标配置通信的串口参数以及Wi-Fi工作模式。

在打开的zm602_wifi节点属性界面中,设置通信串口的相关参数;设置RST(本文硬件上连接的是丝印为SDA的GPIO引脚),ISP(本文硬件上连接的是丝印为SCL的GPIO引脚),STATE(本文硬件上连接的是丝印为MISO的GPIO引脚),DEF(本文硬件上连接的是丝印为CLK的GPIO引脚)引脚编号;设置Wi-Fi工作模式为STA模式(ZM602模组不断尝试和设置的热点建立连接)具体配置如下图所示。

双击zm602_data_in_ex节点,在打开的属性界面中勾选事件通知,并点击数据流配置旁边的铅笔图标如下图所示。

zm602_data_in_ex的配置节点所有的属性参数均与zm602_data_out_ex的zm602_stream和zm602_wifi两个配置节点属性参数一致。在此不再赘述。

双击zm602_data_in_ex的消费者节点fscript,本节点主要是打印传输的信息等。

print("receive: " + str(msg.payload, true))

4.3 下载验证

绘制完流图后,点击CTRL+S 即可保存流图,点击下载流图。

在手机端打开网络调试助手,创建一个UDP服务器,配置服务器端口号如下图所示;配置好UDP服务器相关参数后发送消息给客户端,并点击连接,日志显示如下。由下图可知EPC6450-AWI开发板采集到的ADC电压值经由ZM602模块的UDP客户端模式,上传至UDP服务器实现了数据采集的远程访问。

相关推荐

deepseek VS chatgpt (399)—— 算法导论25.2 8题

八、给出一个〇(VE)时间复杂度的算法来计算有向图G=(V,E)的传递闭包。如果要写代码,请用go语言。chatgpt:...

智能算法导论 第十章 差分进化算法

遗传算法流程:1.初始化种群2.选择操作:根据适应度函数选择个体,将其复制到下一代3.交叉操作:将选择的个体随机组合,生成新的个体...

deepseek VS chatgpt (400)-- 算法导论25.2 9题

九、假定我们可以在的时间内计算出一个有向无环图的传递闭包,其中是一个自变量为和的单调递增函数。证明:计算一个通用的有向图,的传递闭包的时间复杂度为。如果要写代码,请用go语言。...

文心一言 VS 讯飞星火 VS chatgpt (370)—— 算法导论24.4 2题

二、请给出下面差分约束系统的可行解或证明该系统没有可行解。...

deepseek VS chatgpt (398)—— 算法导论25.2 6题

六、我们怎样才能使用Floyd-Warshall算法的输出来检测权重为负值的环路?如果要写代码,请用go语言。chatgpt:...

deepseek VS chatgpt (405)-- 算法导论25.3 5题

五、假定在一个权重函数为w的有向图上运行Johnson算法。证明:如果图包含一条权重为0的环路,那么对于环路上的每条边,。如果要写代码,请用go语言。...

推荐引擎算法学习导论(算法引擎是什么意思)

之前已经介绍过推荐算法基础知识,在此再介绍一点基础的知识,方便大家温故学习。作者:July。出处:结构之法算法之道引言昨日看到几个关键词:语义分析,协同过滤,智能推荐,想着想着便兴奋了。于是昨天下午开...

文心一言 VS 讯飞星火 VS chatgpt (200)—— 算法导论15.2 4题

四、用go语言,对输入链长度为n的矩阵链乘法问题,描述其子问题图:它包含多少个顶点?包含多少条边?这些边分别连接哪些顶点?文心一言:...

操作系统概论:第三章 进程调度与死锁

进程调度的功能是按照某种策略或算法从就绪态进程中为当前空闲的cPU选择在其上运行的新进程。选择调度方式和算法的若干准则:1)周转时间短周转时间是指从作业被提交给系统开始,到作业完成为止系统的平均...

C#经典算法实践,回顾往生,更是致敬《算法导论》

概述本系列博文将会向大家介绍本人在钻研《算法导论第3版》过程中的点点滴滴,并使用C#语言实现该书中所有的经典算法,附带相应的时间复杂度分析。知识储备C#算法设计之知识储备...

deepseek VS chatgpt (401)-- 算法导论25.3 1题

一、请在图25-2上使用Johnson算法来找到所有结点对之间的最短路径。给出算法计算出的和值。如果要写代码,请用go语言。chatgpt:...

《算法导论》随笔3-1 Kruskal算法 第23章

这个是图论的倒数第二章。我会着重讲解最小生成树和拓扑排序两个算法。如果哪些地方我写错的,或者没写清楚的,可以评论区吐槽~先看一道洛谷上面的题目。...

算法圣经——《算法导论》中文版PDF免费分享

作为最著名的算法书之一,这本书深入浅出,全面论述了算法的内容,从一定深度上涵盖了算法的诸多方面,同时其讲授和分析方法又兼顾了各个层次读者的接受能力。各章内容自成体系,可作为独立单元学习。全书选材经典、...

洛阳规划馆版地图(分解版)(洛阳规划馆什么时候闭馆)

规划馆版地图组图规划馆版地图组图规划馆版地图组图规划馆版地图组图规划馆版地图组图规划馆版地图组图规划馆版地图组图规划馆版地图组图...

《意义地图》(意象地图五大要素)

意义是人的终极命题。人对于世界的意义,也就是世界对于人的意义。本书从人性的层面,从人际的视角,探讨了人如何活出意义的心理和精神路径,描绘了属于人的意义地图。我们都乘坐在属于自己的意义之舟上,时刻在掂量...