


摘 ?要:隨著Zigbee無線傳感通信技術和WIFI通信技術的快速發展,為了實現安卓移動端無線采集光照度信息,以及控制步進電機設備功能,本文設計一種基于Android studio開發平臺,采用JAVA語言編程實現光照度信息采集,以及步進電機控制操作。系統硬件由基于CC2530芯片和ESP8266芯片組成的智能網關模塊、Zigbee終端通信模塊、光敏傳感器,以及步進電機設備組成。實驗測試結果表明:該系統運行性能穩定,操作方便,具有一定的應用前景。
關鍵詞:無線傳感網絡;Zigbee;ESP8266;Android studio;光敏傳感器
中圖分類號:TP273 ? ? 文獻標識碼:A
Abstract:With the rapid development of Zigbee wireless sensor communication technology and WIFI communication technology,in order to realize android mobile terminal wireless collection of illumination information and control stepper motor devices functions,a system is designed based on Android Studio development platform to realize the acquisition of illumination information and stepper motor control operation using JAVA programming.The system hardware is composed of intelligent gateway modules based on CC2530 chip and ESP8266 chip,Zigbee terminal communication module,photosensitive sensor and stepper motor equipment.The experimental results demonstrate that the system performance is stable and the operation is convenient with certain application prospects.
Keywords:wireless sensor network;ESP8266;Zigbee;Android Studio;photosensitive sensor
1 ? 引言(Introduction)
隨著Zigbee無線傳感網絡技術和WIFI無線通信技術在各行各業中的應用不斷擴大,人們對智能設備現場中傳感器數據采集和控制提出了更高的要求,通過常規有線通信方式實現對現場傳感器數據采集和執行機構控制,就會產生一定的弊端,同時維護成本也較高,而智能設備采用WIFI無線通信方式與移動終端進行交互,可以方便快捷地實現對現場設備的無線局域網采集控制[1]。因此,本文提出一種基于ZigBee無線傳感模塊和ESP8266WiFI通信模塊,利用JAVA語言在Android studio開發平臺上編程,實現無線局域網光照度信息采集和步進電機控制設計方案。首先構建一個ZigBee無線傳感網絡,然后可以將采集的數據通過智能網關中ESP8266的WIFI模塊傳輸至移動端App中實時顯示,另一方面可以通過移動端發送控制命令至智能網關,并最終到達ZigBee終端模塊,以完成無線控制功能。
2 ? 總體設計(The overall design)
為了提高移動終端通過WIFI通信方式對現場設備采集和控制的靈活性和可擴展性,使采集控制設備更加智能化[2],首先將帶有傳感器和執行機構的Zigbee終端模塊與智能網關中ZigBee協調器模塊組成無線傳感網絡,當Zigbee終端模塊將數據采集到之后,通過無線傳感網絡傳輸至智能網關中的ZigBee協調器模塊,然后通過ESP8266串口轉WIFI模塊可以將采集到信息通過WIFI方式無線傳輸至移動端設備上,反之,通過移動端設備APP界面發送控制指令至智能網關WIFI模塊,繼而再通過ZigBee協調器模塊,最后通過無線傳感網絡到達Zigbee終端模塊控制步進電機設備,本系統的整體架構如圖1所示。
3 ?系統的硬件設計(The hardware design of the system)
3.1 ? 智能網關硬件設計
智能網關模塊主要包括Zigbee協調器模塊和ESP8266WIFI無線通信模塊組成,其中Zigbee協調器模塊采用德州儀器公司的CC2530芯片,芯片內部已固化了ZigBee協議棧的物理層和MAC層[3],這樣CC2530芯片通過運行Zigbee協議棧建立無線傳感網絡之后,能夠構建適應超低功耗要求的系統。另外ESP8266WIFI無線通信模塊是一款超低功耗的UART轉WIFI的無線通信模塊,其硬件接口豐富,可支持STA/AP/STA+AP三種通信模式[4],本文主要使用UART轉WIFI的RX和TX引腳接入CC2530芯片的P0.3和P0.2引腳,這樣就使得Zigbee協調器和ESP8266模塊進行雙向數據傳輸通信,另外WIFI無線通信方式采用AP熱點模式,即智能網關作為WIFI服務器,移動端作為客戶端連接通過ESP8266模塊,這樣就可以實現局域網無線采集和控制現場設備,如圖2所示智能網關模塊硬件結構。
3.2 ? Zigbee終端采集控制模塊硬件設計
Zigbee終端采集控制模塊有Zigbee模塊、光敏電阻傳感模塊以及步進電機控制模塊組成。光敏電阻是用硫化隔或硒化隔等半導體材料制成的特殊電阻器,其工作原理是基于內光電效應。光照愈強,阻值就愈低,隨著光照強度的升高,電阻值迅速降低[5],這里光敏電阻傳感模塊接入Zigbee模塊的P1_2引腳,通過檢測P1_2引腳的高低電平,可以判斷當前環境是有無光照信息。
步進電機控制模塊采用24BYJ48五線四相減速步進電機+
ULN2003驅動芯片,這里以ULN2003為例用來驅動步進電機,只需要選擇Zigbee模塊的四個GPIO引腳P0.0、P0.1、P0.2和P0.3分別連接驅動板的IN1、IN2、IN3、IN4,再用外置電源連接驅動板的5V接口,并把電源和Zigbee模塊的地(GND)與驅動板的(-)共線即可[6],上述線路連接完成之后,就完成了整個步進電機的硬件電路搭建。Zigbee終端采集控制模塊硬件結構如圖3所示。
4 ? 系統的軟件設計(System software design)
4.1 ? Zigbee無線傳感層設計
無線傳感網絡系統的核心為Zigbee協調器,其上電啟動之后負責建立網絡,當Zigbee終端采集控制模塊上電啟動之后加入Zigbee協調器網絡,一旦組網成功之后,一方面可以將采集到光照度信息通過無線傳感網絡發送至智能網關中的Zigbee協調器模塊,另一方面可以通過Zigbee協調器模塊發送控制步進電機命令給Zigbee終端采集控制模塊,從而可以控制步進電機正轉或者反轉。Zigbee通信節點程序流程如圖4所示。
4.2 ? Android移動端程序設計
移動端通過Android studio開發平臺,利用JAVA語言編程實現光照度信息采集,以及步進電機控制[7]。一方面Zigbee采集終端控制模塊周期性的采集光照度信息,通過Zigbee無線傳感網絡發送至智能網關中Zigbee協調器,然后經過ESP8266WIFI模塊以WIFI方式至移動端,另一方面移動端發送控制命令給智能網關,在經過Zigbee網絡到達Zigbee采集終端控制模塊,這里可以選擇手動方式和聯動方式進行控制步進電機正轉或者反轉,如圖5所示Android移動端程序設計流程。
移動端App客戶端程序通過編程實現Socket套接字對象連接服務器端智能網關ESP8266WIFI模塊Socket套接字對象,一旦連接成功之后,開啟接收線程,實現光照度信息數據在receiveThread線程中實時接收,主要實現代碼如下:
Runnable ?Connectthread=new Runnable(){
@Override
public void run(){
NetIp=EtIp.getText().toString();
NetPort=Integer.valueOf(EtPort.getText().toString());
try {
socket=new Socket(NetIp,NetPort);//創建客戶端Socket套接字對象
isConnect=true;
receiveThread=new ReceiveThread(socket);//創建光照度接收線程
receiveThread.start();//開啟接收線程
} catch (IOException e){
e.printStackTrace();
}
}
};
這里通過自定義AutoControl函數實現聯動控制,如果檢測到當前環境有光照,ESP8266WIFI模塊向Zigbee協調器模塊自動發送“297”字符串命令,并通過Zigbee無線傳感網絡到達Zigbee終端模塊控制步進電機反轉,反之發送“2A7”字符串命令控制步進電機正轉,主要實現代碼如下:
void AutoControl(){
if (isAuto){
if (lightvalue=="有光照"){
if (!flagstep){
flagstep=true;
btnStep.setText("步進電機反轉");
printWriter.println("297");
printWriter.flush();
}
} else {
if (lightvalue=="無光照"){
if (flagstep){
btnStep.setText("步進電機正轉");
flagstep=false;
printWriter.println("2A7");
printWriter.flush();
}
}
} } }
5 ? 系統測試(System testing)
為了驗證Android移動端運行界面能夠正常采集光照度信息和控制步進電機設備,首先將帶有光敏電阻傳感器和步進電機控制設備的Zigbee終端節點與智能網關中Zigbee協調器組成一個星型無線傳感網絡[8],然后將移動端WIFI網絡連接到智能網關ESP8266WIFI模塊的AP熱點中,最后運行光照度采集控制程序,如圖6所示,在界面上通過WIFI網絡無線通信實現現場設備的光照度信息采集和無線控制步進電機設備[9]。通過驗證和測試,性能穩定,功能符合要求。
6 ? 結論(Conclusion)
文中基于Zigbee無線傳感網絡技術和ESP8266WIFI平臺,提出了一種光照度采集控制系統解決方案,設計了Zigbee協調器模塊和ESP8266WIFI無線通信模塊組成智能網關模塊,結合Zigbee節點之間通信,實現Android智能終端進行無線光照度采集控制功能。運行試驗表明:基于Zigbee無線傳感技術和ESP8266WIFI平臺的移動端光照度采集控制系統具有通信可靠、抗干擾性好等優點。
參考文獻(References)
[1] Xu Wang,Song-Ling Zhang,Guo-Xiang Song.Remote measurement of low-energy radiation based on ARM board and ZigBee wireless communication[J].Nuclear Science and Techniques,? ? ? ?2018,1:31-36.
[2] Ying Qiu,Shining Li,Zhigang Li,et al.Multi-Gradient Routing Protocol for Wireless Sensor Networks[J].China Communications,2017,3:118-129.
[3] ?Xia Li,Dongxue Zhao.Capacity Research in Cluster-Based Underwater Wireless Sensor Networks Based on Stochastic Geometry[J].China Communications,2017,6:80-87.
[4] 王浩,王偉旗.物聯網信息技術應用[M].北京:中國水利水電? ? ?出版社,2018:110-115.
[5] 何福貴.Android物聯網開發[M].北京:電子工業出版社2017:137-140.
[6] 陳志德.安卓編程指南及物聯網開發實踐[M].北京:電子工業出版社,2016:121-130.
[7] 范興隆.ESP8266在智能家居監控系統中的應用[J].單片機與嵌入式系統應用,2016,16(9):47-50.
[8] 唐遠鴻,李巖.基于WiFi環境下LED照明智能化控制系統的設計與實現[J].單片機與嵌入式系統應用,2016,16(8):20-24.
[9] 林若璽.基于ESP8266平臺的汽車蓄電池電量遠程監控系統設計[J].電腦編程技巧與維護,2016,16(24):36-39.
作者簡介:
王 ?浩(1971-),男,碩士,副教授.研究領域:物聯網工程應用研究.