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