在物聯網快速發展的今天,無線模組成為連接各種設備于互聯網的關鍵組件。本文旨在介紹如何通過EsDA開發套件快速使用本公司自研的ZM602無線模組的內容。
?項目簡介
無線模組可以使設備通過無線網絡連接到互聯網,也可以實現設備間的數據傳輸和通信,在現代社會中,無線模組廣泛應用于智能家居、物聯網設備、工業自動化等領域。本文基于EsDA開發平臺,使用EPC6450-AWI開發板,以及圖形化設計工具AWFlowDesigner介紹如何快速上手本公司自研的無線模組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模塊進行更多的了解。
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服務器實現了數據采集的遠程訪問。
-
物聯網
+關注
關注
2909文章
44635瀏覽量
373397 -
ESDA
+關注
關注
0文章
28瀏覽量
7510 -
無線模組
+關注
關注
1文章
119瀏覽量
15560
發布評論請先 登錄
相關推薦
評論