在物聯(lián)網(wǎng)快速發(fā)展的今天,無線模組成為連接各種設備于互聯(lián)網(wǎng)的關鍵組件。本文旨在介紹如何通過EsDA開發(fā)套件快速使用本公司自研的ZM602無線模組的內(nèi)容。
項目簡介無線模組
可以使設備通過無線網(wǎng)絡連接到互聯(lián)網(wǎng),也可以實現(xiàn)設備間的數(shù)據(jù)傳輸和通信,在現(xiàn)代社會中,無線模組廣泛應用于智能家居、物聯(lián)網(wǎng)設備、工業(yè)自動化等領域。本文基于EsDA開發(fā)平臺,使用EPC6450-AWI開發(fā)板,以及圖形化設計工具AWFlow?Designer介紹如何快速上手本公司自研的無線模組ZM602。該項目主要用到了timer,fscript,zm602_data_in_ex,zm602_data_out_ex,adc節(jié)點,具體實現(xiàn)請見下文。
項目概述
本文主要講解ZM602無線模組的TCP客戶端/服務器通訊協(xié)議,UDP客戶端/服務器通訊協(xié)議,可支持最多同時建立四條數(shù)據(jù)傳輸通道,按需快速構(gòu)建穩(wěn)定可靠的無線通信系統(tǒng)。
1、硬件上選擇ZM602模組與EPC6450-AWI開發(fā)板連接通信的串口設備,并配置相關的波特率,數(shù)據(jù)位和停止位等串口通信參數(shù)。在EPC6450-AWI上選擇四個普通的GPIO口分別連接ZM602模塊上的RST引腳(復位模組),ISP引腳(讓模組工作在應用模式),STATE引腳(檢測模組是否處于正常工作的狀態(tài)),DEF引腳(恢復出廠設置)。
2、選擇網(wǎng)絡工作模式
- TCP服務器:配置ZM602模塊的網(wǎng)絡工作模式為TCP Server,在手機端或電腦端創(chuàng)建兩個TCP客戶端去連接ZM602模塊。ZM602模塊將每路TCP接收到的數(shù)據(jù)按照接收的時間順序依次轉(zhuǎn)發(fā)至EPC6450-AWI串口,且EPC6450-AWI開發(fā)板的數(shù)據(jù)通過ZM602模塊分別發(fā)送至各個TCP客戶端來實現(xiàn)雙向數(shù)據(jù)傳輸。TCP客戶端:配置ZM602模塊的網(wǎng)絡工作模式為TCP Client,在ZM602模塊上創(chuàng)建兩條數(shù)據(jù)傳輸通道分別連接手機端或客戶端上創(chuàng)建的TCP Server。ZM602模塊將每路TCP接收到的數(shù)據(jù)按照接收的時間順序依次轉(zhuǎn)發(fā)至EPC6450-AWI串口,且EPC6450-AWI開發(fā)板的數(shù)據(jù)通過ZM602模塊分別發(fā)送至各個TCP服務器來實現(xiàn)雙向數(shù)據(jù)傳輸。UDP服務器:配置ZM602模塊的網(wǎng)絡工作模式為UDP Server,在ZM602模塊上創(chuàng)建一條數(shù)據(jù)傳輸通道連接手機端或客戶端上創(chuàng)建的UDP Client并實現(xiàn)雙向數(shù)據(jù)傳輸。需注意的是通信時要先由客戶端發(fā)送UDP數(shù)據(jù)給模塊,此后ZM602串口端接收到的數(shù)據(jù)就會轉(zhuǎn)發(fā)給UDP客戶端。UDP客戶端:配置ZM602模塊的網(wǎng)絡工作模式為UDP Client,在ZM602模塊上創(chuàng)建一條數(shù)據(jù)傳輸通道連接手機端或客戶端上創(chuàng)建的UDP Server并實現(xiàn)雙向數(shù)據(jù)傳輸。
前期準備
讀者若有興趣可以閱讀以下文章對EsDA的其他模塊項目進行學習:
- 【EsDA應用】如何5分鐘快速實現(xiàn)指紋采集與檢測【EsDA應用】5分鐘快速實現(xiàn)攝像頭圖像采集【EsDA應用】10分鐘快速實現(xiàn)人臉識別【EsDA應用】5分鐘快速實現(xiàn)圖像人臉檢測【EsDA應用】如何基于EsDA開發(fā)套件快速使用射頻讀卡器模塊
用戶可以點擊訪問ZM602資料下載的鏈接,對ZM602模塊進行更多的了解。
https://www.zlg.cn/wireless/down/down/id/304.html
1. 硬件準備
- 在標有絲印為TF Card?絲印的卡槽處,插入SD卡;在標有絲印為DUART的模塊上,將TTL轉(zhuǎn)USB串口模塊的TX與板子絲印為RXD連接,TTL轉(zhuǎn)USB串口模塊的RX與板子絲印為TXD相連;并將串口模塊的USB端口接入電腦;在標有絲印為Type-C?的接口處,插上Type-C線,并將Type-C線的另一端USB口插入電腦;在標有絲印為NET0?或?NET1的RJ45插座處接上網(wǎng)線的水晶頭,網(wǎng)線另一端水晶頭接在PC的網(wǎng)絡插座上;ZM602模塊提供兩個串口通道,本文使用U1串口。在標有絲印為?UTX5?的排針針腳處接上ZM602模塊的 U1_RX 的引腳;在標有絲印為?URX5?的排針針腳處接上ZM602模塊的 U1_TX 的引腳上;EPC6450-AWI開發(fā)板需要提供四個普通GPIO。在標有絲印為?SDA?的排針陣腳處接上ZM602模塊的RST引腳;在標有絲印為?SCL?的排針陣腳處接上ZM602模塊的ISP引腳;在標有絲印為?MISO?的排針陣腳處接上ZM602模塊的STA引腳;在標有絲印為?CLK?的排針陣腳處接上ZM602模塊的DEF引腳。
項目實施
1. TCP Server模式
在TCP Server模式下,模塊最多支持 4 個客戶端(Client)同時建立 TCP 連接(可在節(jié)點中配置最大連接數(shù)來限制模塊允許的接入TCP個數(shù))。ZM602模塊將每路TCP接收到的數(shù)據(jù)按照接收的時間順序依次轉(zhuǎn)發(fā)至EPC6450-AWI串口,且EPC6450-AWI開發(fā)板的數(shù)據(jù)通過ZM602模塊分別發(fā)送至各個TCP客戶端來實現(xiàn)雙向數(shù)據(jù)傳輸。
1.1 流圖繪制
添加timer,fscript,zm602_data_out_ex和zm602_data_in_ex到畫布中并連線如下圖。
1.2 節(jié)點配置
雙擊timer節(jié)點,配置周期性的向TCP客戶端發(fā)送數(shù)據(jù)的時間。
雙擊timer的消費者節(jié)點fscript,設置ZM602模塊TCP Server模式下向TCP客戶端發(fā)送的數(shù)據(jù)內(nèi)容。
output.payload = "hello zlg client"
雙擊zm602_data_out_ex節(jié)點,點擊屬性為數(shù)據(jù)流配置右邊的鉛筆圖標,創(chuàng)建一個數(shù)據(jù)流通道并配置網(wǎng)絡工作模式相關參數(shù)。
在打開的zm602_stream_ex節(jié)點屬性頁面下,配置連接類型為TCP Server,配置本機IP地址為172.16.1.1,本地端口號用戶可自定義配置(遵循端口號分配規(guī)則即可),本項目配置為4000。配置完成之后點擊wifi配置旁邊的鉛筆圖標配置通信的串口參數(shù)以及Wi-Fi工作模式。
在打開的zm602_wifi節(jié)點屬性界面中,設置通信串口的相關參數(shù);設置RST(本文硬件上連接的是絲印為SDA的GPIO引腳),ISP(本文硬件上連接的是絲印為SCL的GPIO引腳),STATE(本文硬件上連接的是絲印為MISO的GPIO引腳),DEF(本文硬件上連接的是絲印為CLK的GPIO引腳)引腳編號;在此設置Wi-Fi工作模式為AP模式(ZM602模塊發(fā)出熱點供客戶端連接)并配置相關參數(shù)如下圖所示。
雙擊zm602_data_in_ex節(jié)點,在打開的屬性界面中勾選事件通知,并點擊數(shù)據(jù)流配置旁邊的鉛筆圖標如下圖所示。
zm602_data_in_ex的配置節(jié)點所有的屬性參數(shù)均與zm602_data_out_ex的zm602_stream和zm602_wifi兩個配置節(jié)點屬性參數(shù)一致。在此不再贅述。雙擊zm602_data_in_ex的消費者節(jié)點fscript,本節(jié)點主要是打印客戶端連接的信息等。
print("client: " + msg.peer_addr + " ?port: " + str(msg.peer_port))
print("receive: " + str(msg.payload, true))
1.3 下載驗證
繪制完流圖后,點擊CTRL+S?即可保存流圖,點擊下載流圖。
在手機端打開網(wǎng)絡調(diào)試助手,創(chuàng)建兩個TCP客戶端,配置客戶端連接的主機IP為zm602_stream節(jié)點的屬性本地IP地址的值172.16.1.1,端口號為zm602_stream節(jié)點的屬性本地端口的值4000;配置好TCP客戶端相關參數(shù)后發(fā)送消息給服務器,并點擊連接,日志顯示如下。由下圖可知ZM602模塊的TCP服務器模式可以同時連接兩個TCP客戶端進行通信。
2. TCP Client模式
在TCP Client模式下,模塊最多支持向 4 個服務器(Server)同時建立 TCP 連接(可在流圖中創(chuàng)建多個數(shù)據(jù)流通道,一個數(shù)據(jù)流通道代表一個客戶端)。ZM602模塊將每路TCP接收到的數(shù)據(jù)按照接收的時間順序依次轉(zhuǎn)發(fā)至EPC6450-AWI串口,且EPC6450-AWI開發(fā)板的數(shù)據(jù)通過ZM602模塊分別發(fā)送至各個TCP服務器來實現(xiàn)雙向數(shù)據(jù)傳輸。
2.1 流圖繪制
添加timer,fscript,zm602_data_out_ex和zm602_data_in_ex到畫布中并連線如下圖。
2.2 節(jié)點配置
雙擊timer節(jié)點,配置周期性的向TCP服務器發(fā)送數(shù)據(jù)的時間。
雙擊timer的fscript節(jié)點,設置ZM602模塊TCP Client模式下向TCP服務器發(fā)送的數(shù)據(jù)內(nèi)容。
output.payload = "hello server,i am client1"
雙擊第一排的zm602_data_out_ex節(jié)點,點擊屬性為數(shù)據(jù)流配置右邊的鉛筆圖標,創(chuàng)建一個TCP客戶端(一個數(shù)據(jù)流通道)并配置網(wǎng)絡工作模式相關參數(shù)。
在打開的zm602_stream_ex節(jié)點屬性頁面下,配置連接類型為TCP Client,配置對端IP地址為192.168.43.1(根據(jù)用戶創(chuàng)建的TCP服務器具體配置),對端端口號也需根據(jù)用戶創(chuàng)建的TCP服務器具體配置。配置完成之后點擊wifi配置旁邊的鉛筆圖標配置通信的串口參數(shù)以及Wi-Fi工作模式。
在打開的zm602_wifi節(jié)點屬性界面中,設置通信串口的相關參數(shù);設置RST(本文硬件上連接的是絲印為SDA的GPIO引腳),ISP(本文硬件上連接的是絲印為SCL的GPIO引腳),STATE(本文硬件上連接的是絲印為MISO的GPIO引腳),DEF(本文硬件上連接的是絲印為CLK的GPIO引腳)引腳編號;設置Wi-Fi工作模式為STA模式(ZM602模組不斷嘗試和設置的熱點建立連接),目標wifi名和目標wifi密碼以用戶開設的移動共享熱點為準,具體配置如下圖所示。
雙擊第二排的zm602_data_in_ex節(jié)點,在打開的屬性界面中勾選事件通知,并點擊數(shù)據(jù)流配置旁邊的鉛筆圖標如下圖所示。
第二排的zm602_data_in_ex的配置節(jié)點所有的屬性參數(shù)均與第一排zm602_data_out_ex的zm602_stream和zm602_wifi兩個配置節(jié)點屬性參數(shù)一致。在此不再贅述。雙擊第二排zm602_data_in_ex的消費者節(jié)點fscript,本節(jié)點主要是打印傳輸?shù)男畔⒌取?/p>
print("receive: " + str(msg.payload, true))
雙擊第三排timer節(jié)點,配置周期性的向TCP服務器發(fā)送數(shù)據(jù)的時間。雙擊第三排timer的fscript節(jié)點,設置ZM602模塊TCP Client模式下向TCP服務器發(fā)送的數(shù)據(jù)內(nèi)容。
output.payload = "hello server,i am client1"
雙擊第三排的zm602_data_out_ex節(jié)點,點擊屬性為數(shù)據(jù)流配置右邊的鉛筆圖標,創(chuàng)建一個客戶端(一個數(shù)據(jù)流通道)并配置網(wǎng)絡工作模式相關參數(shù)。
在打開的zm602_stream_ex節(jié)點屬性頁面下,配置連接類型為TCP Client,配置對端IP地址為192.168.43.1(根據(jù)用戶創(chuàng)建的TCP服務器具體配置),對端端口號也需根據(jù)用戶創(chuàng)建的TCP服務器具體配置。配置完成之后點擊wifi配置旁邊的鉛筆圖標配置通信的串口參數(shù)以及Wi-Fi工作模式。
在打開的zm602_wifi節(jié)點屬性界面中,設置通信串口的相關參數(shù);設置RST(本文硬件上連接的是絲印為SDA的GPIO引腳),ISP(本文硬件上連接的是絲印為SCL的GPIO引腳),STATE(本文硬件上連接的是絲印為MISO的GPIO引腳),DEF(本文硬件上連接的是絲印為CLK的GPIO引腳)引腳編號;設置Wi-Fi工作模式為STA模式(ZM602模組不斷的去嘗試和設置的熱點建立連接),目標wifi名和目標wifi密碼以用戶開設的移動共享熱點為準,具體配置如下圖所示。
雙擊第四排的zm602_data_in_ex節(jié)點,在打開的屬性界面中勾選事件通知,并點擊數(shù)據(jù)流配置旁邊的鉛筆圖標如下圖所示。
第四排的zm602_data_in_ex的配置節(jié)點所有的屬性參數(shù)均與第三排zm602_data_out_ex的zm602_stream和zm602_wifi兩個配置節(jié)點屬性參數(shù)一致。在此不再贅述。雙擊第四排zm602_data_in_ex的消費者節(jié)點fscript,本節(jié)點主要是打印傳輸?shù)男畔⒌取?/p>
print("receive: " + str(msg.payload, true)
2.3 下載驗證
繪制完流圖后,點擊CTRL+S?即可保存流圖,點擊下載流圖。
本項目是由手機共享移動網(wǎng)絡給ZM602模塊,配置如下圖所示。
在手機端打開網(wǎng)絡調(diào)試助手,創(chuàng)建兩個TCP服務器,配置兩個不同的服務器端口號;配置好TCP服務器相關參數(shù)后發(fā)送消息給客戶端,并點擊連接,日志顯示如下。由下圖可知ZM602模塊的TCP客戶端模式可以同時連接兩個TCP服務器進行通信。
3. UDP Server模式
配置ZM602模塊的網(wǎng)絡工作模式為UDP Server,本模式不需要設置目標地址,所以可以應用在目標地址不確定的場合,通信時需要由客戶端(目標地址)首先發(fā)送UDP數(shù)據(jù)給模組,然后模組自動記錄此客戶端的 IP 地址和端口,此后,串口接收到的數(shù)據(jù)將會轉(zhuǎn)發(fā)到此客戶端。
3.1 流圖繪制
添加timer,fscript,zm602_data_out_ex和zm602_data_in_ex到畫布中并連線如下圖。
3.2 節(jié)點配置
雙擊timer節(jié)點,配置周期性的向UDP客戶端發(fā)送數(shù)據(jù)的時間。
雙擊timer的fscript節(jié)點,設置ZM602模塊UDP Server模式下向UDP客戶端發(fā)送的數(shù)據(jù)內(nèi)容。
output.payload = "i am udp server"
雙擊zm602_data_out_ex節(jié)點,點擊屬性為數(shù)據(jù)流配置右邊的鉛筆圖標,創(chuàng)建一個數(shù)據(jù)流通道并配置網(wǎng)絡工作模式相關參數(shù)。
在打開的zm602_stream_ex節(jié)點屬性頁面下,配置連接類型為UDP Server,配置本機IP地址為172.16.1.1,本地端口號用戶可自定義配置(遵循端口號分配規(guī)則即可),本項目配置為6666。配置完成之后點擊wifi配置旁邊的鉛筆圖標配置通信的串口參數(shù)以及Wi-Fi工作模式。
在打開的zm602_wifi節(jié)點屬性界面中,設置通信串口的相關參數(shù);設置RST(本文硬件上連接的是絲印為SDA的GPIO引腳),ISP(本文硬件上連接的是絲印為SCL的GPIO引腳),STATE(本文硬件上連接的是絲印為MISO的GPIO引腳),DEF(本文硬件上連接的是絲印為CLK的GPIO引腳)引腳編號;設置Wi-Fi工作模式為AP模式(ZM602模組發(fā)出熱點供客戶端連接)具體配置如下圖所示。
雙擊zm602_data_in_ex節(jié)點,在打開的屬性界面中勾選事件通知,并點擊數(shù)據(jù)流配置旁邊的鉛筆圖標如下圖所示。
zm602_data_in_ex的配置節(jié)點所有的屬性參數(shù)均與zm602_data_out_ex的zm602_stream和zm602_wifi兩個配置節(jié)點屬性參數(shù)一致。在此不再贅述。雙擊zm602_data_in_ex的消費者節(jié)點fscript,本節(jié)點主要是打印客戶端連接的信息等。
print("client: " + msg.peer_addr + " ?port: " + str(msg.peer_port))
print("receive: " + str(msg.payload, true))
3.3 下載驗證
繪制完流圖后,點擊CTRL+S?即可保存流圖,點擊下載流圖。
在手機端打開網(wǎng)絡調(diào)試助手,創(chuàng)建一個UDP客戶端,配置客戶端連接的主機IP為zm602_stream節(jié)點的屬性本地IP地址的值172.16.1.1,端口號為zm602_stream節(jié)點的屬性本地端口的值6666;配置好UDP客戶端相關參數(shù)后發(fā)送消息給服務器,并點擊連接,日志顯示如下。由下圖可知實現(xiàn)了ZM602模塊UDP服務器模式和UDP客戶端的正常通信功能。
4. UDP Client模式
配置ZM602模塊的網(wǎng)絡工作模式為UDP Client,本項目將EPC6450-AWI開發(fā)板上采集到的ADC電壓值上傳到UDP服務器,實現(xiàn)數(shù)據(jù)采集的遠程訪問等操作。
4.1 流圖繪制
添加adc,fscript,zm602_data_out_ex和zm602_data_in_ex到畫布中并連線如下圖。
4.4.2、節(jié)點配置
雙擊adc節(jié)點,選擇需要采集的ADC通道號。
雙擊timer的fscript節(jié)點,設置ZM602模塊UDP Client模式下向UDP服務器發(fā)送的數(shù)據(jù)內(nèi)容。
output.payload = "adc channel voltage value is"+msg.payload+" mv"
雙擊zm602_data_out_ex節(jié)點,點擊屬性為數(shù)據(jù)流配置右邊的鉛筆圖標,創(chuàng)建一個數(shù)據(jù)流通道并配置網(wǎng)絡工作模式相關參數(shù)。
在打開的zm602_stream_ex節(jié)點屬性頁面下,配置連接類型為UDP Client,配置對端IP地址為192.168.43.1(根據(jù)用戶創(chuàng)建的UDP服務器具體配置),對端端口號也需根據(jù)用戶創(chuàng)建的UDP服務器具體配置。配置完成之后點擊wifi配置旁邊的鉛筆圖標配置通信的串口參數(shù)以及Wi-Fi工作模式。
在打開的zm602_wifi節(jié)點屬性界面中,設置通信串口的相關參數(shù);設置RST(本文硬件上連接的是絲印為SDA的GPIO引腳),ISP(本文硬件上連接的是絲印為SCL的GPIO引腳),STATE(本文硬件上連接的是絲印為MISO的GPIO引腳),DEF(本文硬件上連接的是絲印為CLK的GPIO引腳)引腳編號;設置Wi-Fi工作模式為STA模式(ZM602模組不斷嘗試和設置的熱點建立連接)具體配置如下圖所示。
雙擊zm602_data_in_ex節(jié)點,在打開的屬性界面中勾選事件通知,并點擊數(shù)據(jù)流配置旁邊的鉛筆圖標如下圖所示。
zm602_data_in_ex的配置節(jié)點所有的屬性參數(shù)均與zm602_data_out_ex的zm602_stream和zm602_wifi兩個配置節(jié)點屬性參數(shù)一致。在此不再贅述。雙擊zm602_data_in_ex的消費者節(jié)點fscript,本節(jié)點主要是打印傳輸?shù)男畔⒌取?/p>
print("receive: " + str(msg.payload, true))
4.3 下載驗證
繪制完流圖后,點擊CTRL+S?即可保存流圖,點擊下載流圖。
在手機端打開網(wǎng)絡調(diào)試助手,創(chuàng)建一個UDP服務器,配置服務器端口號如下圖所示;配置好UDP服務器相關參數(shù)后發(fā)送消息給客戶端,并點擊連接,日志顯示如下。由下圖可知EPC6450-AWI開發(fā)板采集到的ADC電壓值經(jīng)由ZM602模塊的UDP客戶端模式,上傳至UDP服務器實現(xiàn)了數(shù)據(jù)采集的遠程訪問。