摘 ?要:隨著Zigbee無線傳感通信技術(shù)和WIFI通信技術(shù)的快速發(fā)展,為了實(shí)現(xiàn)安卓移動端無線采集光照度信息,以及控制步進(jìn)電機(jī)設(shè)備功能,本文設(shè)計(jì)一種基于Android studio開發(fā)平臺,采用JAVA語言編程實(shí)現(xiàn)光照度信息采集,以及步進(jìn)電機(jī)控制操作。系統(tǒng)硬件由基于CC2530芯片和ESP8266芯片組成的智能網(wǎng)關(guān)模塊、Zigbee終端通信模塊、光敏傳感器,以及步進(jìn)電機(jī)設(shè)備組成。實(shí)驗(yàn)測試結(jié)果表明:該系統(tǒng)運(yùn)行性能穩(wěn)定,操作方便,具有一定的應(yīng)用前景。
關(guān)鍵詞:無線傳感網(wǎng)絡(luò);Zigbee;ESP8266;Android studio;光敏傳感器
中圖分類號:TP273 ? ? 文獻(xiàn)標(biāo)識碼: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無線傳感網(wǎng)絡(luò)技術(shù)和WIFI無線通信技術(shù)在各行各業(yè)中的應(yīng)用不斷擴(kuò)大,人們對智能設(shè)備現(xiàn)場中傳感器數(shù)據(jù)采集和控制提出了更高的要求,通過常規(guī)有線通信方式實(shí)現(xiàn)對現(xiàn)場傳感器數(shù)據(jù)采集和執(zhí)行機(jī)構(gòu)控制,就會產(chǎn)生一定的弊端,同時維護(hù)成本也較高,而智能設(shè)備采用WIFI無線通信方式與移動終端進(jìn)行交互,可以方便快捷地實(shí)現(xiàn)對現(xiàn)場設(shè)備的無線局域網(wǎng)采集控制[1]。因此,本文提出一種基于ZigBee無線傳感模塊和ESP8266WiFI通信模塊,利用JAVA語言在Android studio開發(fā)平臺上編程,實(shí)現(xiàn)無線局域網(wǎng)光照度信息采集和步進(jìn)電機(jī)控制設(shè)計(jì)方案。首先構(gòu)建一個ZigBee無線傳感網(wǎng)絡(luò),然后可以將采集的數(shù)據(jù)通過智能網(wǎng)關(guān)中ESP8266的WIFI模塊傳輸至移動端App中實(shí)時顯示,另一方面可以通過移動端發(fā)送控制命令至智能網(wǎng)關(guān),并最終到達(dá)ZigBee終端模塊,以完成無線控制功能。
2 ? 總體設(shè)計(jì)(The overall design)
為了提高移動終端通過WIFI通信方式對現(xiàn)場設(shè)備采集和控制的靈活性和可擴(kuò)展性,使采集控制設(shè)備更加智能化[2],首先將帶有傳感器和執(zhí)行機(jī)構(gòu)的Zigbee終端模塊與智能網(wǎng)關(guān)中ZigBee協(xié)調(diào)器模塊組成無線傳感網(wǎng)絡(luò),當(dāng)Zigbee終端模塊將數(shù)據(jù)采集到之后,通過無線傳感網(wǎng)絡(luò)傳輸至智能網(wǎng)關(guān)中的ZigBee協(xié)調(diào)器模塊,然后通過ESP8266串口轉(zhuǎn)WIFI模塊可以將采集到信息通過WIFI方式無線傳輸至移動端設(shè)備上,反之,通過移動端設(shè)備APP界面發(fā)送控制指令至智能網(wǎng)關(guān)WIFI模塊,繼而再通過ZigBee協(xié)調(diào)器模塊,最后通過無線傳感網(wǎng)絡(luò)到達(dá)Zigbee終端模塊控制步進(jìn)電機(jī)設(shè)備,本系統(tǒng)的整體架構(gòu)如圖1所示。
3 ?系統(tǒng)的硬件設(shè)計(jì)(The hardware design of the system)
3.1 ? 智能網(wǎng)關(guān)硬件設(shè)計(jì)
智能網(wǎng)關(guān)模塊主要包括Zigbee協(xié)調(diào)器模塊和ESP8266WIFI無線通信模塊組成,其中Zigbee協(xié)調(diào)器模塊采用德州儀器公司的CC2530芯片,芯片內(nèi)部已固化了ZigBee協(xié)議棧的物理層和MAC層[3],這樣CC2530芯片通過運(yùn)行Zigbee協(xié)議棧建立無線傳感網(wǎng)絡(luò)之后,能夠構(gòu)建適應(yīng)超低功耗要求的系統(tǒng)。另外ESP8266WIFI無線通信模塊是一款超低功耗的UART轉(zhuǎn)WIFI的無線通信模塊,其硬件接口豐富,可支持STA/AP/STA+AP三種通信模式[4],本文主要使用UART轉(zhuǎn)WIFI的RX和TX引腳接入CC2530芯片的P0.3和P0.2引腳,這樣就使得Zigbee協(xié)調(diào)器和ESP8266模塊進(jìn)行雙向數(shù)據(jù)傳輸通信,另外WIFI無線通信方式采用AP熱點(diǎn)模式,即智能網(wǎng)關(guān)作為WIFI服務(wù)器,移動端作為客戶端連接通過ESP8266模塊,這樣就可以實(shí)現(xiàn)局域網(wǎng)無線采集和控制現(xiàn)場設(shè)備,如圖2所示智能網(wǎng)關(guān)模塊硬件結(jié)構(gòu)。
3.2 ? Zigbee終端采集控制模塊硬件設(shè)計(jì)
Zigbee終端采集控制模塊有Zigbee模塊、光敏電阻傳感模塊以及步進(jìn)電機(jī)控制模塊組成。光敏電阻是用硫化隔或硒化隔等半導(dǎo)體材料制成的特殊電阻器,其工作原理是基于內(nèi)光電效應(yīng)。光照愈強(qiáng),阻值就愈低,隨著光照強(qiáng)度的升高,電阻值迅速降低[5],這里光敏電阻傳感模塊接入Zigbee模塊的P1_2引腳,通過檢測P1_2引腳的高低電平,可以判斷當(dāng)前環(huán)境是有無光照信息。
步進(jìn)電機(jī)控制模塊采用24BYJ48五線四相減速步進(jìn)電機(jī)+
ULN2003驅(qū)動芯片,這里以ULN2003為例用來驅(qū)動步進(jìn)電機(jī),只需要選擇Zigbee模塊的四個GPIO引腳P0.0、P0.1、P0.2和P0.3分別連接驅(qū)動板的IN1、IN2、IN3、IN4,再用外置電源連接驅(qū)動板的5V接口,并把電源和Zigbee模塊的地(GND)與驅(qū)動板的(-)共線即可[6],上述線路連接完成之后,就完成了整個步進(jìn)電機(jī)的硬件電路搭建。Zigbee終端采集控制模塊硬件結(jié)構(gòu)如圖3所示。
4 ? 系統(tǒng)的軟件設(shè)計(jì)(System software design)
4.1 ? Zigbee無線傳感層設(shè)計(jì)
無線傳感網(wǎng)絡(luò)系統(tǒng)的核心為Zigbee協(xié)調(diào)器,其上電啟動之后負(fù)責(zé)建立網(wǎng)絡(luò),當(dāng)Zigbee終端采集控制模塊上電啟動之后加入Zigbee協(xié)調(diào)器網(wǎng)絡(luò),一旦組網(wǎng)成功之后,一方面可以將采集到光照度信息通過無線傳感網(wǎng)絡(luò)發(fā)送至智能網(wǎng)關(guān)中的Zigbee協(xié)調(diào)器模塊,另一方面可以通過Zigbee協(xié)調(diào)器模塊發(fā)送控制步進(jìn)電機(jī)命令給Zigbee終端采集控制模塊,從而可以控制步進(jìn)電機(jī)正轉(zhuǎn)或者反轉(zhuǎn)。Zigbee通信節(jié)點(diǎn)程序流程如圖4所示。
4.2 ? Android移動端程序設(shè)計(jì)
移動端通過Android studio開發(fā)平臺,利用JAVA語言編程實(shí)現(xiàn)光照度信息采集,以及步進(jìn)電機(jī)控制[7]。一方面Zigbee采集終端控制模塊周期性的采集光照度信息,通過Zigbee無線傳感網(wǎng)絡(luò)發(fā)送至智能網(wǎng)關(guān)中Zigbee協(xié)調(diào)器,然后經(jīng)過ESP8266WIFI模塊以WIFI方式至移動端,另一方面移動端發(fā)送控制命令給智能網(wǎng)關(guān),在經(jīng)過Zigbee網(wǎng)絡(luò)到達(dá)Zigbee采集終端控制模塊,這里可以選擇手動方式和聯(lián)動方式進(jìn)行控制步進(jìn)電機(jī)正轉(zhuǎn)或者反轉(zhuǎn),如圖5所示Android移動端程序設(shè)計(jì)流程。
移動端App客戶端程序通過編程實(shí)現(xiàn)Socket套接字對象連接服務(wù)器端智能網(wǎng)關(guān)ESP8266WIFI模塊Socket套接字對象,一旦連接成功之后,開啟接收線程,實(shí)現(xiàn)光照度信息數(shù)據(jù)在receiveThread線程中實(shí)時接收,主要實(shí)現(xiàn)代碼如下:
Runnable ?Connectthread=new Runnable(){
@Override
public void run(){
NetIp=EtIp.getText().toString();
NetPort=Integer.valueOf(EtPort.getText().toString());
try {
socket=new Socket(NetIp,NetPort);//創(chuàng)建客戶端Socket套接字對象
isConnect=true;
receiveThread=new ReceiveThread(socket);//創(chuàng)建光照度接收線程
receiveThread.start();//開啟接收線程
} catch (IOException e){
e.printStackTrace();
}
}
};
這里通過自定義AutoControl函數(shù)實(shí)現(xiàn)聯(lián)動控制,如果檢測到當(dāng)前環(huán)境有光照,ESP8266WIFI模塊向Zigbee協(xié)調(diào)器模塊自動發(fā)送“297”字符串命令,并通過Zigbee無線傳感網(wǎng)絡(luò)到達(dá)Zigbee終端模塊控制步進(jìn)電機(jī)反轉(zhuǎn),反之發(fā)送“2A7”字符串命令控制步進(jìn)電機(jī)正轉(zhuǎn),主要實(shí)現(xiàn)代碼如下:
void AutoControl(){
if (isAuto){
if (lightvalue=="有光照"){
if (!flagstep){
flagstep=true;
btnStep.setText("步進(jìn)電機(jī)反轉(zhuǎn)");
printWriter.println("297");
printWriter.flush();
}
} else {
if (lightvalue=="無光照"){
if (flagstep){
btnStep.setText("步進(jìn)電機(jī)正轉(zhuǎn)");
flagstep=false;
printWriter.println("2A7");
printWriter.flush();
}
}
} } }
5 ? 系統(tǒng)測試(System testing)
為了驗(yàn)證Android移動端運(yùn)行界面能夠正常采集光照度信息和控制步進(jìn)電機(jī)設(shè)備,首先將帶有光敏電阻傳感器和步進(jìn)電機(jī)控制設(shè)備的Zigbee終端節(jié)點(diǎn)與智能網(wǎng)關(guān)中Zigbee協(xié)調(diào)器組成一個星型無線傳感網(wǎng)絡(luò)[8],然后將移動端WIFI網(wǎng)絡(luò)連接到智能網(wǎng)關(guān)ESP8266WIFI模塊的AP熱點(diǎn)中,最后運(yùn)行光照度采集控制程序,如圖6所示,在界面上通過WIFI網(wǎng)絡(luò)無線通信實(shí)現(xiàn)現(xiàn)場設(shè)備的光照度信息采集和無線控制步進(jìn)電機(jī)設(shè)備[9]。通過驗(yàn)證和測試,性能穩(wěn)定,功能符合要求。
6 ? 結(jié)論(Conclusion)
文中基于Zigbee無線傳感網(wǎng)絡(luò)技術(shù)和ESP8266WIFI平臺,提出了一種光照度采集控制系統(tǒng)解決方案,設(shè)計(jì)了Zigbee協(xié)調(diào)器模塊和ESP8266WIFI無線通信模塊組成智能網(wǎng)關(guān)模塊,結(jié)合Zigbee節(jié)點(diǎn)之間通信,實(shí)現(xiàn)Android智能終端進(jìn)行無線光照度采集控制功能。運(yùn)行試驗(yàn)表明:基于Zigbee無線傳感技術(shù)和ESP8266WIFI平臺的移動端光照度采集控制系統(tǒng)具有通信可靠、抗干擾性好等優(yōu)點(diǎn)。
參考文獻(xiàn)(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] 王浩,王偉旗.物聯(lián)網(wǎng)信息技術(shù)應(yīng)用[M].北京:中國水利水電? ? ?出版社,2018:110-115.
[5] 何福貴.Android物聯(lián)網(wǎng)開發(fā)[M].北京:電子工業(yè)出版社2017:137-140.
[6] 陳志德.安卓編程指南及物聯(lián)網(wǎng)開發(fā)實(shí)踐[M].北京:電子工業(yè)出版社,2016:121-130.
[7] 范興隆.ESP8266在智能家居監(jiān)控系統(tǒng)中的應(yīng)用[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2016,16(9):47-50.
[8] 唐遠(yuǎn)鴻,李巖.基于WiFi環(huán)境下LED照明智能化控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2016,16(8):20-24.
[9] 林若璽.基于ESP8266平臺的汽車蓄電池電量遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)[J].電腦編程技巧與維護(hù),2016,16(24):36-39.
作者簡介:
王 ?浩(1971-),男,碩士,副教授.研究領(lǐng)域:物聯(lián)網(wǎng)工程應(yīng)用研究.